diff options
Diffstat (limited to 'pit/src/runtime/dump.c')
| -rw-r--r-- | pit/src/runtime/dump.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/pit/src/runtime/dump.c b/pit/src/runtime/dump.c index 4d67bb6..5c113fa 100644 --- a/pit/src/runtime/dump.c +++ b/pit/src/runtime/dump.c @@ -1,6 +1,8 @@ #include <lcq/pit/utils.h> #include <lcq/pit/runtime/dump.h> +#include <stdio.h> + pit_dump_condition pit_dump_with_callback( pit_runtime *rt, pit_value top, bool readable, pit_dump_callback write, void *data @@ -111,7 +113,10 @@ pit_dump_condition pit_dump_with_callback( if (readable) { buf[i++] = '"'; } i64 maxlen = len - i; for (i64 j = 0; i < maxlen && j < h->in.bytes.len;) { - if (buf[i - 1] != '\\' && (h->in.bytes.data[j] == '\\' || h->in.bytes.data[j] == '"')) { + bool needs_backslash = + (i == 0 || buf[i - 1] != '\\') + && (h->in.bytes.data[j] == '\\' || h->in.bytes.data[j] == '"'); + if (needs_backslash) { buf[i++] = '\\'; } else { |
