Change 26693 by [EMAIL PROTECTED] on 2006/01/07 01:24:37

        fix coredump on 'local $shared[N]' introduced by change #24942

Affected files ...

... //depot/perl/ext/threads/shared/shared.xs#55 edit

Differences ...

==== //depot/perl/ext/threads/shared/shared.xs#55 (text) ====
Index: perl/ext/threads/shared/shared.xs
--- perl/ext/threads/shared/shared.xs#54~26684~ 2006-01-06 13:13:12.000000000 
-0800
+++ perl/ext/threads/shared/shared.xs   2006-01-06 17:24:37.000000000 -0800
@@ -1,6 +1,6 @@
 /*    shared.xs
  *
- *    Copyright (c) 2001-2002, Larry Wall
+ *    Copyright (c) 2001-2002, 2006 Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -438,7 +438,7 @@
            }
            mg = sv_magicext(sv, Nullsv, PERL_MAGIC_shared_scalar,
                            &sharedsv_scalar_vtbl, (char *)ssv, 0);
-           mg->mg_flags |= (MGf_COPY|MGf_DUP|MGf_LOCAL);
+           mg->mg_flags |= (MGf_DUP|MGf_LOCAL);
            SvREFCNT_inc(ssv);
            if(SvOBJECT(ssv)) {
              STRLEN len;
@@ -870,15 +870,6 @@
     return 0;
 }
 
-/* free magic for PERL_MAGIC_tiedelem(p) */
-
-int
-sharedsv_elem_mg_free(pTHX_ SV *sv, MAGIC *mg)
-{
-    S_sharedsv_dec(aTHX_ S_sharedsv_from_obj(aTHX_ mg->mg_obj));
-    return 0;
-}
-
 /* Called during cloning of PERL_MAGIC_tiedelem(p) magic in new
  * thread */
 
@@ -895,7 +886,7 @@
  sharedsv_elem_mg_STORE,       /* set */
  0,                            /* len */
  sharedsv_elem_mg_DELETE,      /* clear */
- sharedsv_elem_mg_free,                /* free */
+ 0,                            /* free */
  0,                            /* copy */
  sharedsv_elem_mg_dup,         /* dup */
  0                             /* local */
@@ -962,9 +953,6 @@
     MAGIC *nmg = sv_magicext(nsv,mg->mg_obj,
                            toLOWER(mg->mg_type),&sharedsv_elem_vtbl,
                            name, namlen);
-    ENTER_LOCK;
-    SvREFCNT_inc((SV*)mg->mg_ptr);
-    LEAVE_LOCK;
     nmg->mg_flags |= MGf_DUP;
     return 1;
 }
End of Patch.

Reply via email to