diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 2000-07-12 21:33:46 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 2000-07-12 21:33:46 +0000 |
commit | bb2899ba824e18be66f3ca9d67696457ff235d98 (patch) | |
tree | 89a0cca3a709b17714db1baa56507ac81cc5e2c2 /sv.c | |
parent | 6a5ada239eeaf83e6f47b65aa763561ee128221a (diff) | |
download | perl-bb2899ba824e18be66f3ca9d67696457ff235d98.tar.gz |
fix bugs in processing %v-*d and similar format specs (from
Avi Finkel <avi@finkel.org>)
p4raw-id: //depot/perl@6385
Diffstat (limited to 'sv.c')
-rw-r--r-- | sv.c | 28 |
1 files changed, 17 insertions, 11 deletions
@@ -5963,17 +5963,6 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV case 'v': vectorize = TRUE; q++; - if (args) - vecsv = va_arg(*args, SV*); - else if (svix < svmax) - vecsv = svargs[svix++]; - else { - vecstr = (U8*)""; - veclen = 0; - continue; - } - vecstr = (U8*)SvPVx(vecsv,veclen); - utf = DO_UTF8(vecsv); continue; default: @@ -6024,6 +6013,23 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV has_precis = TRUE; } + if (vectorize) { + if (args) { + vecsv = va_arg(*args, SV*); + vecstr = (U8*)SvPVx(vecsv,veclen); + utf = DO_UTF8(vecsv); + } + else if (svix < svmax) { + vecsv = svargs[svix++]; + vecstr = (U8*)SvPVx(vecsv,veclen); + utf = DO_UTF8(vecsv); + } + else { + vecstr = (U8*)""; + veclen = 0; + } + } + /* SIZE */ switch (*q) { |