This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix handling of non-strict \x{}
authorHugo van der Sanden <hv@crypt.org>
Mon, 16 Feb 2015 02:42:02 +0000 (02:42 +0000)
committerHugo van der Sanden <hv@crypt.org>
Tue, 17 Feb 2015 13:57:07 +0000 (13:57 +0000)
It should be equivalent to \x{0}.

dquote_static.c
t/opbasic/qq.t

index 16227c1..f993f53 100644 (file)
@@ -267,6 +267,8 @@ S_grok_bslash_x(pTHX_ char **s, UV *uv, const char** error_msg,
             *error_msg = "Number with no digits";
             return FALSE;
         }
+        *s = e + 1;
+        *uv = 0;
         return TRUE;
     }
 
index 8dac6ec..190ddb7 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
 # This file uses a specially crafted is() function rather than that found in
 # t/test.pl or Test::More.  Hence, we place this file in directory t/opbasic.
 
-print q(1..28
+print q(1..29
 );
 
 # This is() function is written to avoid ""
@@ -73,4 +73,8 @@ is ("a\o{1000}b", "a" . chr(0x200) . "b");
 
 # This caused a memory fault
 no warnings "utf8";
-is ("abc", eval qq[qq\x{8000_0000}abc\x{8000_0000}])
+is ("abc", eval qq[qq\x{8000_0000}abc\x{8000_0000}]);
+
+# Maybe \x{} should be an error, but if not it should certainly mean \x{0}
+# rather than anything else.
+is ("\x{}", chr(0));