diff --git a/features_override.export.inc b/features_override.export.inc index 99743b4..bcfb29a 100644 --- a/features_override.export.inc +++ b/features_override.export.inc @@ -249,11 +249,17 @@ function _features_override_sanitize(&$array) { * The keys for this level. */ function _features_override_set_additions(&$default, &$normal, &$additions, $ignore_keys = array(), $level = 0, $keys = array()) { + if (is_scalar($normal)) { + return; + } + $object = is_object($normal); + foreach ($normal as $key => $value) { if (isset($ignore_keys[$key]) && ($level == $ignore_keys[$key])) { continue; } + if ($object) { if (!is_object($default) || !property_exists($default, $key) || (is_scalar($value) && ($default->$key !== $value))) { $_keys = array_merge($keys, array(array('type' => 'object', 'key' => $key))); @@ -267,7 +273,7 @@ function _features_override_set_additions(&$default, &$normal, &$additions, $ign _features_override_set_additions($default->$key, $value, $additions, $ignore_keys, $level+1, array_merge($keys, array(array('type' => 'object', 'key' => $key)))); } } - elseif (is_array($normal)) { + else { if (!is_array($default) || !array_key_exists($key, $default) || (is_scalar($value) && ($default[$key] !== $value))) { $_keys = array_merge($keys, array(array('type' => 'array', 'key' => $key))); $additions[features_override_make_key($_keys)] = array( @@ -300,6 +306,10 @@ function _features_override_set_additions(&$default, &$normal, &$additions, $ign * The keys for this level. */ function _features_override_set_deletions(&$default, &$normal, &$deletions, $ignore_keys = array(), $level = 0, $keys = array()) { + if (is_scalar($default)) { + return; + } + $object = is_object($default); foreach ($default as $key => $value) {