NI-S' stab at the #17270 mystery.
Jarkko Hietaniemi [Wed, 17 Jul 2002 14:08:48 +0000 (14:08 +0000)]
p4raw-id: //depot/perl@17601

sv.c

diff --git a/sv.c b/sv.c
index bdae1a6..2c31193 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -5884,32 +5884,18 @@ screamer2:
            /* Accomodate broken VAXC compiler, which applies U8 cast to
             * both args of ?: operator, causing EOF to change into 255
             */
-           /* For some reason #17270 broke things for DJGPP and NetWare.
-            * Another hunk just below. */
-#if defined(DJGPP) || defined(NETWARE)
-           if (cnt)
-#else
            if (cnt > 0)
-#endif
-           {
-               i = (U8)buf[cnt - 1];
-           }
-           else {
+                i = (U8)buf[cnt - 1];
+           else
                 i = EOF;
-           }
        }
 
-       /* This is basically undoing #17270 for DJGPP and NetWare.
-        * Another hunk just above. */
-#if !(defined(DJGPP) || defined(NETWARE))
-       if (cnt > 0)
-#endif
-       {
-           if (append)
-               sv_catpvn(sv, (char *) buf, cnt);
-           else
-               sv_setpvn(sv, (char *) buf, cnt);
-       }
+       if (cnt < 0)
+           cnt = 0;  /* we do need to re-set the sv even when cnt <= 0 */
+       if (append)
+            sv_catpvn(sv, (char *) buf, cnt);
+       else
+            sv_setpvn(sv, (char *) buf, cnt);
 
        if (i != EOF &&                 /* joy */
            (!rslen ||