summaryrefslogtreecommitdiff
path: root/gv.c
diff options
context:
space:
mode:
authorSergey Aleynikov <sergey.aleynikov@gmail.com>2018-04-19 03:44:46 +0300
committerKarl Williamson <khw@cpan.org>2018-04-19 11:30:43 -0600
commit202cd98a669eb31ef52b1f7443dbff2683933480 (patch)
tree6cc2b4695b2566562e406ee27da9b993ed62dc80 /gv.c
parentbf634d4e041c3abb5408cd1f18f1c18d298012d1 (diff)
downloadperl-202cd98a669eb31ef52b1f7443dbff2683933480.tar.gz
PATCH: [perl #133121] Fix crash in gv_fetchmeth_sv
S_gv_fetchmeth_internal supports its arguments being either an SV or a (name, len) pair. But when performing an ISA traversal to get method from a parent class, it accounted only for the latter.
Diffstat (limited to 'gv.c')
-rw-r--r--gv.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gv.c b/gv.c
index 0dcbabc9ec..085bf7425e 100644
--- a/gv.c
+++ b/gv.c
@@ -804,7 +804,9 @@ S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len,
assert(cstash);
- gvp = (GV**)hv_fetch(cstash, name, is_utf8 ? -(I32)len : (I32)len, 0);
+ gvp = (GV**)hv_common(
+ cstash, meth, name, len, is_utf8 ? HVhek_UTF8 : 0, HV_FETCH_JUST_SV, NULL, 0
+ );
if (!gvp) {
if (len > 1 && HvNAMELEN_get(cstash) == 4) {
const char *hvname = HvNAME(cstash); assert(hvname);