diff options
author | David Turner <digit@android.com> | 2010-09-09 22:59:04 +0200 |
---|---|---|
committer | David 'Digit' Turner <digit@android.com> | 2010-09-13 00:30:34 -0700 |
commit | 9a5f7cee50272ec12fe23452cb2638bee8c35374 (patch) | |
tree | 1949c7dad6c2ddd2b8de01e8fe0c1429f0ef979f /json-parser.c | |
parent | 75fb4a08de4abce11ee7cf81bcddd5193eb0438d (diff) | |
download | external_qemu-9a5f7cee50272ec12fe23452cb2638bee8c35374.zip external_qemu-9a5f7cee50272ec12fe23452cb2638bee8c35374.tar.gz external_qemu-9a5f7cee50272ec12fe23452cb2638bee8c35374.tar.bz2 |
upstream: json update.
Diffstat (limited to 'json-parser.c')
-rw-r--r-- | json-parser.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/json-parser.c b/json-parser.c index f3debcb..70b9b6f 100644 --- a/json-parser.c +++ b/json-parser.c @@ -11,7 +11,7 @@ * */ -#include <stdbool.h> +#include <stdarg.h> #include "qemu-common.h" #include "qstring.h" @@ -93,7 +93,12 @@ static int token_is_escape(QObject *obj, const char *value) */ static void parse_error(JSONParserContext *ctxt, QObject *token, const char *msg, ...) { - fprintf(stderr, "parse error: %s\n", msg); + va_list ap; + va_start(ap, msg); + fprintf(stderr, "parse error: "); + vfprintf(stderr, msg, ap); + fprintf(stderr, "\n"); + va_end(ap); } /** @@ -200,6 +205,10 @@ static QString *qstring_from_escaped_str(JSONParserContext *ctxt, QObject *token qstring_append(str, "\b"); ptr++; break; + case 'f': + qstring_append(str, "\f"); + ptr++; + break; case 'n': qstring_append(str, "\n"); ptr++; @@ -264,7 +273,7 @@ static int parse_pair(JSONParserContext *ctxt, QDict *dict, QList **tokens, va_l peek = qlist_peek(working); key = parse_value(ctxt, &working, ap); - if (qobject_type(key) != QTYPE_QSTRING) { + if (!key || qobject_type(key) != QTYPE_QSTRING) { parse_error(ctxt, peek, "key is not a string in object"); goto out; } |