From 8bca4613e6cddd948895b8db3def05950463495b Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 23 Aug 2018 18:40:24 +0200 Subject: 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 Reviewed-by: Eric Blake Message-Id: <20180823164025.12553-58-armbru@redhat.com> --- qobject/json-parser.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'qobject/json-parser.c') diff --git a/qobject/json-parser.c b/qobject/json-parser.c index 63e9229..3318b8d 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); -- cgit v1.1