? 557504-4_override_unexpected_behaviour.patch
Index: feedapi_mapper.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi_mapper/Attic/feedapi_mapper.admin.inc,v
retrieving revision 1.1.2.12
diff -u -p -r1.1.2.12 feedapi_mapper.admin.inc
--- feedapi_mapper.admin.inc	29 Sep 2009 18:47:12 -0000	1.1.2.12
+++ feedapi_mapper.admin.inc	29 Sep 2009 18:52:50 -0000
@@ -222,6 +222,9 @@ function feedapi_mapper_restrict_form($f
  */
 function feedapi_mapper_restrict_form_submit($form, &$form_state) {
   $mapping = feedapi_mapper_load_mapping($form['#node']);
+  if (empty($mapping['mapping'])) {
+    $mapping['mapping'] = 'per_node_placeholder';
+  }
   feedapi_mapper_save_mapping($form['#node']->nid, $mapping);
 }
 
Index: feedapi_mapper.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi_mapper/feedapi_mapper.module,v
retrieving revision 1.2.2.27
diff -u -p -r1.2.2.27 feedapi_mapper.module
--- feedapi_mapper.module	29 Sep 2009 18:47:12 -0000	1.2.2.27
+++ feedapi_mapper.module	29 Sep 2009 18:52:50 -0000
@@ -335,7 +335,7 @@ function feedapi_mapper_get_element($pat
  * A boolean value that specifies whether the given $source should be unique.
  */
 function feedapi_mapper_add_mapping($param, $source, $target, $unique) {
-  $map = (array) array_pop(ctools_export_load_object('feedapi_mapper', 'conditions', array('param' => $param)));
+  $map = _feedapi_mapper_load_mapping($param);
   if (!empty($map)) {
     $map['mapping'][$source] = $target;
     $map['unique_elements'][$source] = $unique;
@@ -378,6 +378,9 @@ function feedapi_mapper_delete_mapping($
       $map['unique_elements'] = unserialize($map['unique_elements']);
       unset($map['mapping'][$source]);
       unset($map['unique_elements'][$source]);
+      if (empty($map['mapping']) && is_numeric($param) && _feedapi_mapper_scope($param)) {
+        $map['mapping'] = 'per_node_placeholder';
+      }
       drupal_write_record('feedapi_mapper', $map, 'param');
     }
   }
@@ -447,6 +450,9 @@ function _feedapi_mapper_load_mapping($p
   if ($mapping = ctools_export_load_object('feedapi_mapper', 'conditions', array('param' => $param))) {
     $mapping = (array) array_pop($mapping);
     if (!empty($mapping['mapping'])) {
+      if (is_string($mapping['mapping'])) {
+        $mapping['mapping'] = array();
+      }
       $mapping['unique'] = $mapping['unique_elements'];
       return $mapping;
     }
