summaryrefslogtreecommitdiff
path: root/pit/src/runtime/dump.c
diff options
context:
space:
mode:
Diffstat (limited to 'pit/src/runtime/dump.c')
-rw-r--r--pit/src/runtime/dump.c7
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 {