summaryrefslogtreecommitdiff
path: root/xs_json.h
diff options
context:
space:
mode:
authorGravatar default2024-08-23 17:22:10 +0200
committerGravatar default2024-08-23 17:22:10 +0200
commit8586e44de92c827d6a19a7700121c8b21d3687b1 (patch)
treea0cc5a181a851f58a1cdea505bf1096970eb3e8d /xs_json.h
parentUpdated TODO. (diff)
downloadsnac2-8586e44de92c827d6a19a7700121c8b21d3687b1.tar.gz
snac2-8586e44de92c827d6a19a7700121c8b21d3687b1.tar.xz
snac2-8586e44de92c827d6a19a7700121c8b21d3687b1.zip
Some optimizations.
Diffstat (limited to '')
-rw-r--r--xs_json.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/xs_json.h b/xs_json.h
index a4112b0..3a91de9 100644
--- a/xs_json.h
+++ b/xs_json.h
@@ -208,6 +208,7 @@ static xs_val *_xs_json_load_lexer(FILE *f, js_type *t)
208{ 208{
209 int c; 209 int c;
210 xs_val *v = NULL; 210 xs_val *v = NULL;
211 int offset;
211 212
212 *t = JS_ERROR; 213 *t = JS_ERROR;
213 214
@@ -236,6 +237,7 @@ static xs_val *_xs_json_load_lexer(FILE *f, js_type *t)
236 *t = JS_STRING; 237 *t = JS_STRING;
237 238
238 v = xs_str_new(NULL); 239 v = xs_str_new(NULL);
240 offset = 0;
239 241
240 while ((c = fgetc(f)) != '"' && c != EOF && *t != JS_ERROR) { 242 while ((c = fgetc(f)) != '"' && c != EOF && *t != JS_ERROR) {
241 if (c == '\\') { 243 if (c == '\\') {
@@ -274,11 +276,12 @@ static xs_val *_xs_json_load_lexer(FILE *f, js_type *t)
274 break; 276 break;
275 } 277 }
276 278
277 v = xs_utf8_cat(v, cp); 279 v = xs_utf8_insert(v, cp, &offset);
278 } 280 }
279 else { 281 else {
280 char cc = c; 282 char cc = c;
281 v = xs_append_m(v, &cc, 1); 283 v = xs_insert_m(v, offset, &cc, 1);
284 offset++;
282 } 285 }
283 } 286 }
284 287