From 09434634006d3b686c0c98c53c491e772b376e2d Mon Sep 17 00:00:00 2001 From: scottmk Date: Sun, 1 Feb 2009 19:03:30 +0000 Subject: [PATCH] Rearranged a bit for clarity. 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 | 67 +++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/Open-ILS/src/c-apps/oils_cstore.c b/Open-ILS/src/c-apps/oils_cstore.c index c93da144af..55cf27adb7 100644 --- a/Open-ILS/src/c-apps/oils_cstore.c +++ b/Open-ILS/src/c-apps/oils_cstore.c @@ -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) { -- 2.11.0