This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Don't test for 16-bit inputs in inRANGE()
authorKarl Williamson <khw@cpan.org>
Fri, 11 Oct 2019 00:32:53 +0000 (18:32 -0600)
committerKarl Williamson <khw@cpan.org>
Fri, 11 Oct 2019 02:13:28 +0000 (20:13 -0600)
This macro has been expanding to overflow some assertion strings on
Windows and HP.  This commit omits handling one unlikely scenario,
namely that the input is a short, 16-bits.  And that is enough to get it
to compile on Windows.  HP isn't smoked on branches, so I don't know if
this will fix it.

More discussion may be needed, but this is all I have time for at the
moment.

handy.h

diff --git a/handy.h b/handy.h
index 180aeca..115efda 100644 (file)
--- a/handy.h
+++ b/handy.h
@@ -1278,7 +1278,6 @@ or casts
  * needed. */
 #define inRANGE(c, l, u) (__ASSERT_((u) >= (l))                                \
    (  (sizeof(c) == sizeof(U8))  ? withinCOUNT(((U8)  (c)), (l), ((u) - (l)))  \
  * needed. */
 #define inRANGE(c, l, u) (__ASSERT_((u) >= (l))                                \
    (  (sizeof(c) == sizeof(U8))  ? withinCOUNT(((U8)  (c)), (l), ((u) - (l)))  \
-    : (sizeof(c) == sizeof(U16)) ? withinCOUNT(((U16) (c)), (l), ((u) - (l)))  \
     : (sizeof(c) == sizeof(U32)) ? withinCOUNT(((U32) (c)), (l), ((u) - (l)))  \
     : (__ASSERT_(sizeof(c) == sizeof(WIDEST_UTYPE))                            \
                           withinCOUNT(((WIDEST_UTYPE) (c)), (l), ((u) - (l))))))
     : (sizeof(c) == sizeof(U32)) ? withinCOUNT(((U32) (c)), (l), ((u) - (l)))  \
     : (__ASSERT_(sizeof(c) == sizeof(WIDEST_UTYPE))                            \
                           withinCOUNT(((WIDEST_UTYPE) (c)), (l), ((u) - (l))))))