pp_sys.c: silence g++ compiler warning
authorDavid Mitchell <davem@iabyn.com>
Tue, 20 Oct 2015 15:29:48 +0000 (16:29 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 28 Oct 2015 12:55:28 +0000 (12:55 +0000)
The warning is harmless but annoying

pp_sys.c

index 2ad44a0..373590f 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -545,9 +545,17 @@ Perl_tied_method(pTHX_ SV *methname, SV **sp, SV *const sv,
     PUTBACK; /* sp is at *foot* of args, so this pops args from old stack */
     PUSHSTACKi(PERLSI_MAGIC);
     /* extend for object + args. If argc might wrap/truncate when cast
-     * to SSize_t, set to -1 which will trigger a panic in EXTEND() */
+     * to SSize_t and incremented, set to -1, which will trigger a panic in
+     * EXTEND().
+     * The weird way this is written is because g++ is dumb enough to
+     * warn "comparison is always false" on something like:
+     *
+     * sizeof(a) >= sizeof(b) && a >= B_t_MAX -1
+     *
+     * (where the LH condition is false)
+     */
     extend_size =
-        sizeof(argc) >= sizeof(SSize_t) && argc > SSize_t_MAX - 1
+        (argc > (sizeof(argc) >= sizeof(SSize_t) ? SSize_t_MAX - 1 : argc))
             ? -1 : (SSize_t)argc + 1;
     EXTEND(SP, extend_size);
     PUSHMARK(sp);