summaryrefslogtreecommitdiff
path: root/ext/B
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2017-11-13 11:50:14 +0000
committerDavid Mitchell <davem@iabyn.com>2017-11-13 12:23:24 +0000
commitca84e88ece180337b1ea0b8a2b9d4211b1089878 (patch)
tree33357866fab2b784f00f423ff3ad0000c484108d /ext/B
parentb5bf9f73a7cc9feabf29609f45df824fed127956 (diff)
downloadperl-ca84e88ece180337b1ea0b8a2b9d4211b1089878.tar.gz
change OP_MULTICONCAT nargs from UV to SSize_t
Change it from unsigned to unsigned since it makes the SP-adjusting code in pp_multiconcat easier without hitting undefined behaviour (RT #132390); and change its size from UV to SSize_t since it represents the number of args on the stack.
Diffstat (limited to 'ext/B')
-rw-r--r--ext/B/B.xs6
1 files changed, 3 insertions, 3 deletions
diff --git a/ext/B/B.xs b/ext/B/B.xs
index 119098524d..a22b02ffed 100644
--- a/ext/B/B.xs
+++ b/ext/B/B.xs
@@ -1244,7 +1244,7 @@ aux_list(o, cv)
case OP_MULTICONCAT:
{
- UV nargs = aux[0].uv;
+ SSize_t nargs;
char *p;
STRLEN len;
U32 utf8 = 0;
@@ -1255,9 +1255,9 @@ aux_list(o, cv)
/* if this changes, this block of code probably needs fixing */
assert(PERL_MULTICONCAT_HEADER_SIZE == 5);
- nargs = aux[PERL_MULTICONCAT_IX_NARGS].uv;
+ nargs = aux[PERL_MULTICONCAT_IX_NARGS].ssize;
EXTEND(SP, ((SSize_t)(2 + (nargs+1))));
- PUSHs(sv_2mortal(newSViv(nargs)));
+ PUSHs(sv_2mortal(newSViv((IV)nargs)));
p = aux[PERL_MULTICONCAT_IX_PLAIN_PV].pv;
len = aux[PERL_MULTICONCAT_IX_PLAIN_LEN].ssize;