diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1996-12-23 12:58:58 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1996-12-23 12:58:58 +1200 |
commit | 71be2cbc73608e37e1a2ab7e459a02111137d1b0 (patch) | |
tree | 86679f00907a9abdfd1ff5104cec60d9a9fb0ef9 /perl.h | |
parent | b133f4ec823b00faf9bd083e0eb8e7a53ba7bfca (diff) | |
download | perl-71be2cbc73608e37e1a2ab7e459a02111137d1b0.tar.gz |
[inseparable changes from patch from perl5.003_13 to perl5.003_14]
CORE LANGUAGE CHANGES
Subject: Eliminate support for {if,unless,while,until} BLOCK BLOCK
From: Chip Salzenberg <chip@atlantic.net>
Files: perly.c perly.c.diff perly.y toke.c
Subject: Taint $x after $x =~ s/pat/xyz/ if pat or xyz is tainted by locale
From: Chip Salzenberg <chip@atlantic.net>
Files: cop.h mg.c pp_ctl.c pp_hot.c
Subject: Complete support for modifying undefined array members in foreach
From: Chip Salzenberg <chip@atlantic.net>
Files: global.sym mg.c perl.h pp.c pp_hot.c proto.h sv.c
DOCUMENTATION
Subject: Update pod/Makefile; s/perli18n/perllocale/
From: Chip Salzenberg <chip@atlantic.net>
Files: ext/POSIX/POSIX.pod lib/I18N/Collate.pm pod/Makefile pod/perl.pod pod/perlmod.pod pod/perlnews.pod pod/roffitall
OTHER CORE CHANGES
Subject: Bug in debugger with import manipulations
Date: Mon, 23 Dec 1996 05:37:48 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: pp_hot.c
Finally I traced why MakeMaker runs wrongly under debugger: debugger
function calling sequence was assuming that
GvCV(CvGV(cv)) == cv
for non-anonymous subs (ne END). MakeMaker managed to break it by
*A::B = \&C::D;
eval 'sub C::D {new one}';
After this CvGV(\&A::B) is *C::D, but &{*C::D} is the "new one".
Patch follows (note that in this case we do not sacrifice having a
subroutine name in debugger output ;-).
Enjoy,
p5p-msgid: <199612231037.FAA08617@monk.mps.ohio-state.edu>
Subject: Import and dynamic methods
Date: Mon, 23 Dec 1996 01:45:37 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: gv.c hv.c sv.c
Here is the patch which corrects bad things which happens when you
import subroutines and otherwise manipulate the symbol tree.
I put forward the only chunk which may be controversal, since it may
have a minor performance penalty. It is independent of the others, so
it can be freely deleted.
The manipulations which correctly propagate to method calls:
a) Pruning globs: delete $B::{method}
b) Undefing subroutines: undef &B::method;
c) Importing: *B::method = \&mymethod;
Enjoy,
p5p-msgid: <199612230645.BAA08378@monk.mps.ohio-state.edu>
Subject: sv_gets patch
Date: Sun, 22 Dec 1996 03:24:04 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: pp_hot.c
I sent this patch before as a part of
pos $str =
$str = /failing/g
patch. Now I separate it in the case it was tainted by environment:
Synopsis:
$a = <FH>;
does not work as expected if $a is magic (say, tied).
Enjoy,
p5p-msgid: <199612220824.DAA07235@monk.mps.ohio-state.edu>
Subject: pos $str patch
Date: Sun, 22 Dec 1996 03:31:21 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: mg.c pp_hot.c t/op/pat.t
This patch was (mostly) posted already.
It fixes the bug:
pos $str
is reset to undef if
$str =~ /failing/g
fails.
Additionally, if fixes the hidded bit (=MGf_MINMATCH) surviving
setting
pos $str = ...
Enjoy,
p5p-msgid: <199612220831.DAA07247@monk.mps.ohio-state.edu>
PORTABILITY
Subject: Fix bugs in bincompat3 usage
From: Chip Salzenberg <chip@atlantic.net>
Files: perl.h perl_exp.SH
Subject: VMS patches to 5.003_13
Date: Mon, 23 Dec 1996 01:26:47 -0500 (EST)
From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
Files: deb.c ext/POSIX/POSIX.xs gv.c lib/File/Copy.pm mg.c perl.c perl.h proto.h sv.c t/lib/filecopy.t taint.c toke.c util.c vms/Makefile vms/config.vms vms/descrip.mms vms/gen_shrfls.pl vms/genconfig.pl vms/genopt.com vms/perly_c.vms vms/perly_h.vms vms/test.com vms/vms.c vms/vms_yfix.pl
private-msgid: <01IDBYYFYPIS002ASE@hmivax.humgen.upenn.edu>
UTILITIES, LIBRARY, AND EXTENSIONS
Subject: Remove libnet
From: Chip Salzenberg <chip@atlantic.net>
Files: MANIFEST pod/perlmod.pod
Subject: Update IO->VERSION() to 1.1201 for CPAN's sake
From: Chip Salzenberg <chip@atlantic.net>
Files: ext/IO/lib/IO/Handle.pm lib/IO/Handle.pm
Subject: Remodel File::Copy.
From: Chip Salzenberg <chip@atlantic.net>
Files: lib/File/Copy.pm
Diffstat (limited to 'perl.h')
-rw-r--r-- | perl.h | 76 |
1 files changed, 38 insertions, 38 deletions
@@ -24,6 +24,11 @@ #define USE_STDIO #endif /* PERL_FOR_X2P */ +#define VOIDUSED 1 +#include "config.h" + +#include "embed.h" + /* * STMT_START { statements; } STMT_END; * can be used as a single statement, as in @@ -47,11 +52,6 @@ # endif #endif -#include "embed.h" - -#define VOIDUSED 1 -#include "config.h" - /* * SOFT_CAST can be used for args to prototyped functions to retain some * type checking; it only casts if the compiler does not know prototypes. @@ -258,9 +258,9 @@ #if defined(STANDARD_C) && defined(I_STDDEF) # include <stddef.h> -# define OFFSETOF(s,m) offsetof(s,m) +# define STRUCT_OFFSET(s,m) offsetof(s,m) #else -# define OFFSETOF(s,m) (Size_t)(&(((s *)0)->m)) +# define STRUCT_OFFSET(s,m) (Size_t)(&(((s *)0)->m)) #endif #if defined(I_STRING) || defined(__cplusplus) @@ -1300,43 +1300,43 @@ EXT short * ds; EXT char * dc; /* handy constants */ -EXT char * Yes INIT("1"); -EXT char * No INIT(""); -EXT char * hexdigit INIT("0123456789abcdef0123456789ABCDEFx"); -EXT char * patleave INIT("\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}"); -EXT char * vert INIT("|"); +EXTCONST char * Yes INIT("1"); +EXTCONST char * No INIT(""); +EXTCONST char * hexdigit INIT("0123456789abcdef0123456789ABCDEFx"); +EXTCONST char * patleave INIT("\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}"); +EXTCONST char * vert INIT("|"); -EXT char warn_uninit[] +EXTCONST char warn_uninit[] INIT("Use of uninitialized value"); -EXT char warn_nosemi[] +EXTCONST char warn_nosemi[] INIT("Semicolon seems to be missing"); -EXT char warn_reserved[] +EXTCONST char warn_reserved[] INIT("Unquoted string \"%s\" may clash with future reserved word"); -EXT char warn_nl[] +EXTCONST char warn_nl[] INIT("Unsuccessful %s on filename containing newline"); -EXT char no_wrongref[] +EXTCONST char no_wrongref[] INIT("Can't use %s ref as %s ref"); -EXT char no_symref[] +EXTCONST char no_symref[] INIT("Can't use string (\"%.32s\") as %s ref while \"strict refs\" in use"); -EXT char no_usym[] +EXTCONST char no_usym[] INIT("Can't use an undefined value as %s reference"); -EXT char no_aelem[] +EXTCONST char no_aelem[] INIT("Modification of non-creatable array value attempted, subscript %d"); -EXT char no_helem[] +EXTCONST char no_helem[] INIT("Modification of non-creatable hash value attempted, subscript \"%s\""); -EXT char no_modify[] +EXTCONST char no_modify[] INIT("Modification of a read-only value attempted"); -EXT char no_mem[] +EXTCONST char no_mem[] INIT("Out of memory!\n"); -EXT char no_security[] +EXTCONST char no_security[] INIT("Insecure dependency in %s%s"); -EXT char no_sock_func[] +EXTCONST char no_sock_func[] INIT("Unsupported socket function \"%s\" called"); -EXT char no_dir_func[] +EXTCONST char no_dir_func[] INIT("Unsupported directory function \"%s\" called"); -EXT char no_func[] +EXTCONST char no_func[] INIT("The %s function is unimplemented"); -EXT char no_myglob[] +EXTCONST char no_myglob[] INIT("\"my\" variable %s can't be in a package"); EXT SV sv_undef; @@ -1397,7 +1397,7 @@ EXTCONST unsigned char fold[] = { 248, 249, 250, 251, 252, 253, 254, 255 }; #else -EXT unsigned char fold[]; +EXTCONST unsigned char fold[]; #endif #ifdef DOINIT @@ -1440,7 +1440,7 @@ EXT unsigned char fold_locale[]; #endif #ifdef DOINIT -EXT unsigned char freq[] = { /* letter frequencies for mixed English/C */ +EXTCONST unsigned char freq[] = { /* letter frequencies for mixed English/C */ 1, 2, 84, 151, 154, 155, 156, 157, 165, 246, 250, 3, 158, 7, 18, 29, 40, 51, 62, 73, 85, 96, 107, 118, @@ -1475,12 +1475,12 @@ EXT unsigned char freq[] = { /* letter frequencies for mixed English/C */ 138, 139, 141, 142, 143, 144, 145, 146 }; #else -EXT unsigned char freq[]; +EXTCONST unsigned char freq[]; #endif #ifdef DEBUGGING #ifdef DOINIT -EXT char* block_type[] = { +EXTCONST char* block_type[] = { "NULL", "SUB", "EVAL", @@ -1489,7 +1489,7 @@ EXT char* block_type[] = { "BLOCK", }; #else -EXT char* block_type[]; +EXTCONST char* block_type[]; #endif #endif @@ -1885,8 +1885,6 @@ EXT MGVTBL vtbl_substr = {0, magic_setsubstr, 0, 0, 0}; EXT MGVTBL vtbl_vec = {0, magic_setvec, 0, 0, 0}; -EXT MGVTBL vtbl_vivary = {0, magic_setvivary, - 0, 0, magic_freevivary}; EXT MGVTBL vtbl_pos = {magic_getpos, magic_setpos, 0, 0, 0}; @@ -1897,6 +1895,8 @@ EXT MGVTBL vtbl_fm = {0, magic_setfm, EXT MGVTBL vtbl_uvar = {magic_getuvar, magic_setuvar, 0, 0, 0}; +EXT MGVTBL vtbl_itervar = {magic_getitervar,magic_setitervar, + 0, 0, magic_freeitervar}; #ifdef USE_LOCALE_COLLATE EXT MGVTBL vtbl_collxfrm = {0, @@ -1930,11 +1930,11 @@ EXT MGVTBL vtbl_nkeys; EXT MGVTBL vtbl_taint; EXT MGVTBL vtbl_substr; EXT MGVTBL vtbl_vec; -EXT MGVTBL vtbl_vivary; EXT MGVTBL vtbl_pos; EXT MGVTBL vtbl_bm; EXT MGVTBL vtbl_fm; EXT MGVTBL vtbl_uvar; +EXT MGVTBL vtbl_itervar; #ifdef USE_LOCALE_COLLATE EXT MGVTBL vtbl_collxfrm; @@ -1952,7 +1952,7 @@ EXT long amagic_generation; #define NofAMmeth 29 #ifdef DOINIT -EXT char * AMG_names[NofAMmeth][2] = { +EXTCONST char * AMG_names[NofAMmeth][2] = { {"fallback","abs"}, {"bool", "nomethod"}, {"\"\"", "0+"}, @@ -1984,7 +1984,7 @@ EXT char * AMG_names[NofAMmeth][2] = { {"=","neg"} }; #else -EXT char * AMG_names[NofAMmeth][2]; +EXTCONST char * AMG_names[NofAMmeth][2]; #endif /* def INITAMAGIC */ struct am_table { |