diff --git a/field_collection.module b/field_collection.module index 87dd018..b6c63f4 100644 --- a/field_collection.module +++ b/field_collection.module @@ -2026,7 +2026,7 @@ function field_collection_feeds_set_target($source, $entity, $target, $value, $m $field = isset($entity->$target) ? $entity->$target : array(); try { - while (!empty($value[$delta])) { + while (isset($value[$delta])) { // Zero out. $field_collection_item = null; @@ -2097,6 +2097,14 @@ function field_collection_feeds_set_target($source, $entity, $target, $value, $m $delta++; } + // If new field value has less field collections than old one, remove extra collections. + if (count($value) < count($field['und'])) { + foreach ($field['und'] as $delta => $value) { + if (!isset($value['entity'])) { + unset($field['und'][$delta]); + } + } + } } catch (Exception $e) { drupal_set_message($e->getMessage(), 'error');