Change 12623 by sky@sky-borderline on 2001/10/24 18:06:34

        We need to do sharedsv_find in the original perl context.

Affected files ...

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

Differences ...

==== //depot/perl/ext/threads/shared/shared.xs#4 (text) ====
Index: perl/ext/threads/shared/shared.xs
--- perl/ext/threads/shared/shared.xs.~1~       Wed Oct 24 12:15:05 2001
+++ perl/ext/threads/shared/shared.xs   Wed Oct 24 12:15:05 2001
@@ -43,7 +43,6 @@
     SHAREDSvLOCK(shared);
     if(SvROK(SHAREDSvGET(shared)))
         Perl_sharedsv_thrcnt_dec(aTHX_ (shared_sv*) SvIV(SvRV(SHAREDSvGET(shared))));
-    SHAREDSvEDIT(shared);
     if(SvROK(sv)) {
         shared_sv* target = Perl_sharedsv_find(aTHX_ SvRV(sv));
         if(!target) {
@@ -52,10 +51,12 @@
             SHAREDSvUNLOCK(shared);            
             Perl_croak(aTHX_ "You cannot assign a non shared reference to a shared 
scalar");
         }
+        SHAREDSvEDIT(shared);
         Perl_sv_free(PL_sharedsv_space,SHAREDSvGET(shared));
         SHAREDSvGET(shared) = newRV_noinc(newSViv((IV)target));
     } else {
-        sv_setsv(SHAREDSvGET(shared), sv);
+            SHAREDSvEDIT(shared);
+       sv_setsv(SHAREDSvGET(shared), sv);
     }
     shared->index++;
     mg->mg_private = shared->index;
End of Patch.

Reply via email to