Handle IO error in "slow gets"
Nick Ing-Simmons [Mon, 17 Jun 2002 12:41:49 +0000 (12:41 +0000)]
p4raw-id: //depot/perlio@17267

sv.c

diff --git a/sv.c b/sv.c
index f3d39ce..1c1932a 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -3194,7 +3194,7 @@ Perl_sv_copypv(pTHX_ SV *dsv, register SV *ssv)
 {
     SV *tmpsv;
 
-    if ( SvTHINKFIRST(ssv) && SvROK(ssv) && SvAMAGIC(ssv) && 
+    if ( SvTHINKFIRST(ssv) && SvROK(ssv) && SvAMAGIC(ssv) &&
         (tmpsv = AMG_CALLun(ssv,string))) {
        if (SvTYPE(tmpsv) != SVt_RV || (SvRV(tmpsv) != SvRV(ssv))) {
            SvSetSV(dsv,tmpsv);
@@ -5882,13 +5882,15 @@ screamer2:
            /* Accomodate broken VAXC compiler, which applies U8 cast to
             * both args of ?: operator, causing EOF to change into 255
             */
-           if (cnt) { i = (U8)buf[cnt - 1]; } else { i = EOF; }
+           if (cnt > 0) { i = (U8)buf[cnt - 1]; } else { i = EOF; }
        }
 
-       if (append)
-           sv_catpvn(sv, (char *) buf, cnt);
-       else
-           sv_setpvn(sv, (char *) buf, cnt);
+       if (cnt > 0) {
+           if (append)
+               sv_catpvn(sv, (char *) buf, cnt);
+           else
+               sv_setpvn(sv, (char *) buf, cnt);
+       }
 
        if (i != EOF &&                 /* joy */
            (!rslen ||