PP(pp_repeat)
{
...
IV count; <----
...
if (SvIOKp(sv)) {
if (SvUOK(sv)) {
const UV uv = SvUV_nomg(sv);
if (uv > IV_MAX)
count = IV_MAX; /* The best we can do? */ <---- WTF
else
count = uv;
} else {
const IV iv = SvIV_nomg(sv);
if (iv < 0)
count = 0;
else
count = iv;
}
}
else if (SvNOKp(sv)) {
const NV nv = SvNV_nomg(sv);
if (nv < 0.0)
count = 0;
else
count = (IV)nv;
}
else
count = SvIV_nomg(sv);
...
}
| [reply] [d/l] |
$a x= 2**31; creates an empty string,
Look again:
C:\test>perl
$a = chr(0); $a x= 2**31;
print length $a;
substr( $a, 0, 2**16 ) =~ tr[\0][\1];
substr( $a, 2**16, 2**16 ) =~ tr[\0][\1];
^Z
substr outside of string at - line 3.
2147483648
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] |
On systems with 32-bit IVs, one gets zero. I guess there are two problems, then.
| [reply] |