diff options
author | Father Chrysostomos <sprout@cpan.org> | 2011-11-22 22:22:08 -0800 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-11-23 06:04:42 -0800 |
commit | 47a0660e68fc38d8d2ff11855d0d5fa5e2af0b82 (patch) | |
tree | 43a9f745c4034df65161286e482d1c11cb557770 | |
parent | e628fd8c63a09bb2d42cbb37ed8ce144da3bb5ee (diff) | |
download | perl-47a0660e68fc38d8d2ff11855d0d5fa5e2af0b82.tar.gz |
printf "%vd", "version" should not SEGV
See perl #102586.
-rw-r--r-- | sv.c | 2 | ||||
-rw-r--r-- | t/op/sprintf.t | 1 |
2 files changed, 2 insertions, 1 deletions
@@ -10343,7 +10343,7 @@ Perl_sv_vcatpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, * back into v-string notation and then let the * vectorize happen normally */ - if (sv_derived_from(vecsv, "version")) { + if (sv_derived_from(vecsv, "version") && SvROK(vecsv)) { char *version = savesvpv(vecsv); if ( hv_exists(MUTABLE_HV(SvRV(vecsv)), "alpha", 5 ) ) { Perl_warner(aTHX_ packWARN(WARN_INTERNAL), diff --git a/t/op/sprintf.t b/t/op/sprintf.t index 88c53a88cd..b8c8bced4c 100644 --- a/t/op/sprintf.t +++ b/t/op/sprintf.t @@ -710,3 +710,4 @@ __END__ >%v.*X< >[3, '012']< >030.031.032< >perl #83194: vector flag + dynamic precision< >%*v.3X< >[':', '012']< >030:031:032< >perl #83194: vector flag + custom separator + static precision< >%*v.*X< >[':', 3, '012']< >030:031:032< >perl #83194: vector flag + custom separator + dynamic precision< +>%vd< >"version"< >118.101.114.115.105.111.110< >perl #102586: vector flag + "version"< |