Add fallback to tmpfile for use in cases where user's relying on
[p5sagit/p5-mst-13.2.git] / doop.c
diff --git a/doop.c b/doop.c
index 4f536f0..4224b0e 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -660,12 +660,9 @@ Perl_do_join(pTHX_ register SV *sv, SV *del, register SV **mark, register SV **s
     if (items-- > 0) {
        char *s;
 
-       if (*mark) {
-           s = SvPV(*mark, tmplen);
-           sv_setpvn(sv, s, tmplen);
-       }
-       else
-           sv_setpv(sv, "");
+       sv_setpv(sv, "");
+       if (*mark)
+           sv_catsv(sv, *mark);
        mark++;
     }
     else
@@ -924,7 +921,7 @@ Perl_do_chop(pTHX_ register SV *astr, register SV *sv)
        HE* entry;
         (void)hv_iterinit(hv);
         /*SUPPRESS 560*/
-        while (entry = hv_iternext(hv))
+        while ((entry = hv_iternext(hv)))
             do_chop(astr,hv_iterval(hv,entry));
         return;
     }
@@ -994,7 +991,7 @@ Perl_do_chomp(pTHX_ register SV *sv)
        HE* entry;
         (void)hv_iterinit(hv);
         /*SUPPRESS 560*/
-        while (entry = hv_iternext(hv))
+        while ((entry = hv_iternext(hv)))
             count += do_chomp(hv_iterval(hv,entry));
         return count;
     }
@@ -1098,6 +1095,9 @@ Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right)
        STRLEN dulen = 0;
        I32 ulen;
 
+       if (optype != OP_BIT_AND)
+           dc = SvGROW(sv, leftlen+rightlen+1);
+
        switch (optype) {
        case OP_BIT_AND:
            while (lulen && rulen) {
@@ -1290,7 +1290,7 @@ Perl_do_kv(pTHX)
     EXTEND(SP, HvKEYS(keys) * (dokeys + dovalues));
 
     PUTBACK;   /* hv_iternext and hv_iterval might clobber stack_sp */
-    while (entry = hv_iternext(keys)) {
+    while ((entry = hv_iternext(keys))) {
        SPAGAIN;
        if (dokeys)
            XPUSHs(hv_iterkeysv(entry));        /* won't clobber stack_sp */