diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1997-04-23 00:00:00 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1997-04-23 00:00:00 +1200 |
commit | 46fc3d4c69a0adf236bfcba70daee7fd597cf30d (patch) | |
tree | 3b70f4a42d2ccd034756c9786032a1e531569e62 /pp.c | |
parent | 10a676f83f541430b63a3192b246bf6f86d3b189 (diff) | |
download | perl-46fc3d4c69a0adf236bfcba70daee7fd597cf30d.tar.gz |
[inseparable changes from match from perl-5.003_97g to perl-5.003_97h]
BUILD PROCESS
Subject: Fix up Linux hints for tcsh, and Configure patch
Date: Tue, 22 Apr 1997 11:02:27 -0400 (EDT)
From: Andy Dougherty <doughera@lafcol.lafayette.edu>
Files: Configure hints/linux.sh
Msg-ID: Pine.SOL.3.95q.970422101051.2506C-100000@fractal.lafayette.e
(applied based on p5p patch as commit 1eb1b1cb9647b817d039bb17afa3e74940b5ef92)
Subject: There is no standard answer to 'Use suidperl?'
From: Chip Salzenberg <chip@perl.com>
Files: hints/bsdos.sh hints/freebsd.sh hints/linux.sh hints/machten_2.sh
CORE LANGUAGE CHANGES
Subject: Support PRINTF for tied handles
Date: Sun, 20 Apr 1997 18:26:13 -0400
From: Doug MacEachern <dougm@opengroup.org>
Files: pod/perldelta.pod pod/perltie.pod pp_sys.c t/op/misc.t
Msg-ID: 199704202226.SAA08032@postman.osf.org
(applied based on p5p patch as commit e7c5525577c16ee25e3521e86aca2b5105dba394)
CORE PORTABILITY
Subject: Fix bitwise shifts and pack('w') on Crays
From: Chip Salzenberg <chip@perl.com>
Files: pp.c
DOCUMENTATION
Subject: FAQ udpate (23-apr-97)
Date: Wed, 23 Apr 1997 12:22:55 -0600 (MDT)
From: Nathan Torkington <gnat@prometheus.frii.com>
Files: pod/perlfaq*.pod
private-msgid: 199704231822.MAA05074@prometheus.frii.com
OTHER CORE CHANGES
Subject: Mondo Cool patch for buffer safety and convenience
From: Chip Salzenberg <chip@perl.com>
Files: XSUB.h doop.c dump.c ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_next.xs ext/DynaLoader/dlutils.c ext/ODBM_File/ODBM_File.xs global.sym gv.c interp.sym mg.c op.c perl.c perl.h pod/perlguts.pod pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regexec.c sv.c toke.c util.c
Subject: Problems with glob
Date: Sun, 20 Apr 1997 02:44:32 -0400 (EDT)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: op.c
Msg-ID: 1997Apr20.024432.1941365@hmivax.humgen.upenn.edu
(applied based on p5p patch as commit a1230b335277820e65b8a9454ab751341204cf4f)
Subject: Fix scalar leak in closures
From: Chip Salzenberg <chip@perl.com>
Files: op.c scope.c
Subject: Refine error messages re: anon subs' prototypes
From: Chip Salzenberg <chip@perl.com>
Files: op.c
Subject: Outermost scope is void, not scalar
From: Chip Salzenberg <chip@perl.com>
Files: pp_ctl.c
Diffstat (limited to 'pp.c')
-rw-r--r-- | pp.c | 32 |
1 files changed, 17 insertions, 15 deletions
@@ -36,9 +36,9 @@ typedef unsigned UBW; * in a double without loss; that is, it has no 32-bit type. */ #if BYTEORDER > 0xFFFF && defined(_CRAY) && !defined(_CRAYMPP) -# define BWBITS 32 -# define BWMASK ((1 << BWBITS) - 1) -# define BWSIGN (1 << (BWBITS - 1)) +# define BW_BITS 32 +# define BW_MASK ((1 << BW_BITS) - 1) +# define BW_SIGN (1 << (BW_BITS - 1)) # define BWi(i) (((i) & BW_SIGN) ? ((i) | ~BW_MASK) : ((i) & BW_MASK)) # define BWu(u) ((u) & BW_MASK) #else @@ -150,11 +150,9 @@ PP(pp_padhv) } else if (gimme == G_SCALAR) { SV* sv = sv_newmortal(); - if (HvFILL((HV*)TARG)) { - sprintf(buf, "%ld/%ld", - (long)HvFILL((HV*)TARG), (long)HvMAX((HV*)TARG)+1); - sv_setpv(sv, buf); - } + if (HvFILL((HV*)TARG)) + sv_setpvf(sv, "%ld/%ld", + (long)HvFILL((HV*)TARG), (long)HvMAX((HV*)TARG) + 1); else sv_setiv(sv, 0); SETs(sv); @@ -863,7 +861,7 @@ PP(pp_left_shift) IBW shift = POPi; if (op->op_private & HINT_INTEGER) { IBW i = TOPi; - i <<= shift; + i = BWi(i) << shift; SETi(BWi(i)); } else { @@ -882,7 +880,7 @@ PP(pp_right_shift) IBW shift = POPi; if (op->op_private & HINT_INTEGER) { IBW i = TOPi; - i >>= shift; + i = BWi(i) >> shift; SETi(BWi(i)); } else { @@ -3114,12 +3112,9 @@ PP(pp_unpack) auv = 0; } else if (++bytes >= sizeof(UV)) { /* promote to string */ - char decn[sizeof(UV) * 3 + 1]; char *t; - (void) sprintf(decn, "%0*ld", - (int)sizeof(decn) - 1, auv); - sv = newSVpv(decn, 0); + sv = newSVpvf("%0*vu", (int)(sizeof(UV) * 3), auv); while (s < strend) { sv = mul128(sv, *s & 0x7f); if (!(*s++ & 0x80)) { @@ -3716,7 +3711,14 @@ PP(pp_pack) if (adouble < 0) croak("Cannot compress negative numbers"); - if (adouble <= UV_MAX) { + if ( +#ifdef BW_BITS + adouble <= BW_MASK +#else + adouble <= UV_MAX +#endif + ) + { char buf[1 + sizeof(UV)]; char *in = buf + sizeof(buf); UV auv = U_V(adouble);; |