From 9a443bed0dd8ae5d0c53f40e90265126befbb5e0 Mon Sep 17 00:00:00 2001 From: miker Date: Sun, 14 Dec 2008 21:50:48 +0000 Subject: [PATCH] checking for a foreign context first git-svn-id: svn://svn.open-ils.org/ILS/trunk@11548 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/c-apps/oils_cstore.c | 73 +++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/Open-ILS/src/c-apps/oils_cstore.c b/Open-ILS/src/c-apps/oils_cstore.c index 063f1a40d2..3bccd6b509 100644 --- a/Open-ILS/src/c-apps/oils_cstore.c +++ b/Open-ILS/src/c-apps/oils_cstore.c @@ -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); -- 2.11.0