summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib.c b/lib.c
index f089ee90..cf800c52 100644
--- a/lib.c
+++ b/lib.c
@@ -10849,7 +10849,7 @@ static val simple_qref_args_p(val args, val pos)
}
}
-void out_str_char(wchar_t ch, val out, int *semi_flag)
+void out_str_char(wchar_t ch, val out, int *semi_flag, int regex)
{
if (*semi_flag && (iswxdigit(ch) || ch == ';'))
put_char(chr(';'), out);
@@ -10864,9 +10864,14 @@ void out_str_char(wchar_t ch, val out, int *semi_flag)
case '\v': put_string(lit("\\v"), out); break;
case '\f': put_string(lit("\\f"), out); break;
case '\r': put_string(lit("\\r"), out); break;
- case '"': put_string(lit("\\\""), out); break;
case '\\': put_string(lit("\\\\"), out); break;
case 27: put_string(lit("\\e"), out); break;
+ case '"':
+ if (regex)
+ put_char(chr(ch), out);
+ else
+ put_string(lit("\\\""), out);
+ break;
default:
{
val fmt = nil;
@@ -10891,7 +10896,7 @@ void out_str_char(wchar_t ch, val out, int *semi_flag)
static void out_str_readable(const wchar_t *ptr, val out, int *semi_flag)
{
for (; *ptr; ptr++)
- out_str_char(*ptr, out, semi_flag);
+ out_str_char(*ptr, out, semi_flag, 0);
}
static void out_lazy_str(val lstr, val out)