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.