Change 26350 by [EMAIL PROTECTED] on 2005/12/14 12:44:20
Subject: [perl #37919] Blessed scalar refs with threads::shared
From: "Jerry D. Hedden" (via RT) <[EMAIL PROTECTED]>
Date: Tue, 13 Dec 2005 15:11:20 -0800
Message-Id: <[EMAIL PROTECTED]>
Unlike arrays and hashes, coping blessed refs to shared scalars left
the copy unblessed
Affected files ...
... //depot/perl/MANIFEST#1336 edit
... //depot/perl/ext/threads/shared/shared.xs#52 edit
Differences ...
==== //depot/perl/MANIFEST#1336 (text) ====
Index: perl/MANIFEST
--- perl/MANIFEST#1335~26341~ 2005-12-13 04:17:57.000000000 -0800
+++ perl/MANIFEST 2005-12-14 04:44:20.000000000 -0800
@@ -976,6 +976,7 @@
ext/threads/shared/t/0nothread.t Tests for basic shared array
functionality.
ext/threads/shared/t/av_refs.t Tests for arrays containing references
ext/threads/shared/t/av_simple.t Tests for basic shared array
functionality.
+ext/threads/shared/t/blessed.t Test blessed shared variables
ext/threads/shared/t/cond.t Test condition variables
ext/threads/shared/t/disabled.t Test threads::shared when threads are
disabled.
ext/threads/shared/t/hv_refs.t Test shared hashes containing references
==== //depot/perl/ext/threads/shared/shared.xs#52 (text) ====
Index: perl/ext/threads/shared/shared.xs
--- perl/ext/threads/shared/shared.xs#51~24526~ 2005-05-21 05:31:52.000000000
-0700
+++ perl/ext/threads/shared/shared.xs 2005-12-14 04:44:20.000000000 -0800
@@ -378,6 +378,13 @@
&sharedsv_scalar_vtbl, (char *)data, 0);
mg->mg_flags |= (MGf_COPY|MGf_DUP);
SvREFCNT_inc(ssv);
+ if(SvOBJECT(ssv)) {
+ STRLEN len;
+ char* stash_ptr = SvPV((SV*) SvSTASH(ssv), len);
+ HV* stash = gv_stashpvn(stash_ptr, len, TRUE);
+ SvOBJECT_on(sv);
+ SvSTASH_set(sv, (HV*)SvREFCNT_inc(stash));
+ }
}
break;
}
End of Patch.