diff options
author | Markus Armbruster | 2018-08-23 18:40:24 +0200 |
---|---|---|
committer | Markus Armbruster | 2018-08-24 20:26:37 +0200 |
commit | 8bca4613e6cddd948895b8db3def05950463495b (patch) | |
tree | aa40fcc6680538d990066912d52953c85204b8b0 /qobject | |
parent | json: Improve safety of qobject_from_jsonf_nofail() & friends (diff) | |
download | qemu-8bca4613e6cddd948895b8db3def05950463495b.tar.gz qemu-8bca4613e6cddd948895b8db3def05950463495b.tar.xz qemu-8bca4613e6cddd948895b8db3def05950463495b.zip |
json: Support %% in JSON strings when interpolating
The previous commit makes JSON strings containing '%' awkward to
express in templates: you'd have to mask the '%' with an Unicode
escape \u0025. No template currently contains such JSON strings.
Support the printf conversion specification %% in JSON strings as a
convenience anyway, because it's trivially easy to do.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20180823164025.12553-58-armbru@redhat.com>
Diffstat (limited to 'qobject')
-rw-r--r-- | qobject/json-parser.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/qobject/json-parser.c b/qobject/json-parser.c index 63e9229f1c..3318b8dad0 100644 --- a/qobject/json-parser.c +++ b/qobject/json-parser.c @@ -208,10 +208,11 @@ static QString *parse_string(JSONParserContext *ctxt, JSONToken *token) } break; case '%': - if (ctxt->ap) { + if (ctxt->ap && ptr[1] != '%') { parse_error(ctxt, token, "can't interpolate into string"); goto out; } + ptr++; /* fall through */ default: cp = mod_utf8_codepoint(ptr, 6, &end); |