Rearranged a bit for clarity.
authorscottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 1 Feb 2009 19:03:30 +0000 (19:03 +0000)
committerscottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 1 Feb 2009 19:03:30 +0000 (19:03 +0000)
1. In doRetrieve: don't declare obj until we're ready to build it.

2. In doFieldmapperSearch(): reversed an "if" test to clarify what's
an early return and what's mainline logic.  Also: don't declare or
create res_list until we know we're going to return it.

git-svn-id: svn://svn.open-ils.org/ILS/trunk@12035 dcc99617-32d9-48b4-a31d-7c20da2025e4

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

index c93da14..55cf27a 100644 (file)
@@ -1508,8 +1508,6 @@ static jsonObject* doRetrieve(osrfMethodContext* ctx, int* err ) {
 
        osrfHash* meta = osrfHashGet( (osrfHash*) ctx->method->userData, "class" );
 
-       jsonObject* obj;
-
        char* id = jsonObjectToSimpleString(jsonObjectGetIndex(ctx->params, id_pos));
        jsonObject* order_hash = jsonObjectGetIndex(ctx->params, order_pos);
 
@@ -1541,7 +1539,7 @@ static jsonObject* doRetrieve(osrfMethodContext* ctx, int* err ) {
                return jsonNULL;
        }
 
-       obj = jsonObjectClone( jsonObjectGetIndex(list, 0) );
+       jsonObject* obj = jsonObjectClone( jsonObjectGetIndex(list, 0) );
 
        jsonObjectFree( list );
        jsonObjectFree( fake_params );
@@ -3173,38 +3171,11 @@ static jsonObject* doFieldmapperSearch ( osrfMethodContext* ctx, osrfHash* meta,
        }
        
        osrfLogDebug(OSRF_LOG_MARK, "%s SQL =  %s", MODULENAME, sql);
-       dbi_result result = dbi_conn_query(dbhandle, sql);
-
-       jsonObject* res_list = jsonNewObjectType(JSON_ARRAY);
-       if(result) {
-               osrfLogDebug(OSRF_LOG_MARK, "Query returned with no errors");
-               osrfHash* dedup = osrfNewHash();
-
-               if (dbi_result_first_row(result)) {
-                       /* JSONify the result */
-                       osrfLogDebug(OSRF_LOG_MARK, "Query returned at least one row");
-                       do {
-                               obj = oilsMakeFieldmapperFromResult( result, meta );
-                               char* pkey_val = oilsFMGetString( obj, pkey );
-                               if ( osrfHashGet( dedup, pkey_val ) ) {
-                                       jsonObjectFree(obj);
-                                       free(pkey_val);
-                               } else {
-                                       osrfHashSet( dedup, pkey_val, pkey_val );
-                                       jsonObjectPush(res_list, obj);
-                               }
-                       } while (dbi_result_next_row(result));
-               } else {
-                       osrfLogDebug(OSRF_LOG_MARK, "%s returned no results for query %s", MODULENAME, sql);
-               }
-
-               osrfHashFree(dedup);
-
-               /* clean up the query */
-               dbi_result_free(result); 
 
-       } else {
-               osrfLogError(OSRF_LOG_MARK, "%s: Error retrieving %s with query [%s]", MODULENAME, osrfHashGet(meta, "fieldmapper"), sql);
+       dbi_result result = dbi_conn_query(dbhandle, sql);
+       if( NULL == result ) {
+               osrfLogError(OSRF_LOG_MARK, "%s: Error retrieving %s with query [%s]",
+                       MODULENAME, osrfHashGet(meta, "fieldmapper"), sql);
                osrfAppSessionStatus(
                        ctx->session,
                        OSRF_STATUS_INTERNALSERVERERROR,
@@ -3214,11 +3185,37 @@ static jsonObject* doFieldmapperSearch ( osrfMethodContext* ctx, osrfHash* meta,
                );
                *err = -1;
                free(sql);
-               jsonObjectFree(res_list);
                return jsonNULL;
 
+       } else {
+               osrfLogDebug(OSRF_LOG_MARK, "Query returned with no errors");
+       }
+
+       jsonObject* res_list = jsonNewObjectType(JSON_ARRAY);
+       osrfHash* dedup = osrfNewHash();
+
+       if (dbi_result_first_row(result)) {
+               /* JSONify the result */
+               osrfLogDebug(OSRF_LOG_MARK, "Query returned at least one row");
+               do {
+                       obj = oilsMakeFieldmapperFromResult( result, meta );
+                       char* pkey_val = oilsFMGetString( obj, pkey );
+                       if ( osrfHashGet( dedup, pkey_val ) ) {
+                               jsonObjectFree(obj);
+                               free(pkey_val);
+                       } else {
+                               osrfHashSet( dedup, pkey_val, pkey_val );
+                               jsonObjectPush(res_list, obj);
+                       }
+               } while (dbi_result_next_row(result));
+       } else {
+               osrfLogDebug(OSRF_LOG_MARK, "%s returned no results for query %s",
+                       MODULENAME, sql );
        }
 
+       osrfHashFree(dedup);
+       /* clean up the query */
+       dbi_result_free(result);
        free(sql);
 
        if (res_list->size && order_hash) {