regcomp.c: Backlslash {} in -Dr output
authorKarl Williamson <khw@cpan.org>
Thu, 18 Feb 2016 21:44:02 +0000 (14:44 -0700)
committerKarl Williamson <khw@cpan.org>
Fri, 19 Feb 2016 18:27:10 +0000 (11:27 -0700)
This is because it could otherwise be confused with the meta notation
used there.

regcomp.c

index 6179cdb..5744fa1 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -19312,7 +19312,10 @@ S_put_code_point(pTHX_ SV *sv, UV c)
     }
     else if (isPRINT(c)) {
        const char string = (char) c;
-       if (isBACKSLASHED_PUNCT(c))
+
+        /* We use {phrase} as metanotation in the class, so also escape literal
+         * braces */
+       if (isBACKSLASHED_PUNCT(c) || c == '{' || c == '}')
            sv_catpvs(sv, "\\");
        sv_catpvn(sv, &string, 1);
     }