This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
silence warnings in inline.h on Win64 VC build
authorDaniel Dragan <bulk88@hotmail.com>
Sat, 26 Mar 2016 17:44:30 +0000 (13:44 -0400)
committerTony Cook <tony@develop-help.com>
Mon, 28 Mar 2016 00:24:24 +0000 (11:24 +1100)
commit4caf7d8c4666d39b6b752a52ec5e19d9504f5f31
tree3890176aaaa15c1870f6ada9b2e1e21ba5649ddc
parent4d00a3198aa6950e874328ec431d15c821382cce
silence warnings in inline.h on Win64 VC build

c:\p523\src\inline.h(211) : warning C4267: 'function' : conversion from 'size_t'
 to 'I32', possible loss of data
c:\p523\src\inline.h(212) : warning C4267: 'function' : conversion from 'size_t'
 to 'I32', possible loss of data
c:\p523\src\inline.h(421) : warning C4244: '=' : conversion from '__int64' to 'I
32', possible loss of data
c:\p523\src\inline.h(423) : warning C4244: '=' : conversion from '__int64' to 'I
32', possible loss of data

To fix the warnings at line 211 and 212, change the func to use a signed
ptr length type. Although on x64, a 64b to 64b move instruction is 1 byte
longer than a 32b to 32b move, so this commit adds a couple more bytes of
machine code to the interp, but PVs len and cur are STRLEN, which is 64b
on 64b OS, so something bad would happen if a very large off arg was
passed to Perl_utf8_hop that was trucated to 32b, hence casting to silence
the warning isn't appropriate, instead a bigger type is needed.

S_cx_pushblock, a 8*(2^32), or 32 GB long perl stack malloc block is
unrealistic. A 32 GB mark stack is infinite recursion. Cast away the
warnings.
embed.fnc
inline.h
proto.h
utf8.c