aboutsummaryrefslogtreecommitdiff
path: root/qobject
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2018-08-23 18:40:24 +0200
committerMarkus Armbruster <armbru@redhat.com>2018-08-24 20:26:37 +0200
commit8bca4613e6cddd948895b8db3def05950463495b (patch)
treeaa40fcc6680538d990066912d52953c85204b8b0 /qobject
parent16a485992112be1c8b47b58b0124357db9037093 (diff)
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.c3
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);