diff options
author | Nicholas Clark <nick@ccl4.org> | 2008-12-29 22:43:40 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2008-12-29 22:43:40 +0000 |
commit | fbb5a95cd7a2da48d68eadc01859bea9278f0eab (patch) | |
tree | 3d2cc8d8cd430cf65c012e9fe5c67bd224325b2b /ext/mro | |
parent | 3eb629a04d2069448368e3c6c52aab75c686b6bb (diff) | |
download | perl-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.xs | 11 |
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 |