|
@@ -548,6 +548,16 @@ static void qi_buffer_append_str(qi_buffer_t *buf, char *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) {
|
|
|
if (buf->used == 0 || buf->str[buf->used - 1])
|
|
|
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(buffer, '"');
|
|
|
- qi_buffer_append_str(buffer, entry.key);
|
|
|
+ qi_buffer_append_str_escaped(buffer, entry.key);
|
|
|
qi_buffer_append(buffer, '"');
|
|
|
qi_buffer_append_str(buffer, ": ");
|
|
|
|