txlyre 1 day ago
parent
commit
efc3de7593
1 changed files with 11 additions and 1 deletions
  1. 11 1
      qirt.c

+ 11 - 1
qirt.c

@@ -548,6 +548,16 @@ static void qi_buffer_append_str(qi_buffer_t *buf, char *s) {
     qi_buffer_append(buf, *s++);
     qi_buffer_append(buf, *s++);
 }
 }
 
 
+static void qi_buffer_append_str_escaped(qi_buffer_t *buf, char *s) {
+  while (*s) {
+    char c = *s++;
+    if (c == '"' || c == '\\')
+      qi_buffer_append(buf, '\\');
+
+    qi_buffer_append(buf, c);
+  }
+}
+
 static char *qi_buffer_read(qi_buffer_t *buf) {
 static char *qi_buffer_read(qi_buffer_t *buf) {
   if (buf->used == 0 || buf->str[buf->used - 1])
   if (buf->used == 0 || buf->str[buf->used - 1])
     qi_buffer_append(buf, 0);
     qi_buffer_append(buf, 0);
@@ -1225,7 +1235,7 @@ char *_qi_repr(qi_state_t *state, qi_list_t *tempstack, qi_value_t *value,
           qi_buffer_append_str(buffer, ", ");
           qi_buffer_append_str(buffer, ", ");
 
 
         qi_buffer_append(buffer, '"');
         qi_buffer_append(buffer, '"');
-        qi_buffer_append_str(buffer, entry.key);
+        qi_buffer_append_str_escaped(buffer, entry.key);
         qi_buffer_append(buffer, '"');
         qi_buffer_append(buffer, '"');
         qi_buffer_append_str(buffer, ": ");
         qi_buffer_append_str(buffer, ": ");