Change 12620 by sky@sky-borderline on 2001/10/24 13:18:07
Add support for finding shared arrays and hashes.
Affected files ...
... //depot/perl/sharedsv.c#11 edit
Differences ...
==== //depot/perl/sharedsv.c#11 (text) ====
Index: perl/sharedsv.c
--- perl/sharedsv.c.~1~ Wed Oct 24 07:30:06 2001
+++ perl/sharedsv.c Wed Oct 24 07:30:06 2001
@@ -89,12 +89,24 @@
shared_sv* ssv = NULL;
switch (SvTYPE(sv)) {
case SVt_PVMG:
- {MAGIC* mg = mg_find(sv, PERL_MAGIC_ext);
-
- if(strcmp(mg->mg_ptr,"threads::shared"))
- break;
- ssv = (shared_sv*) SvIV(mg->mg_obj);
- }
+ case SVt_PVAV:
+ case SVt_PVHV: {
+ MAGIC* mg = mg_find(sv, PERL_MAGIC_ext);
+ if(mg) {
+ if(strcmp(mg->mg_ptr,"threads::shared"))
+ break;
+ ssv = (shared_sv*) SvIV(mg->mg_obj);
+ break;
+ }
+
+ mg = mg_find(sv,PERL_MAGIC_tied);
+ if(mg) {
+ SV* obj = SvTIED_obj(sv,mg);
+ if(sv_derived_from(obj, "threads::shared"))
+ ssv = (shared_sv*) SvIV(SvRV(obj));
+ break;
+ }
+ }
}
return ssv;
}
End of Patch.