pp_multiconcat(): fix win32 compiler warning
authorDavid Mitchell <davem@iabyn.com>
Tue, 2 Jan 2018 13:55:29 +0000 (13:55 +0000)
committerDavid Mitchell <davem@iabyn.com>
Tue, 2 Jan 2018 13:55:29 +0000 (13:55 +0000)
pp_hot.c(930) : warning C4146: unary minus operator applied to unsigned type,
result still unsigned

Negating an unsigned STRLEN (aka Size_t) string length in this case will
never encounter a situation where the value is too big to be negated,
because at that point we have both the string and a grown buffer of at
least equal size in memory simultaneously, so targ_len < Size_t_MAX/2.

So just cast away the warning.

pp_hot.c

index 21b1f16..8a74f58 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -927,7 +927,7 @@ PP(pp_multiconcat)
                 targ_pv += offset;
                 Move(dsv_pv, targ_pv, targ_len, char);
                 /* a negative length implies don't Copy(), but do increment */
-                svpv_p->len = -targ_len;
+                svpv_p->len = -((SSize_t)targ_len);
                 slow_concat = TRUE;
             }
             else {