ad1ac33c20a213b386adbc58e69bad6b75fb08c0 larrym Thu Apr 26 11:42:05 2012 -0700 cleanup per review items from tim diff --git src/hg/lib/jsHelper.c src/hg/lib/jsHelper.c index a478a9c..14e87af 100644 --- src/hg/lib/jsHelper.c +++ src/hg/lib/jsHelper.c @@ -867,65 +867,69 @@ return (struct jsonElement *) newJsonList(list); } static struct jsonElement *jsonParseString(char *str, int *posPtr) { return (struct jsonElement *) newJsonString(getString(str, posPtr)); } static struct jsonElement *jsonParseBoolean(char *str, int *posPtr) { struct jsonBooleanElement *ele = NULL; int i; for(i = 0; str[*posPtr + i] && isalpha(str[*posPtr + i]); i++); ; char *val = cloneStringZ(str + *posPtr, i); -if(sameWord(val, "true")) +if(sameString(val, "true")) ele = newJsonBoolean(TRUE); -else if(sameWord(val, "false")) +else if(sameString(val, "false")) ele = newJsonBoolean(FALSE); else errAbort("Invalid boolean value '%s'; pos: %d", val, *posPtr); *posPtr += i; +freez(&val); return (struct jsonElement *) ele; } static struct jsonElement *jsonParseNumber(char *str, int *posPtr) { int i; boolean integral = TRUE; +struct jsonElement *retVal = NULL; + for(i = 0;; i++) { char c = str[*posPtr + i]; if(c == 'e' || c == 'E' || c == '.') integral = FALSE; else if(!c || (!isdigit(c) && c != '-')) break; } char *val = cloneStringZ(str + *posPtr, i); *posPtr += i; if(integral) - return (struct jsonElement *) newJsonNumber(sqlLongLong(val)); + retVal = (struct jsonElement *) newJsonNumber(sqlLongLong(val)); else { double d; if(sscanf(val, "%lf", &d)) - return (struct jsonElement *) newJsonDouble(d); + retVal = (struct jsonElement *) newJsonDouble(d); else - errAbort("Invalid JSON Double: %s; pos: %d", val, *posPtr + i); + errAbort("Invalid JSON Double: %s", val); } -return NULL; +freez(&val); +return retVal; } static struct jsonElement *jsonParseExpression(char *str, int *posPtr) { skipLeadingSpacesWithPos(str, posPtr); char c = str[*posPtr]; if(c == '{') return jsonParseObject(str, posPtr); else if (c == '[') return jsonParseList(str, posPtr); else if (c == '"') return jsonParseString(str, posPtr); else if (isdigit(c) || c == '-') return jsonParseNumber(str, posPtr); else