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.

Reply via email to