Re: Jarkko likes OOOOs
[p5sagit/p5-mst-13.2.git] / op.c
diff --git a/op.c b/op.c
index d00abec..82c9b02 100644 (file)
--- a/op.c
+++ b/op.c
@@ -45,8 +45,8 @@ S_Slab_Alloc(pTHX_ int m, size_t sz)
      */
     sz = (sz + 2*sizeof(I32 *) -1)/sizeof(I32 *);
     if ((PL_OpSpace -= sz) < 0) {
-       PL_OpPtr = (I32 **) PerlMemShared_malloc(PERL_SLAB_SIZE*sizeof(I32*));
-       if (!PL_OpPtr) {
+        PL_OpPtr = (I32 **) PerlMemShared_malloc(PERL_SLAB_SIZE*sizeof(I32*)); 
+       if (!PL_OpPtr) {
            return NULL;
        }
        Zero(PL_OpPtr,PERL_SLAB_SIZE,I32 **);
@@ -82,7 +82,11 @@ S_Slab_Free(pTHX_ void *op)
     assert( ptr < ( (I32 **) slab + PERL_SLAB_SIZE) );
     assert( *slab > 0 );
     if (--(*slab) == 0) {
-       PerlMemShared_free(slab);
+     #ifdef NETWARE
+      #define PerlMemShared PerlMem
+     #endif
+       
+    PerlMemShared_free(slab);
        if (slab == PL_OpSlab) {
            PL_OpSpace = 0;
        }
@@ -5967,7 +5971,8 @@ Perl_ck_fun(pTHX_ OP *o)
                        OP *newop = newGVOP(OP_GV, 0,
                            gv_fetchpv(SvPVx(((SVOP*)kid)->op_sv, n_a), TRUE,
                                        SVt_PVIO) );
-                       if (kid == cLISTOPo->op_last)
+                       if (!(o->op_private & 1) && /* if not unop */
+                           kid == cLISTOPo->op_last)
                            cLISTOPo->op_last = newop;
                        op_free(kid);
                        kid = newop;