aboutsummaryrefslogtreecommitdiff
path: root/json.c
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2025-02-10 22:07:19 +0100
committerMartin Kagamino Lehoux <martin@lehoux.net>2025-02-10 22:07:19 +0100
commit803deb4a70180f987fdeb99d617631cf9a092b4d (patch)
treef20afd4d925c28cd2226237d383c773a3cd38c0b /json.c
parent8a9e6b1bd3be1041792311a86d8aac68b659e891 (diff)
fix(string): Valid string copy
Diffstat (limited to 'json.c')
-rw-r--r--json.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/json.c b/json.c
index e68d617..4a49bbf 100644
--- a/json.c
+++ b/json.c
@@ -72,7 +72,7 @@ typedef struct {
} parse_string_result;
parse_string_result parse_string(Arena *a, Str src, uintptr_t pos) {
- printf("json.parse_string: %s", src.data + pos);
+ printf("json.parse_string: %s\n", src.data + pos);
assert(src.data[pos] == '"');
int i = 1;
@@ -81,18 +81,15 @@ parse_string_result parse_string(Arena *a, Str src, uintptr_t pos) {
assert(i + pos <= src.len);
}
assert(src.data[pos + i]);
- char *s;
- memcpy(s, src.data + pos + 1, i - 1);
+ Str s = Str_copy(a, &src.data[pos + 1], i - 1);
- printf("%s", s);
-
- return (parse_string_result){Str_copy(a, src.data + pos + 1, i - 1), pos + i};
+ return (parse_string_result){s, pos + i};
}
JSON JSON_parse(Arena *a, Str src) {
JSON json = {0};
int pos = 0;
- // printf("json.parse: src=%s", src.data);
+ printf("json.parse: src=%s\n", src.data);
if (isdigit(src.data[pos])) {
parse_integer_result result = parse_integer(a, src, 0);
json.integer = &result.value;