summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kon/konjson.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/kon/konjson.h b/kon/konjson.h
index 1e95990..126736d 100644
--- a/kon/konjson.h
+++ b/kon/konjson.h
@@ -166,13 +166,16 @@ static int kon__jsonUtf8(char *out, unsigned cp)
static char *kon__jsonString(kon_jsonParser_t *ps)
{
- const char *start;
+ const char *start, *scan;
char *out;
size_t n = 0;
ps->p++;
start = ps->p;
- out = malloc((size_t)(ps->end - start) + 1);
+ for (scan = start; scan < ps->end && *scan != '"'; scan++) {
+ if (*scan == '\\' && scan + 1 < ps->end) scan++;
+ }
+ out = malloc((size_t)(scan - start) + 1);
if (!out) {
kon__jsonFail(ps, "out of memory");
return NULL;