This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
utf8.c: Add comments
authorKarl Williamson <khw@cpan.org>
Tue, 17 Jul 2018 19:32:01 +0000 (13:32 -0600)
committerKarl Williamson <khw@cpan.org>
Tue, 17 Jul 2018 19:54:40 +0000 (13:54 -0600)
Explain why we don't have to check the return code from
_invlist_search() here.  See [perl #133365]

utf8.c

diff --git a/utf8.c b/utf8.c
index 345d810..dec8aa1 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -3490,6 +3490,9 @@ S__to_utf8_case(pTHX_ const UV uv1, const U8 *p,
         unsigned int i;
         const unsigned int * cp_list;
         U8 * d;
+
+        /* 'index' is guaranteed to be non-negative, as this is an inversion
+         * map that covers all possible inputs.  See [perl #133365] */
         SSize_t index = _invlist_search(invlist, uv1);
         IV base = invmap[index];
 
@@ -3565,6 +3568,8 @@ Perl__inverse_folds(pTHX_ const UV cp, unsigned int * first_folds_to,
      * the return can point to them, but single code points aren't, so would
      * need to be constructed if we didn't employ something like this API */
 
+    /* 'index' is guaranteed to be non-negative, as this is an inversion map
+     * that covers all possible inputs.  See [perl #133365] */
     SSize_t index = _invlist_search(PL_utf8_foldclosures, cp);
     int base = _Perl_IVCF_invmap[index];