checking for a foreign context first
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 14 Dec 2008 21:50:48 +0000 (21:50 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 14 Dec 2008 21:50:48 +0000 (21:50 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@11548 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/c-apps/oils_cstore.c

index 063f1a4..3bccd6b 100644 (file)
@@ -891,48 +891,53 @@ static int verifyObjectPCRUD (  osrfMethodContext* ctx, const jsonObject* obj )
             }
         }
 
-        if (foreign_context->size > 0) {
-               osrfStringArray* class_list = osrfHashKeys( foreign_context );
+        osrfStringArray* class_list;
 
-            int i = 0;
-            char* class_name = NULL;
-               while ( (class_name = osrfStringArrayGetString(class_list, i++)) ) {
-                osrfHash* fcontext = osrfHashGet(foreign_context, class_name);
-
-                jsonObject* _tmp_params = jsonParseStringFmt(
-                    "{\"%s\":\"%s\"}",
-                    osrfHashGet(fcontext, "field"),
-                    oilsFMGetString(param, osrfHashGet(fcontext, "fkey"))
-                );
+        if (foreign_context) {
+            class_list = osrfHashKeys( foreign_context );
 
-                       jsonObject* _list = doFieldmapperSearch(
-                    ctx,
-                    class,
-                    _tmp_params,
-                    &err
-                );
-        
-   
-                jsonObject* _fparam = jsonObjectGetIndex(_list, 0);
+            if (class_list->size > 0) {
+    
+                int i = 0;
+                char* class_name = NULL;
+               while ( (class_name = osrfStringArrayGetString(class_list, i++)) ) {
+                    osrfHash* fcontext = osrfHashGet(foreign_context, class_name);
+    
+                    jsonObject* _tmp_params = jsonParseStringFmt(
+                        "{\"%s\":\"%s\"}",
+                        osrfHashGet(fcontext, "field"),
+                        oilsFMGetString(param, osrfHashGet(fcontext, "fkey"))
+                    );
+    
+                       jsonObject* _list = doFieldmapperSearch(
+                        ctx,
+                        class,
+                        _tmp_params,
+                        &err
+                    );
+            
+       
+                    jsonObject* _fparam = jsonObjectGetIndex(_list, 0);
+            
+                    if (!_fparam) {
+                        jsonObjectFree(_tmp_params);
+                        jsonObjectFree(_list);
+                        return 0;
+                    }
         
-                if (!_fparam) {
                     jsonObjectFree(_tmp_params);
                     jsonObjectFree(_list);
-                    return 0;
-                }
     
-                jsonObjectFree(_tmp_params);
-                jsonObjectFree(_list);
-
-                char* foreign_field = NULL;
-                while ( (foreign_field = osrfStringArrayGetString(osrfHashGet(fcontext,"context"), i++)) ) {
-                    osrfStringArrayAdd( context_org_array, oilsFMGetString( _fparam, foreign_field ) );
+                    char* foreign_field = NULL;
+                    while ( (foreign_field = osrfStringArrayGetString(osrfHashGet(fcontext,"context"), i++)) ) {
+                        osrfStringArrayAdd( context_org_array, oilsFMGetString( _fparam, foreign_field ) );
+                    }
+       
+                    jsonObjectFree(_fparam);
                 }
-   
-                jsonObjectFree(_fparam);
+    
+                osrfStringArrayFree(class_list);
             }
-
-            osrfStringArrayFree(class_list);
         }
 
         jsonObjectFree(param);