summaryrefslogtreecommitdiff
path: root/ext/mro
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2008-12-29 22:43:40 +0000
committerNicholas Clark <nick@ccl4.org>2008-12-29 22:43:40 +0000
commitfbb5a95cd7a2da48d68eadc01859bea9278f0eab (patch)
tree3d2cc8d8cd430cf65c012e9fe5c67bd224325b2b /ext/mro
parent3eb629a04d2069448368e3c6c52aab75c686b6bb (diff)
downloadperl-fbb5a95cd7a2da48d68eadc01859bea9278f0eab.tar.gz
In mro_get_mro, use the length and UTF-8-ness now contained in struct mro_alg
when generating an SV containing the name.
Diffstat (limited to 'ext/mro')
-rw-r--r--ext/mro/mro.xs11
1 files changed, 8 insertions, 3 deletions
diff --git a/ext/mro/mro.xs b/ext/mro/mro.xs
index c9c9779409..09ad83bdd3 100644
--- a/ext/mro/mro.xs
+++ b/ext/mro/mro.xs
@@ -312,9 +312,14 @@ mro_get_mro(...)
classname = ST(0);
class_stash = gv_stashsv(classname, 0);
- ST(0) = sv_2mortal(newSVpv(class_stash
- ? HvMROMETA(class_stash)->mro_which->name
- : "dfs", 0));
+ if (class_stash) {
+ const struct mro_alg *const meta = HvMROMETA(class_stash)->mro_which;
+ ST(0) = newSVpvn_flags(meta->name, meta->length,
+ SVs_TEMP
+ | ((meta->kflags & HVhek_UTF8) ? SVf_UTF8 : 0));
+ } else {
+ ST(0) = newSVpvn_flags("dfs", 3, SVs_TEMP);
+ }
XSRETURN(1);
void