diff options
author | default <nobody@localhost> | 2024-08-23 17:22:10 +0200 |
---|---|---|
committer | default <nobody@localhost> | 2024-08-23 17:22:10 +0200 |
commit | 8586e44de92c827d6a19a7700121c8b21d3687b1 (patch) | |
tree | a0cc5a181a851f58a1cdea505bf1096970eb3e8d /xs_json.h | |
parent | d2daba7b9cf6282f0929f88a9d8a8467dab4e886 (diff) |
Some optimizations.
Diffstat (limited to 'xs_json.h')
-rw-r--r-- | xs_json.h | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -208,6 +208,7 @@ static xs_val *_xs_json_load_lexer(FILE *f, js_type *t) { int c; xs_val *v = NULL; + int offset; *t = JS_ERROR; @@ -236,6 +237,7 @@ static xs_val *_xs_json_load_lexer(FILE *f, js_type *t) *t = JS_STRING; v = xs_str_new(NULL); + offset = 0; while ((c = fgetc(f)) != '"' && c != EOF && *t != JS_ERROR) { if (c == '\\') { @@ -274,11 +276,12 @@ static xs_val *_xs_json_load_lexer(FILE *f, js_type *t) break; } - v = xs_utf8_cat(v, cp); + v = xs_utf8_insert(v, cp, &offset); } else { char cc = c; - v = xs_append_m(v, &cc, 1); + v = xs_insert_m(v, offset, &cc, 1); + offset++; } } |