In perl.git, the branch blead has been updated


- Log -----------------------------------------------------------------
commit 4caf7d8c4666d39b6b752a52ec5e19d9504f5f31
Author: Daniel Dragan <bulk88@hotmail.com>
Date: Sat Mar 26 13:44:30 2016 -0400

     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

Summary of changes:
  embed.fnc | 2 +-
  inline.h | 4 ++--
  proto.h | 2 +-
  utf8.c | 2 +-
  4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/embed.fnc b/embed.fnc
index d114b2b..ec5921a 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -1642,7 +1642,7 @@ Ap |U8* |utf16_to_utf8 |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
  Ap |U8* |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
  AdpPR |STRLEN |utf8_length |NN const U8* s|NN const U8 *e
  ApdPR |IV |utf8_distance |NN const U8 *a|NN const U8 *b
-ApdPRn |U8* |utf8_hop |NN const U8 *s|I32 off
+ApdPRn |U8* |utf8_hop |NN const U8 *s|SSize_t off
  ApMd |U8* |utf8_to_bytes |NN U8 *s|NN STRLEN *len
  Apd |int |bytes_cmp_utf8 |NN const U8 *b|STRLEN blen|NN const U8 *u \
diff --git a/inline.h b/inline.h
index f448870..35983d8 100644
--- a/inline.h
+++ b/inline.h
@@ -418,9 +418,9 @@ S_cx_pushblock(pTHX_ U8 type, U8 gimme, SV** sp, I32 saveix)
      cx->cx_type = type;
      cx->blk_gimme = gimme;
      cx->blk_oldsaveix = saveix;
- cx->blk_oldsp = sp - PL_stack_base;
+ cx->blk_oldsp = (I32)(sp - PL_stack_base);
      cx->blk_oldcop = PL_curcop;
- cx->blk_oldmarksp = PL_markstack_ptr - PL_markstack;
+ cx->blk_oldmarksp = (I32)(PL_markstack_ptr - PL_markstack);
      cx->blk_oldscopesp = PL_scopestack_ix;
      cx->blk_oldpm = PL_curpm;
      cx->blk_old_tmpsfloor = PL_tmps_floor;
diff --git a/proto.h b/proto.h
index 044d31e..c43c4fc 100644
--- a/proto.h
+++ b/proto.h
@@ -3376,7 +3376,7 @@ PERL_CALLCONV IV Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
   assert(a); assert(b)

-PERL_CALLCONV U8* Perl_utf8_hop(const U8 *s, I32 off)
+PERL_CALLCONV U8* Perl_utf8_hop(const U8 *s, SSize_t off)
diff --git a/utf8.c b/utf8.c
index 6249ea5..56d3322 100644
--- a/utf8.c
+++ b/utf8.c
@@ -1118,7 +1118,7 @@ on the first byte of character or just after the last byte of a character.

  U8 *
-Perl_utf8_hop(const U8 *s, I32 off)
+Perl_utf8_hop(const U8 *s, SSize_t off)

Perl5 Master Repository

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 1 of 1 | next ›
Discussion Overview
groupperl5-changes @
postedMar 28, '16 at 1:06a
activeMar 28, '16 at 1:06a

1 user in discussion

Tony Cook: 1 post



site design / logo © 2019 Grokbase