This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix utf8_to_uvchr_buf to match docs
authorKarl Williamson <khw@cpan.org>
Mon, 19 Aug 2019 20:43:30 +0000 (14:43 -0600)
committerKarl Williamson <khw@cpan.org>
Tue, 20 Aug 2019 04:08:39 +0000 (22:08 -0600)
It did so already except when passed a zero length input on
non-debugging builds.  This caused test failures in Devel::PPPort, and
commit 4a5ab54a18679ab24ca03190884d326c2ca85288 was used to customize
that module in blead to get the tests to pass.

This commit avoids the possibility of having to bump the version again,
which is what that commit did.

inline.h

index 7d81da6..67fbf85 100644 (file)
--- a/inline.h
+++ b/inline.h
@@ -1850,8 +1850,12 @@ S__utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
     assert(s < send);
 
     if (! ckWARN_d(WARN_UTF8)) {
+
+        /* EMPTY is not really allowed, and asserts on debugging builds.  But
+         * on non-debugging we have to deal with it, and this causes it to
+         * return the REPLACEMENT CHARACTER, as the documentation indicates */
         return utf8n_to_uvchr(s, send - s, retlen,
-                              (UTF8_ALLOW_ANY & ~UTF8_ALLOW_EMPTY));
+                              (UTF8_ALLOW_ANY UTF8_ALLOW_EMPTY));
     }
     else {
         UV ret = utf8n_to_uvchr(s, send - s, retlen, 0);