From: scottmk Date: Wed, 18 Feb 2009 07:51:39 +0000 (+0000) Subject: searchJOIN() was segfaulting when the FROM clause was of X-Git-Tag: sprint4-merge-nov22~10774 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=a1e6747633140d98610a0782ce09d25f52997dce;p=working%2FEvergreen.git searchJOIN() was segfaulting when the FROM clause was of the form "from": { "xxx":"yyy" }. Reason: we were freeing freeable_hash prematurely. Fixed. git-svn-id: svn://svn.open-ils.org/ILS/trunk@12217 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/c-apps/oils_cstore.c b/Open-ILS/src/c-apps/oils_cstore.c index 9b85bd406b..cc1780870c 100644 --- a/Open-ILS/src/c-apps/oils_cstore.c +++ b/Open-ILS/src/c-apps/oils_cstore.c @@ -2028,8 +2028,6 @@ static char* searchJOIN ( const jsonObject* join_hash, osrfHash* leftmeta ) { jsonObject* snode = NULL; jsonIterator* search_itr = jsonNewIterator( working_hash ); - if(freeable_hash) - jsonObjectFree(freeable_hash); while ( (snode = jsonIteratorNext( search_itr )) ) { osrfHash* idlClass = osrfHashGet( oilsIDL(), search_itr->key ); @@ -2051,6 +2049,8 @@ static char* searchJOIN ( const jsonObject* join_hash, osrfHash* leftmeta ) { leftclass ); buffer_free(join_buf); + if(freeable_hash) + jsonObjectFree(freeable_hash); free(field); jsonIteratorFree(search_itr); return NULL; @@ -2069,6 +2069,8 @@ static char* searchJOIN ( const jsonObject* join_hash, osrfHash* leftmeta ) { class ); buffer_free(join_buf); + if(freeable_hash) + jsonObjectFree(freeable_hash); free(fkey); jsonIteratorFree(search_itr); return NULL; @@ -2115,6 +2117,8 @@ static char* searchJOIN ( const jsonObject* join_hash, osrfHash* leftmeta ) { class ); buffer_free(join_buf); + if(freeable_hash) + jsonObjectFree(freeable_hash); jsonIteratorFree(search_itr); return NULL; } @@ -2176,7 +2180,9 @@ static char* searchJOIN ( const jsonObject* join_hash, osrfHash* leftmeta ) { free(field); } - jsonIteratorFree(search_itr); + if(freeable_hash) + jsonObjectFree(freeable_hash); + jsonIteratorFree(search_itr); return buffer_release(join_buf); }