Patch from Scott McKellar:
authormiker <miker@9efc2488-bf62-4759-914b-345cdb29e865>
Mon, 10 Mar 2008 02:21:03 +0000 (02:21 +0000)
committermiker <miker@9efc2488-bf62-4759-914b-345cdb29e865>
Mon, 10 Mar 2008 02:21:03 +0000 (02:21 +0000)
In _jsonInsertParserItem() I changed a switch/case to an if/else,
eliminating a supposedly unreachable default branch that, if reached,
would leak memory.

With this change, a jsonObject that is neither a JSON_HASH nor a
JSON_ARRAY will be silently converted to a JSON_ARRAY by the call to
jsonObjectPush().

git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@1268 9efc2488-bf62-4759-914b-345cdb29e865

src/libopensrf/osrf_json_parser.c

index 8cb84af..fb6e61d 100644 (file)
@@ -678,11 +678,10 @@ void _jsonInsertParserItem( jsonInternalParser* p, jsonObject* newo ) {
        } else {
 
                /* insert the new object into the current container object */
        } else {
 
                /* insert the new object into the current container object */
-               switch(p->current->type) { 
-                       case JSON_HASH  : jsonObjectSetKey(p->current, p->lastkey, newo);  break;
-                       case JSON_ARRAY: jsonObjectPush(p->current, newo); break;
-                       default: fprintf(stderr, "%s:%d -> how?\n", JSON_LOG_MARK); 
-               } 
+               if(p->current->type == JSON_HASH)
+                       jsonObjectSetKey(p->current, p->lastkey, newo);
+               else  // assume it's a JSON_ARRAY; if it isn't, it'll become one
+                       jsonObjectPush(p->current, newo);
 
                /* if the new object is a container object, make it our current container */
                if( newo->type == JSON_ARRAY || newo->type == JSON_HASH )
 
                /* if the new object is a container object, make it our current container */
                if( newo->type == JSON_ARRAY || newo->type == JSON_HASH )