From 0cb57f957f6ea07a8e33173d39716716db455d30 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 4 Apr 2018 23:00:49 -0700 Subject: regex: read/print bug: escaped double quote. Because the regex printer wrongly uses out_str_char (for the sake of borrowing its semicolon-notation processing) when a regex prints, all characters that require escaping in a string literal get escaped, which includes the " character. Unfortunately the \" sequence which results is rejected by the regex parser. * lib.c (out_str_char): Kludge: add extra argument to distinguish regex use versus string use, and treat the double quote accordingly. (out_str_readable): Give 0 arg to new param of out_str_char. * lib.h (out_str_char): Declaration updated. * regex.c (print_class_char, print_rec): Pass 1 to new param of out_str_char. --- lib.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib.h') diff --git a/lib.h b/lib.h index 6fe29fe2..b473b4dd 100644 --- a/lib.h +++ b/lib.h @@ -1069,7 +1069,7 @@ val to(val range); val set_from(val range, val from); val set_to(val range, val to); val env(void); -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); val obj_print_impl(val obj, val out, val pretty, struct strm_ctx *); val obj_print(val obj, val stream, val pretty); val print(val obj, val stream, val pretty); -- cgit v1.2.3