This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Revert the edits made by me so far to the 5.6 branch since
authorJarkko Hietaniemi <jhi@iki.fi>
Wed, 24 Jan 2001 13:50:20 +0000 (13:50 +0000)
committerJarkko Hietaniemi <jhi@iki.fi>
Wed, 24 Jan 2001 13:50:20 +0000 (13:50 +0000)
the TRIAL1 since I did edits when I should have been using
integrates.  Bad programmer.   (Will integrate them properly later.)
Undoes #8347, #8349, #8350, #8351, #8353, #8355, #8376, #8463, #8470.
The #8353 will not be reapplied at least for now since
the UTF-8 hash keys need more thinking.
(The patches #8347, #8354, #8454, #8473 were okay since they
were original edits made specifically for the 5.6.1-TRIAL1.)

p4raw-id: //depot/maint-5.6/perl@8536

28 files changed:
Configure
Porting/Glossary
Porting/config.sh
Porting/config_H
config_h.SH
configure.com
embed.pl
epoc/config.sh
hints/aix.sh
hints/solaris_2.sh
hv.c
hv.h
malloc.c
perlapi.c
pod/perlapi.pod
pod/perlfaq3.pod
proto.h
regcomp.c
sv.c
t/op/each.t
vms/descrip_mms.template
vos/config.alpha.def
vos/config.alpha.h
vos/config.ga.def
vos/config.ga.h
win32/config.bc
win32/config.gc
win32/config.vc

index b509b6d..bff6ac2 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Thu Nov 16 16:33:41 EET 2000 [metaconfig 3.0 PL70]
+# Generated on Thu Nov 16 03:18:20 EET 2000 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >/tmp/c1$$ <<EOF
@@ -478,7 +478,6 @@ d_rmdir=''
 d_safebcpy=''
 d_safemcpy=''
 d_sanemcmp=''
-d_sbrkproto=''
 d_select=''
 d_sem=''
 d_semctl=''
@@ -10892,11 +10891,6 @@ $rm -f try.* try core
 set d_sanemcmp
 eval $setvar
 
-: see if prototype for sbrk is available
-echo " "
-set d_sbrkproto sbrk $i_unistd unistd.h
-eval $hasproto
-
 : see if select exists
 set select d_select
 eval $inlibc
@@ -15721,7 +15715,6 @@ d_rmdir='$d_rmdir'
 d_safebcpy='$d_safebcpy'
 d_safemcpy='$d_safemcpy'
 d_sanemcmp='$d_sanemcmp'
-d_sbrkproto='$d_sbrkproto'
 d_sched_yield='$d_sched_yield'
 d_scm_rights='$d_scm_rights'
 d_seekdir='$d_seekdir'
index 2233779..6441fd8 100644 (file)
@@ -1251,12 +1251,6 @@ d_sanemcmp (d_sanemcmp.U):
        the memcpy() routine is available and can be used to compare relative
        magnitudes of chars with their high bits set.
 
-d_sbrkproto (d_sbrkproto.U):
-       This variable conditionally defines the HAS_SBRK_PROTO symbol,
-       which indicates to the C program that the system provides
-       a prototype for the sbrk() function.  Otherwise, it is
-       up to the program to supply one.
-
 d_sched_yield (d_pthread_y.U):
        This variable conditionally defines the HAS_SCHED_YIELD
        symbol if the sched_yield routine is available to yield
index 9e0e300..654bec7 100644 (file)
@@ -8,7 +8,7 @@
 
 # Package name      : perl5
 # Source directory  : /m/fs/work/work/permanent/perl/pp4/perl
-# Configuration time: Thu Nov 16 16:43:36 EET 2000
+# Configuration time: Thu Nov 16 03:24:59 EET 2000
 # Configured by     : jhi
 # Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
 
@@ -62,7 +62,7 @@ ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_
 ccversion='V5.6-082'
 cf_by='jhi'
 cf_email='yourname@yourhost.yourplace.com'
-cf_time='Thu Nov 16 16:43:36 EET 2000'
+cf_time='Thu Nov 16 03:24:59 EET 2000'
 charsize='1'
 chgrp=''
 chmod=''
@@ -286,7 +286,6 @@ d_rmdir='define'
 d_safebcpy='define'
 d_safemcpy='undef'
 d_sanemcmp='define'
-d_sbrkproto='define'
 d_sched_yield='define'
 d_scm_rights='define'
 d_seekdir='define'
index 59537cb..dc2f0f1 100644 (file)
@@ -17,7 +17,7 @@
 /*
  * Package name      : perl5
  * Source directory  : /m/fs/work/work/permanent/perl/pp4/perl
- * Configuration time: Thu Nov 16 16:43:36 EET 2000
+ * Configuration time: Thu Nov 16 03:24:59 EET 2000
  * Configured by     : jhi
  * Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
  */
  */
 #define HAS_FSYNC              /**/
 
-/* HAS_SBRK_PROTO:
- *     This symbol, if defined, indicates that the system provides
- *     a prototype for the sbrk() function.  Otherwise, it is up
- *     to the program to supply one.  Good guesses are
- *             extern void* sbrk _((int));
- *             extern void* sbrk _((size_t));
- */
-#define        HAS_SBRK_PROTO  /**/
-
 #endif
index 08d8baa..5302d01 100644 (file)
@@ -3225,14 +3225,5 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #$d_fsync HAS_FSYNC            /**/
 
-/* HAS_SBRK_PROTO:
- *     This symbol, if defined, indicates that the system provides
- *     a prototype for the sbrk() function.  Otherwise, it is up
- *     to the program to supply one.  Good guesses are
- *             extern void* sbrk _((int));
- *             extern void* sbrk _((size_t));
- */
-#$d_sbrkproto  HAS_SBRK_PROTO  /**/
-
 #endif
 !GROK!THIS!
index 79e0cdc..2f8044c 100644 (file)
@@ -1214,20 +1214,12 @@ $     line = F$EDIT(line,"COMPRESS, TRIM")
 $     api_subversion = F$ELEMENT(2," ",line)
 $     got_api_subversion = "true"
 $   ENDIF
-$   IF (.NOT. got_patch) .OR. -
-       (.NOT. got_sub) .OR. - 
-       (.NOT. got_api_revision) .OR. -
-       (.NOT. got_api_version) .OR. -
-       (.NOT. got_api_subversion) -
-      THEN GOTO Patchlevel_h_loop
+$   IF (.NOT.got_patch).OR.(.NOT.got_sub) THEN GOTO Patchlevel_h_loop
 $Close_patch:
 $   CLOSE CONFIG
 $ ELSE
 $   patchlevel="0"
 $   subversion="0"
-$   api_revision="0"
-$   api_version="0"
-$   api_subversion="0"
 $ ENDIF
 $ IF (F$STRING(subversion) .NES. "0")
 $ THEN
@@ -2376,7 +2368,7 @@ $ echo "SDBM_File if you have the GDBM library built on your machine."
 $ echo ""
 $ echo "Which modules do you want to build into perl?"
 $! dflt = "Fcntl Errno File::Glob IO Opcode Byteloader Devel::Peek Devel::DProf Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File"
-$ dflt = "re Fcntl Errno File::Glob IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs VMS::Stdio VMS::DCLsym B SDBM_File Thread Sys::Hostname"
+$ dflt = "re Fcntl Errno File::Glob IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs VMS::Stdio VMS::DCLsym B SDBM_File Storable Thread Sys::Hostname"
 $ IF Using_Dec_C .OR. using_cxx
 $ THEN
 $   dflt = dflt + " POSIX"
@@ -4720,11 +4712,8 @@ $ WC ""
 $ WC "CONFIG='true'"
 $ WC "Makefile_SH='" + Makefile_SH + "'"
 $ WC "Mcc='" + Mcc + "'"
-$ WC "PERL_REVISION=" + revision
-$ WC "PERL_VERSION=" + patchlevel
-$ WC "PERL_SUBVERSION=" + subversion
-$ WC "PERL_API_VERSION=" + api_version
-$ WC "PERL_API_SUBVERSION=" + api_subversion
+$! WC "PERL_SUBVERSION='" + subversion + "'" ! VMS specific to descrip_mms.template
+$ WC "PERL_VERSION='" + patchlevel + "'" ! VMS specific to descrip_mms.template
 $ WC "alignbytes='" + alignbytes + "'"
 $ WC "aphostname='" + "'"
 $ WC "ar='" + "'"
@@ -4951,7 +4940,6 @@ $ WC "d_rmdir='define'"
 $ WC "d_safebcpy='undef'"
 $ WC "d_safemcpy='define'"
 $ WC "d_sanemcmp='define'"
-$ WC "d_sbrkproto='undef'"
 $ WC "d_sched_yield='" + d_sched_yield + "'"
 $ WC "d_scm_rights='undef'"
 $ WC "d_seekdir='define'"
index 18ac7eb..3e7debe 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -1563,11 +1563,11 @@ Ap      |HV*    |gv_stashpvn    |const char* name|U32 namelen|I32 create
 Apd    |HV*    |gv_stashsv     |SV* sv|I32 create
 Apd    |void   |hv_clear       |HV* tb
 Ap     |void   |hv_delayfree_ent|HV* hv|HE* entry
-Apd    |SV*    |hv_delete      |HV* tb|const char* key|I32 klen|I32 flags
+Apd    |SV*    |hv_delete      |HV* tb|const char* key|U32 klen|I32 flags
 Apd    |SV*    |hv_delete_ent  |HV* tb|SV* key|I32 flags|U32 hash
-Apd    |bool   |hv_exists      |HV* tb|const char* key|I32 klen
+Apd    |bool   |hv_exists      |HV* tb|const char* key|U32 klen
 Apd    |bool   |hv_exists_ent  |HV* tb|SV* key|U32 hash
-Apd    |SV**   |hv_fetch       |HV* tb|const char* key|I32 klen|I32 lval
+Apd    |SV**   |hv_fetch       |HV* tb|const char* key|U32 klen|I32 lval
 Apd    |HE*    |hv_fetch_ent   |HV* tb|SV* key|I32 lval|U32 hash
 Ap     |void   |hv_free_ent    |HV* hv|HE* entry
 Apd    |I32    |hv_iterinit    |HV* tb
@@ -1578,7 +1578,7 @@ Apd       |SV*    |hv_iternextsv  |HV* hv|char** key|I32* retlen
 Apd    |SV*    |hv_iterval     |HV* tb|HE* entry
 Ap     |void   |hv_ksplit      |HV* hv|IV newmax
 Apd    |void   |hv_magic       |HV* hv|GV* gv|int how
-Apd    |SV**   |hv_store       |HV* tb|const char* key|I32 klen|SV* val \
+Apd    |SV**   |hv_store       |HV* tb|const char* key|U32 klen|SV* val \
                                |U32 hash
 Apd    |HE*    |hv_store_ent   |HV* tb|SV* key|SV* val|U32 hash
 Apd    |void   |hv_undef       |HV* tb
index 201826e..0c897bc 100644 (file)
@@ -275,7 +275,6 @@ d_rmdir='define'
 d_safebcpy='undef'
 d_safemcpy='undef'
 d_sanemcmp='define'
-d_sbrkproto='undef'
 d_sched_yield='undef'
 d_scm_rights='undef'
 d_seekdir='define'
index d5c328e..cf7e43c 100644 (file)
@@ -156,20 +156,6 @@ case "$osvers" in
     lddlflags="$lddlflags -bhalt:4 -bM:SRE -bI:\$(PERL_INC)/perl.exp -bE:\$(BASEEXT).exp -b noentry -lc"
     ;;
 esac
-# AIX 4.2 (using latest patchlevels on 20001130) has a broken bind
-# library (getprotobyname and getprotobynumber are outversioned by
-# the same calls in libc, at least for xlc version 3...
-case "`oslevel`" in
-    4.2.1.*)  # Test for xlc version too, should we?
-      case "$ccversion" in    # Don't know if needed for gcc
-          3.1.4.*)    # libswanted "bind ... c ..." => "... c bind ..."
-              set `echo X "$libswanted "| sed -e 's/ bind\( .*\) \([cC]\) / \1 \2 bind /'`
-              shift
-              libswanted="$*"
-              ;;
-          esac
-      ;;
-    esac
 
 # This script UU/usethreads.cbu will get 'called-back' by Configure 
 # after it has prompted the user for whether to use threads.
index 0bf5bab..237efea 100644 (file)
@@ -1,48 +1,37 @@
 # hints/solaris_2.sh
-# Last modified: Tue Jan  2 10:16:35 2001
-# Lupe Christoph <lupe@lupe-christoph.de>
-# Based on version by:
+# Last modified:  Thu Nov  9 14:21:02 EST 2000
 # Andy Dougherty  <doughera@lafayette.edu>
-# Which was based on input from lots of folks, especially
+# Based on input from lots of folks, especially
 # Dean Roehrich <roehrich@ironwood-fddi.cray.com>
-# Additional input from Alan Burlison, Jarkko Hietaniemi,
-# and Richard Soderberg.
 #
 # See README.solaris for additional information.
 #
-# For consistency with gcc, we do not adopt Sun Marketing's
-# removal of the '2.' prefix from the Solaris version number.
-# (Configure tries to detect an old fixincludes and needs
-# this information.)
-
 # If perl fails tests that involve dynamic loading of extensions, and
 # you are using gcc, be sure that you are NOT using GNU as and ld.  One
 # way to do that is to invoke Configure with
-#
+# 
 #     sh Configure -Dcc='gcc -B/usr/ccs/bin/'
 #
 #  (Note that the trailing slash is *required*.)
 #  gcc will occasionally emit warnings about "unused prefix", but
 #  these ought to be harmless.  See below for more details.
-
 # See man vfork.
 usevfork=false
 
 d_suidsafe=define
 
 # Avoid all libraries in /usr/ucblib.
-# /lib is just a symlink to /usr/lib
-set `echo $glibpth | sed -e 's@/usr/ucblib@@' -e 's@ /lib @ @'`
+set `echo $glibpth | sed -e 's@/usr/ucblib@@'`
 glibpth="$*"
 
-# Remove unwanted libraries.  -lucb contains incompatible routines.
-# -lld and -lsec don't do anything useful. -lcrypt does not
-# really provide anything we need over -lc, so we drop it, too.
+# Remove bad libraries.  -lucb contains incompatible routines.
+# -lld doesn't do anything useful.
 # -lmalloc can cause a problem with GNU CC & Solaris.  Specifically,
 # libmalloc.a may allocate memory that is only 4 byte aligned, but
 # GNU CC on the Sparc assumes that doubles are 8 byte aligned.
 # Thanks to  Hallvard B. Furuseth <h.b.furuseth@usit.uio.no>
-set `echo " $libswanted " | sed -e 's@ ld @ @' -e 's@ malloc @ @' -e 's@ ucb @ @' -e 's@ sec @ @' -e 's@ crypt @ @'`
+set `echo " $libswanted " | sed -e 's@ ld @ @' -e 's@ malloc @ @' -e 's@ ucb @ @'`
 libswanted="$*"
 
 # Look for architecture name.  We want to suggest a useful default.
@@ -58,35 +47,47 @@ case "$archname" in
     ;;
 esac
 
-cat > UU/workshoplibpth.cbu << 'EOCBU'
-# This script UU/workshoplibpth.cbu will get 'called-back'
-# by other CBUs this script creates.
+cc=${cc:-cc}
+
+ccversion="`$cc -V 2>&1|head -1|sed 's/^cc: //'`"
+case "$ccversion" in
+*WorkShop*) ccname=workshop ;;
+*) ccversion='' ;;
+esac
+
+cat >UU/workshoplibpth.cbu<<'EOCBU'
 case "$workshoplibpth_done" in
-    '')        if test `uname -p` = "sparc"; then
-       case "$use64bitall" in
-           "$define"|true|[yY]*)
-               # add SPARC-specific 64 bit libraries
-               loclibpth="$loclibpth /usr/lib/sparcv9"
-               if test -n "$workshoplibs"; then
-                   loclibpth=`echo $loclibpth | sed -e "s% $workshoplibs%%" `
-                   for lib in $workshoplibs; do
-                       # Logically, it should be sparcv9.
-                       # But the reality fights back, it's v9.
-                       loclibpth="$loclibpth $lib/sparcv9 $lib/v9"
-                   done
-               fi
+'')    case "$use64bitall" in
+       "$define"|true|[yY]*)
+            loclibpth="$loclibpth /usr/lib/sparcv9"
+            if test -n "$workshoplibs"; then
+                loclibpth=`echo $loclibpth | sed -e "s% $workshoplibs%%" `
+                for lib in $workshoplibs; do
+                    # Logically, it should be sparcv9.
+                    # But the reality fights back, it's v9.
+                    loclibpth="$loclibpth $lib/sparcv9 $lib/v9"
+                done
+            fi 
            ;;
-       *)  loclibpth="$loclibpth $workshoplibs"
+       *)  loclibpth="$loclibpth $workshoplibs"  
            ;;
        esac
-       else
-           loclibpth="$loclibpth $workshoplibs"
-       fi
        workshoplibpth_done="$define"
        ;;
 esac
 EOCBU
 
+case "$ccname" in
+workshop)
+       cat >try.c <<EOF
+#include <sunmath.h>
+int main() { return(0); }
+EOF
+       workshoplibs=`cc -### try.c -lsunmath -o try 2>&1|grep " -Y "|sed 's%.* -Y "P,\(.*\)".*%\1%'|tr ':' '\n'|grep '/SUNWspro/'`
+       . ./UU/workshoplibpth.cbu
+       ;;
+esac
+
 ######################################################
 # General sanity testing.  See below for excerpts from the Solaris FAQ.
 #
@@ -96,12 +97,12 @@ EOCBU
 # To: perl5-porters@africa.nicoh.com
 # Subject: Re: On perl5/solaris/gcc
 #
-# Here's another draft of the perl5/solaris/gcc sanity-checker.
+# Here's another draft of the perl5/solaris/gcc sanity-checker. 
 
 case `type ${cc:-cc}` in
 */usr/ucb/cc*) cat <<END >&4
 
-NOTE:  Some people have reported problems with /usr/ucb/cc.
+NOTE:  Some people have reported problems with /usr/ucb/cc.  
 If you have difficulties, please make sure the directory
 containing your C compiler is before /usr/ucb in your PATH.
 
@@ -159,7 +160,7 @@ if grep GNU make.vers > /dev/null 2>&1; then
     case "`/usr/bin/ls -lL $tmp`" in
     ??????s*)
            cat <<END >&2
-
+       
 NOTE: Your PATH points to GNU make, and your GNU make has the set-group-id
 bit set.  You must either rearrange your PATH to put /usr/ccs/bin before the
 GNU utilities or you must ask your system administrator to disable the
@@ -171,33 +172,31 @@ END
 fi
 rm -f make.vers
 
-cat > UU/cc.cbu <<'EOCBU'
-# This script UU/cc.cbu will get 'called-back' by Configure after it
-# has prompted the user for the C compiler to use.
-
+# XXX EXPERIMENTAL  A.D.  2/27/1998
+# XXX This script UU/cc.cbu will get 'called-back' by Configure after it
+# XXX has prompted the user for the C compiler to use.
+cat > UU/cc.cbu <<'EOSH'
 # If the C compiler is gcc:
 #   - check the fixed-includes
 #   - check as(1) and ld(1), they should not be GNU
 #      (GNU as and ld 2.8.1 and later are reportedly ok, however.)
 # If the C compiler is not gcc:
-#   - Check if it is the Workshop/Forte compiler.
-#     If it is, prepare for 64 bit and long doubles.
 #   - check as(1) and ld(1), they should not be GNU
 #      (GNU as and ld 2.8.1 and later are reportedly ok, however.)
 #
 # Watch out in case they have not set $cc.
 
-# Perl compiled with some combinations of GNU as and ld may not
+# Perl compiled with some combinations of GNU as and ld may not 
 # be able to perform dynamic loading of extensions.  If you have a
 # problem with dynamic loading, be sure that you are using the Solaris
 # /usr/ccs/bin/as and /usr/ccs/bin/ld.  You can do that with
 #              sh Configure -Dcc='gcc -B/usr/ccs/bin/'
-# (note the trailing slash is required).
+# (note the trailing slash is required). 
 # Combinations that are known to work with the following hints:
 #
 #  gcc-2.7.2, GNU as 2.7, GNU ld 2.7
 #  egcs-1.0.3, GNU as 2.9.1 and GNU ld 2.9.1
-#      --Andy Dougherty  <doughera@lafayette.edu>
+#      --Andy Dougherty  <doughera@lafayette.edu>  
 #      Tue Apr 13 17:19:43 EDT 1999
 
 # Get gcc to share its secrets.
@@ -210,6 +209,12 @@ if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then
        # Using gcc.
        #
 
+       tmp=`echo "$verbose" | grep '^Reading' |
+               awk '{print $NF}'  | sed 's/specs$/include/'`
+
+       # Determine if the fixed-includes look like they'll work.
+       # Doesn't work anymore for gcc-2.7.2.
+
        # See if as(1) is GNU as(1).  GNU as(1) might not work for this job.
        if echo "$verbose" | grep ' /usr/ccs/bin/as ' >/dev/null 2>&1; then
            :
@@ -274,23 +279,6 @@ else
        # Not using gcc.
        #
 
-       ccversion="`${cc:-cc} -V 2>&1|sed -n -e '1s/^cc: //p'`"
-       case "$ccversion" in
-       *WorkShop*) ccname=workshop ;;
-       *) ccversion='' ;;
-       esac
-
-       case "$ccname" in
-       workshop)
-               cat >try.c <<EOM
-#include <sunmath.h>
-int main() { return(0); }
-EOM
-               workshoplibs=`cc -### try.c -lsunmath -o try 2>&1|sed -n '/ -Y /s%.* -Y "P,\(.*\)".*%\1%p'|tr ':' '\n'|grep '/SUNWspro/'`
-               . ./workshoplibpth.cbu
-       ;;
-       esac
-
        # See if as(1) is GNU as(1).  GNU might not work for this job.
        case `as --version < /dev/null 2>&1` in
        *GNU*)
@@ -307,12 +295,22 @@ END
        # See if ld(1) is GNU ld(1).  GNU ld(1) might not work for this job.
        # ld --version doesn't properly report itself as a GNU tool,
        # as of ld version 2.6, so we need to be more strict. TWP 9/5/96
-       # Sun's ld always emits the "Software Generation Utilities" string.
-       if ld -V 2>&1 | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then
-           # Ok, ld is /usr/ccs/bin/ld.
-           :
+       gnu_ld=false
+       case `ld --version < /dev/null 2>&1` in
+       *GNU*|ld\ version\ 2*)
+               gnu_ld=true ;;
+       *) ;;
+       esac
+       if $gnu_ld ; then :
        else
-           cat <<END >&2
+               # Try to guess from path
+               case `type ld | awk '{print $NF}'` in
+               *gnu*|*GNU*|*FSF*)
+                       gnu_ld=true ;;
+               esac
+       fi
+       if $gnu_ld ; then
+               cat <<END >&2
 
 NOTE: You are apparently using GNU ld(1).  GNU ld(1) might not build Perl.
 You should arrange to use /usr/ccs/bin/ld, perhaps by adding /usr/ccs/bin
@@ -328,16 +326,16 @@ rm -f try try.c
 rm -f core
 
 # XXX
-EOCBU
+EOSH
 
 cat > UU/usethreads.cbu <<'EOCBU'
-# This script UU/usethreads.cbu will get 'called-back' by Configure
+# This script UU/usethreads.cbu will get 'called-back' by Configure 
 # after it has prompted the user for whether to use threads.
 case "$usethreads" in
 $define|true|[yY]*)
         ccflags="-D_REENTRANT $ccflags"
 
-        # sched_yield is in -lposix4 up to Solaris 2.6, in -lrt starting with Solaris 2.7
+        # sched_yield is in -lposix4 up to Solaris 2.6, in -lrt starting with Solaris 7
        case `uname -r` in
        5.[0-6] | 5.5.1) sched_yield_lib="posix4" ;;
        *) sched_yield_lib="rt";
@@ -356,12 +354,12 @@ $define|true|[yY]*)
         cat >try.c <<'EOM'
        /* Test for sig(set|long)jmp bug. */
        #include <setjmp.h>
-
+        
        main()
        {
            sigjmp_buf env;
            int ret;
-
+       
            ret = sigsetjmp(env, 1);
            if (ret) { return ret == 2; }
            siglongjmp(env, 2);
@@ -383,7 +381,7 @@ esac
 EOCBU
 
 cat > UU/uselargefiles.cbu <<'EOCBU'
-# This script UU/uselargefiles.cbu will get 'called-back' by Configure
+# This script UU/uselargefiles.cbu will get 'called-back' by Configure 
 # after it has prompted the user for whether to use large files.
 case "$uselargefiles" in
 ''|$define|true|[yY]*)
@@ -403,40 +401,21 @@ EOCBU
 # This is truly a mess.
 case "$usemorebits" in
 "$define"|true|[yY]*)
-       use64bitint="$define"
-       uselongdouble="$define"
+       use64bitint="$define"    
+       uselongdouble="$define"    
        ;;
 esac
 
-if test `uname -p` = "sparc"; then
-    cat > UU/use64bitint.cbu <<'EOCBU'
-# This script UU/use64bitint.cbu will get 'called-back' by Configure
-# after it has prompted the user for whether to use 64 bit integers.
-case "$use64bitint" in
-"$define"|true|[yY]*)
-           case "`uname -r`" in
-           5.[0-4])
-               cat >&4 <<EOM
-Solaris `uname -r|sed -e 's/^5\./2./'` does not support 64-bit integers.
-You should upgrade to at least Solaris 2.5.
-EOM
-               exit 1
-               ;;
-           esac
-           ;;
-esac
-EOCBU
-
-    cat > UU/use64bitall.cbu <<'EOCBU'
-# This script UU/use64bitall.cbu will get 'called-back' by Configure
+cat > UU/use64bitall.cbu <<'EOCBU'
+# This script UU/use64bitall.cbu will get 'called-back' by Configure 
 # after it has prompted the user for whether to be maximally 64 bitty.
 case "$use64bitall-$use64bitall_done" in
 "$define-"|true-|[yY]*-)
            case "`uname -r`" in
-           5.[0-6])
+           5.[1-6])
                cat >&4 <<EOM
-Solaris `uname -r|sed -e 's/^5\./2./'` does not support 64-bit pointers.
-You should upgrade to at least Solaris 2.7.
+Solaris `uname -r|sed -e 's/^5\.\([789]\)$/\1/'` does not support 64-bit pointers.
+You should upgrade to at least Solaris 7.
 EOM
                exit 1
                ;;
@@ -446,12 +425,21 @@ EOM
                cat >&4 <<EOM
 
 I do not see the 64-bit libc, $libc.
+(You are either in an old Sparc or in an x86.)
 Cannot continue, aborting.
 
 EOM
                exit 1
+           fi 
+
+           if test -f UU/workshoplibpth.cbu; then
+               . ./UU/workshoplibpth.cbu
+           else
+               if test -f workshoplibpth.cbu; then
+                       . ./workshoplibpth.cbu
+               fi
            fi
-           . ./workshoplibpth.cbu
+
            case "$cc -v 2>/dev/null" in
            *gcc*)
                echo 'main() { return 0; }' > try.c
@@ -468,7 +456,7 @@ Cannot continue, aborting.
 EOM
                    exit 1
                    ;;
-               esac
+               esac    
                ccflags="$ccflags -mcpu=v9 -m64"
                if test X`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null` != X; then
                    ccflags="$ccflags -Wa,`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`"
@@ -485,47 +473,68 @@ EOM
                ldflags="$ldflags `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`"
                lddlflags="$lddlflags -G `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`"
                ;;
-           esac
+           esac        
            libscheck='case "`/usr/bin/file $xxx`" in
 *64-bit*|*SPARCV9*) ;;
 *) xxx=/no/64-bit$xxx ;;
 esac'
-
            use64bitall_done=yes
            ;;
 esac
 EOCBU
-
-    # Actually, we want to run this already now, if so requested,
-    # because we need to fix up things right now.
-    case "$use64bitall" in
-    "$define"|true|[yY]*)
-       # CBUs expect to be run in UU
-       cd UU; . ./use64bitall.cbu; cd ..
+# Actually, we want to run this already now, if so requested,
+# because we need to fix up things right now.
+case "$use64bitall" in
+"$define"|true|[yY]*)
+        # Need to be double smart because we can be either here or there.
+       if test -f UU/use64bitall.cbu; then
+               . ./UU/use64bitall.cbu
+       else
+               if test -f use64bitall.cbu; then
+                       . ./use64bitall.cbu
+               fi
+       fi
        ;;
-    esac
-fi
+esac
 
 cat > UU/uselongdouble.cbu <<'EOCBU'
-# This script UU/uselongdouble.cbu will get 'called-back' by Configure
+# This script UU/uselongdouble.cbu will get 'called-back' by Configure 
 # after it has prompted the user for whether to use long doubles.
-case "$uselongdouble" in
-"$define"|true|[yY]*)
-       if test -f /opt/SUNWspro/lib/libsunmath.so; then
-               libs="$libs -lsunmath"
-               ldflags="$ldflags -L/opt/SUNWspro/lib -R/opt/SUNWspro/lib"
-               d_sqrtl=define
-       else
-               cat >&4 <<EOM
+case "$uselongdouble-$uselongdouble_done" in
+"$define-"|true-|[yY]*-)
+       case "$ccname" in
+       workshop)
+               libswanted="$libswanted sunmath"
+               loclibpth="$loclibpth /opt/SUNWspro/lib"
+               ;;
+       *)      cat >&4 <<EOM
 
-The Sun Workshop math library is not installed; therefore I do not
-know how to do long doubles, sorry.  I'm disabling the use of long
-doubles.
+The Sun Workshop compiler is not being used; therefore I do not see
+the libsunmath; therefore I do not know how to do long doubles, sorry.
+I'm disabling the use of long doubles.
 EOM
                uselongdouble="$undef"
-       fi
+               ;;
+       esac
+       uselongdouble_done=yes
        ;;
 esac
 EOCBU
 
-rm -f try.c try.o try a.out
+# Actually, we want to run this already now, if so requested,
+# because we need to fix up things right now.
+case "$uselongdouble" in
+"$define"|true|[yY]*)
+        # Need to be double smart because we can be either here or there.
+       if test -f UU/uselongdouble.cbu; then
+               . ./UU/uselongdouble.cbu
+       else
+               if test -f uselongdouble.cbu; then
+                       . ./uselongdouble.cbu
+               fi
+       fi
+       ;;
+esac
+
+rm -f try.c try.o try
diff --git a/hv.c b/hv.c
index ee159dc..6a07615 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -74,27 +74,20 @@ S_save_hek(pTHX_ const char *str, I32 len, U32 hash)
 {
     char *k;
     register HEK *hek;
-    bool is_utf8 = FALSE;
-
-    if (len < 0) {
-      len = -len;
-      is_utf8 = TRUE;
-    }
     
     New(54, k, HEK_BASESIZE + len + 1, char);
     hek = (HEK*)k;
     Copy(str, HEK_KEY(hek), len, char);
+    *(HEK_KEY(hek) + len) = '\0';
     HEK_LEN(hek) = len;
     HEK_HASH(hek) = hash;
-    HEK_UTF8(hek) = (char)is_utf8;
     return hek;
 }
 
 void
 Perl_unshare_hek(pTHX_ HEK *hek)
 {
-    unsharepvn(HEK_KEY(hek),HEK_UTF8(hek)?-HEK_LEN(hek):HEK_LEN(hek),
-              HEK_HASH(hek));
+    unsharepvn(HEK_KEY(hek),HEK_LEN(hek),HEK_HASH(hek));
 }
 
 #if defined(USE_ITHREADS)
@@ -118,9 +111,9 @@ Perl_he_dup(pTHX_ HE *e, bool shared)
     if (HeKLEN(e) == HEf_SVKEY)
        HeKEY_sv(ret) = SvREFCNT_inc(sv_dup(HeKEY_sv(e)));
     else if (shared)
-       HeKEY_hek(ret) = save_hek(HeKEY(e), HeKLEN_UTF8(e), HeHASH(e));
+       HeKEY_hek(ret) = share_hek(HeKEY(e), HeKLEN(e), HeHASH(e));
     else
-
+       HeKEY_hek(ret) = save_hek(HeKEY(e), HeKLEN(e), HeHASH(e));
     HeVAL(ret) = SvREFCNT_inc(sv_dup(HeVAL(e)));
     return ret;
 }
@@ -144,22 +137,16 @@ information on how to use this function on tied hashes.
 */
 
 SV**
-Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval)
+Perl_hv_fetch(pTHX_ HV *hv, const char *key, U32 klen, I32 lval)
 {
     register XPVHV* xhv;
     register U32 hash;
     register HE *entry;
     SV *sv;
-    bool is_utf8 = FALSE;
 
     if (!hv)
        return 0;
 
-    if (klen < 0) {
-      klen = -klen;
-      is_utf8 = TRUE;
-    }
-
     if (SvRMAGICAL(hv)) {
        if (mg_find((SV*)hv,'P')) {
            dTHR;
@@ -206,8 +193,6 @@ Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval)
            continue;
        if (memNE(HeKEY(entry),key,klen))       /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        return &HeVAL(entry);
     }
 #ifdef DYNAMIC_ENV_FETCH  /* %ENV lookup?  If so, try to fetch the value now */
@@ -223,7 +208,7 @@ Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval)
 #endif
     if (lval) {                /* gonna assign to this, so it better be there */
        sv = NEWSV(61,0);
-       return hv_store(hv,key,is_utf8?-klen:klen,sv,hash);
+       return hv_store(hv,key,klen,sv,hash);
     }
     return 0;
 }
@@ -255,7 +240,6 @@ Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, register U32 hash)
     STRLEN klen;
     register HE *entry;
     SV *sv;
-    bool is_utf8;
 
     if (!hv)
        return 0;
@@ -306,7 +290,6 @@ Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, register U32 hash)
     }
 
     key = SvPV(keysv, klen);
-    is_utf8 = (SvUTF8(keysv)!=0);
     
     if (!hash)
        PERL_HASH(hash, key, klen);
@@ -319,8 +302,6 @@ Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, register U32 hash)
            continue;
        if (memNE(HeKEY(entry),key,klen))       /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        return entry;
     }
 #ifdef DYNAMIC_ENV_FETCH  /* %ENV lookup?  If so, try to fetch the value now */
@@ -379,22 +360,16 @@ information on how to use this function on tied hashes.
 */
 
 SV**
-Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, register U32 hash)
+Perl_hv_store(pTHX_ HV *hv, const char *key, U32 klen, SV *val, register U32 hash)
 {
     register XPVHV* xhv;
     register I32 i;
     register HE *entry;
     register HE **oentry;
-    bool is_utf8 = FALSE;
 
     if (!hv)
        return 0;
 
-    if (klen < 0) {
-      klen = -klen;
-      is_utf8 = TRUE;
-    }
-
     xhv = (XPVHV*)SvANY(hv);
     if (SvMAGICAL(hv)) {
        bool needs_copy;
@@ -430,8 +405,6 @@ Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, register U32 has
            continue;
        if (memNE(HeKEY(entry),key,klen))       /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        SvREFCNT_dec(HeVAL(entry));
        HeVAL(entry) = val;
        return &HeVAL(entry);
@@ -439,9 +412,9 @@ Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, register U32 has
 
     entry = new_HE();
     if (HvSHAREKEYS(hv))
-       HeKEY_hek(entry) = share_hek(key, is_utf8?-klen:klen, hash);
+       HeKEY_hek(entry) = share_hek(key, klen, hash);
     else                                       /* gotta do the real thing */
-       HeKEY_hek(entry) = save_hek(key, is_utf8?-klen:klen, hash);
+       HeKEY_hek(entry) = save_hek(key, klen, hash);
     HeVAL(entry) = val;
     HeNEXT(entry) = *oentry;
     *oentry = entry;
@@ -484,7 +457,6 @@ Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash)
     register I32 i;
     register HE *entry;
     register HE **oentry;
-    bool is_utf8;
 
     if (!hv)
        return 0;
@@ -516,7 +488,6 @@ Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash)
     }
 
     key = SvPV(keysv, klen);
-    is_utf8 = (SvUTF8(keysv) != 0);
 
     if (!hash)
        PERL_HASH(hash, key, klen);
@@ -535,8 +506,6 @@ Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash)
            continue;
        if (memNE(HeKEY(entry),key,klen))       /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        SvREFCNT_dec(HeVAL(entry));
        HeVAL(entry) = val;
        return entry;
@@ -544,9 +513,9 @@ Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash)
 
     entry = new_HE();
     if (HvSHAREKEYS(hv))
-       HeKEY_hek(entry) = share_hek(key, is_utf8?-klen:klen, hash);
+       HeKEY_hek(entry) = share_hek(key, klen, hash);
     else                                       /* gotta do the real thing */
-       HeKEY_hek(entry) = save_hek(key, is_utf8?-klen:klen, hash);
+       HeKEY_hek(entry) = save_hek(key, klen, hash);
     HeVAL(entry) = val;
     HeNEXT(entry) = *oentry;
     *oentry = entry;
@@ -573,7 +542,7 @@ will be returned.
 */
 
 SV *
-Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags)
+Perl_hv_delete(pTHX_ HV *hv, const char *key, U32 klen, I32 flags)
 {
     register XPVHV* xhv;
     register I32 i;
@@ -582,14 +551,9 @@ Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags)
     register HE **oentry;
     SV **svp;
     SV *sv;
-    bool is_utf8 = FALSE;
 
     if (!hv)
        return Nullsv;
-    if (klen < 0) {
-      klen = -klen;
-      is_utf8 = TRUE;
-    }
     if (SvRMAGICAL(hv)) {
        bool needs_copy;
        bool needs_store;
@@ -629,8 +593,6 @@ Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags)
            continue;
        if (memNE(HeKEY(entry),key,klen))       /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        *oentry = HeNEXT(entry);
        if (i && !*oentry)
            xhv->xhv_fill--;
@@ -671,7 +633,6 @@ Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
     register HE *entry;
     register HE **oentry;
     SV *sv;
-    bool is_utf8;
     
     if (!hv)
        return Nullsv;
@@ -705,7 +666,6 @@ Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
        return Nullsv;
 
     key = SvPV(keysv, klen);
-    is_utf8 = (SvUTF8(keysv) != 0);
     
     if (!hash)
        PERL_HASH(hash, key, klen);
@@ -720,8 +680,6 @@ Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
            continue;
        if (memNE(HeKEY(entry),key,klen))       /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        *oentry = HeNEXT(entry);
        if (i && !*oentry)
            xhv->xhv_fill--;
@@ -751,22 +709,16 @@ C<klen> is the length of the key.
 */
 
 bool
-Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
+Perl_hv_exists(pTHX_ HV *hv, const char *key, U32 klen)
 {
     register XPVHV* xhv;
     register U32 hash;
     register HE *entry;
     SV *sv;
-    bool is_utf8 = FALSE;
 
     if (!hv)
        return 0;
 
-    if (klen < 0) {
-      klen = -klen;
-      is_utf8 = TRUE;
-    }
-
     if (SvRMAGICAL(hv)) {
        if (mg_find((SV*)hv,'P')) {
            dTHR;
@@ -803,8 +755,6 @@ Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
            continue;
        if (memNE(HeKEY(entry),key,klen))       /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        return TRUE;
     }
 #ifdef DYNAMIC_ENV_FETCH  /* is it out there? */
@@ -841,7 +791,6 @@ Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
     STRLEN klen;
     register HE *entry;
     SV *sv;
-    bool is_utf8;
 
     if (!hv)
        return 0;
@@ -872,7 +821,6 @@ Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
 #endif
 
     key = SvPV(keysv, klen);
-    is_utf8 = (SvUTF8(keysv) != 0);
     if (!hash)
        PERL_HASH(hash, key, klen);
 
@@ -888,8 +836,6 @@ Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
            continue;
        if (memNE(HeKEY(entry),key,klen))       /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        return TRUE;
     }
 #ifdef DYNAMIC_ENV_FETCH  /* is it out there? */
@@ -1104,9 +1050,9 @@ Perl_newHVhv(pTHX_ HV *ohv)
        /* Slow way */
        hv_iterinit(ohv);
        while ((entry = hv_iternext(ohv))) {
-           hv_store(hv, HeKEY(entry), HeKLEN_UTF8(entry),
-                    newSVsv(HeVAL(entry)), HeHASH(entry));
-       }
+           hv_store(hv, HeKEY(entry), HeKLEN(entry), 
+                    SvREFCNT_inc(HeVAL(entry)), HeHASH(entry));
+       }
        HvRITER(ohv) = hv_riter;
        HvEITER(ohv) = hv_eiter;
     }
@@ -1395,13 +1341,9 @@ Perl_hv_iterkeysv(pTHX_ register HE *entry)
 {
     if (HeKLEN(entry) == HEf_SVKEY)
        return sv_mortalcopy(HeKEY_sv(entry));
-      else {
-         SV *sv =  newSVpvn((HeKLEN(entry) ? HeKEY(entry) : ""),
-                            HeKLEN(entry));
-         if (HeKUTF8(entry))
-             SvUTF8_on(sv);
-         return sv_2mortal(sv);
-      }
+    else
+       return sv_2mortal(newSVpvn((HeKLEN(entry) ? HeKEY(entry) : ""),
+                                 HeKLEN(entry)));
 }
 
 /*
@@ -1478,13 +1420,7 @@ Perl_unsharepvn(pTHX_ const char *str, I32 len, U32 hash)
     register HE **oentry;
     register I32 i = 1;
     I32 found = 0;
-    bool is_utf8 = FALSE;
-
-    if (len < 0) {
-       len = -len;
-       is_utf8 = TRUE;
-    }
-
+    
     /* what follows is the moral equivalent of:
     if ((Svp = hv_fetch(PL_strtab, tmpsv, FALSE, hash))) {
        if (--*Svp == Nullsv)
@@ -1501,8 +1437,6 @@ Perl_unsharepvn(pTHX_ const char *str, I32 len, U32 hash)
            continue;
        if (memNE(HeKEY(entry),str,len))        /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        found = 1;
        if (--HeVAL(entry) == Nullsv) {
            *oentry = HeNEXT(entry);
@@ -1535,12 +1469,6 @@ Perl_share_hek(pTHX_ const char *str, I32 len, register U32 hash)
     register HE **oentry;
     register I32 i = 1;
     I32 found = 0;
-    bool is_utf8 = FALSE;
-
-    if (len < 0) {
-      len = -len;
-      is_utf8 = TRUE;
-    }
 
     /* what follows is the moral equivalent of:
        
@@ -1558,14 +1486,12 @@ Perl_share_hek(pTHX_ const char *str, I32 len, register U32 hash)
            continue;
        if (memNE(HeKEY(entry),str,len))        /* is this it? */
            continue;
-       if (HeKUTF8(entry) != (char)is_utf8)
-           continue;
        found = 1;
        break;
     }
     if (!found) {
        entry = new_HE();
-       HeKEY_hek(entry) = save_hek(str, is_utf8?-len:len, hash);
+       HeKEY_hek(entry) = save_hek(str, len, hash);
        HeVAL(entry) = Nullsv;
        HeNEXT(entry) = *oentry;
        *oentry = entry;
diff --git a/hv.h b/hv.h
index 56d3f86..08f3bed 100644 (file)
--- a/hv.h
+++ b/hv.h
@@ -151,8 +151,6 @@ C<SV*>.
 #define HeKEY(he)              HEK_KEY(HeKEY_hek(he))
 #define HeKEY_sv(he)           (*(SV**)HeKEY(he))
 #define HeKLEN(he)             HEK_LEN(HeKEY_hek(he))
-#define HeKUTF8(he)            HEK_UTF8(HeKEY_hek(he))
-#define HeKLEN_UTF8(he)                (HeKUTF8(he) ? -HeKLEN(he) : HeKLEN(he))
 #define HeVAL(he)              (he)->hent_val
 #define HeHASH(he)             HEK_HASH(HeKEY_hek(he))
 #define HePV(he,lp)            ((HeKLEN(he) == HEf_SVKEY) ?            \
@@ -177,7 +175,6 @@ C<SV*>.
 #define HEK_HASH(hek)          (hek)->hek_hash
 #define HEK_LEN(hek)           (hek)->hek_len
 #define HEK_KEY(hek)           (hek)->hek_key
-#define HEK_UTF8(hek)          (*(HEK_KEY(hek)+HEK_LEN(hek)))
 
 /* calculate HV array allocation */
 #if defined(STRANGE_MALLOC) || defined(MYMALLOC)
index 0f668cd..a0db2a3 100644 (file)
--- a/malloc.c
+++ b/malloc.c
@@ -889,9 +889,7 @@ static      union overhead *nextf[NBUCKETS];
 # define sbrk(a) Perl_sbrk(a)
 Malloc_t Perl_sbrk (int size);
 #else
-# ifndef HAS_SBRK_PROTO /* <unistd.h> usually takes care of this */
 extern Malloc_t sbrk(int);
-# endif
 #endif
 
 #ifdef DEBUGGING_MSTATS
index 5d7ccbe..03d3d0f 100644 (file)
--- a/perlapi.c
+++ b/perlapi.c
@@ -936,7 +936,7 @@ Perl_hv_delayfree_ent(pTHXo_ HV* hv, HE* entry)
 
 #undef  Perl_hv_delete
 SV*
-Perl_hv_delete(pTHXo_ HV* tb, const char* key, I32 klen, I32 flags)
+Perl_hv_delete(pTHXo_ HV* tb, const char* key, U32 klen, I32 flags)
 {
     return ((CPerlObj*)pPerl)->Perl_hv_delete(tb, key, klen, flags);
 }
@@ -950,7 +950,7 @@ Perl_hv_delete_ent(pTHXo_ HV* tb, SV* key, I32 flags, U32 hash)
 
 #undef  Perl_hv_exists
 bool
-Perl_hv_exists(pTHXo_ HV* tb, const char* key, I32 klen)
+Perl_hv_exists(pTHXo_ HV* tb, const char* key, U32 klen)
 {
     return ((CPerlObj*)pPerl)->Perl_hv_exists(tb, key, klen);
 }
@@ -964,7 +964,7 @@ Perl_hv_exists_ent(pTHXo_ HV* tb, SV* key, U32 hash)
 
 #undef  Perl_hv_fetch
 SV**
-Perl_hv_fetch(pTHXo_ HV* tb, const char* key, I32 klen, I32 lval)
+Perl_hv_fetch(pTHXo_ HV* tb, const char* key, U32 klen, I32 lval)
 {
     return ((CPerlObj*)pPerl)->Perl_hv_fetch(tb, key, klen, lval);
 }
@@ -1041,7 +1041,7 @@ Perl_hv_magic(pTHXo_ HV* hv, GV* gv, int how)
 
 #undef  Perl_hv_store
 SV**
-Perl_hv_store(pTHXo_ HV* tb, const char* key, I32 klen, SV* val, U32 hash)
+Perl_hv_store(pTHXo_ HV* tb, const char* key, U32 klen, SV* val, U32 hash)
 {
     return ((CPerlObj*)pPerl)->Perl_hv_store(tb, key, klen, val, hash);
 }
index 244735f..be99949 100644 (file)
@@ -748,7 +748,7 @@ hash and returned to the caller.  The C<klen> is the length of the key.
 The C<flags> value will normally be zero; if set to G_DISCARD then NULL
 will be returned.
 
-       SV*     hv_delete(HV* tb, const char* key, I32 klen, I32 flags)
+       SV*     hv_delete(HV* tb, const char* key, U32 klen, I32 flags)
 
 =for hackers
 Found in file hv.c
@@ -770,7 +770,7 @@ Found in file hv.c
 Returns a boolean indicating whether the specified hash key exists.  The
 C<klen> is the length of the key.
 
-       bool    hv_exists(HV* tb, const char* key, I32 klen)
+       bool    hv_exists(HV* tb, const char* key, U32 klen)
 
 =for hackers
 Found in file hv.c
@@ -796,7 +796,7 @@ dereferencing it to a C<SV*>.
 See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
 information on how to use this function on tied hashes.
 
-       SV**    hv_fetch(HV* tb, const char* key, I32 klen, I32 lval)
+       SV**    hv_fetch(HV* tb, const char* key, U32 klen, I32 lval)
 
 =for hackers
 Found in file hv.c
@@ -907,7 +907,7 @@ the call, and decrementing it if the function returned NULL.
 See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
 information on how to use this function on tied hashes.
 
-       SV**    hv_store(HV* tb, const char* key, I32 klen, SV* val, U32 hash)
+       SV**    hv_store(HV* tb, const char* key, U32 klen, SV* val, U32 hash)
 
 =for hackers
 Found in file hv.c
index fe3e0cf..1d06c2d 100644 (file)
@@ -180,61 +180,12 @@ your hard-earned cash for.
 
 PerlBuilder (http://www.solutionsoft.com/perl.htm) is an integrated
 development environment for Windows that supports Perl development.
-Komodo, ActiveState's cross-platform, multi-language IDE has Perl
-support, including a regular expression debugger and remote debugging
-(http://www.ActiveState.com/Products/Komodo/index.html).  (Visual Perl,
-a Visual Studio.NET plug-in is currently in beta (late 2000)
-(http://www.ActiveState.com/Products/VisualPerl/index.html)).
-The visiPerl+ IDE is available from Help Consulting
-(http://helpconsulting.net/visiperl/).  Perl code magic is
-another IDE (http://www.petes-place.com/codemagic.html).  CodeMagicCD
-(http://www.codemagiccd.com/) is another IDE.  The Object System
-(http://www.castlelink.co.uk/object_system/) is a Perl web
-applications development IDE.
-
-Perl programs are just plain text, though, so you could download GNU
-Emacs (http://www.gnu.org/software/emacs/windows/ntemacs.html) or
-XEmacs (http://www.xemacs.org/Download/index.html), or a vi clone such
-as Elvis (ftp://ftp.cs.pdx.edu/pub/elvis/, see also
-http://www.fh-wedel.de/elvis/), nvi (http://www.bostic.com/vi/, or
-available from CPAN in src/misc/), or Vile
-(http://www.clark.net/pub/dickey/vile/vile.html), or vim
-(http://www.vim.org/) (win32: http://www.cs.vu.nl/%7Etmgil/vi.html).
-(For vi lovers in general: http://www.thomer.com/thomer/vi/vi.html)
-
-The following are Win32 multilanguage editor/IDESs that support Perl: 
-Codewright (http://www.starbase.com/), MultiEdit (http://www.MultiEdit.com/),
-SlickEdit (http://www.slickedit.com/).
-
-There is also a toyedit Text widget based editor written in Perl that
-is distributed with the Tk module on CPAN.  The ptkdb
-(http://world.std.com/~aep/ptkdb/) is a Perl/tk based debugger that
-acts as a development environment of sorts.  Perl Composer
-(http://perlcomposer.sourceforge.net/vperl.html) is an IDE for Perl/Tk
-GUI creation.
-
-In addition to an editor/IDE you might be interested in a more
-powerful shell environment for Win32.  Your options include the Bash
-from the Cygwin package (http://sources.redhat.com/cygwin/), or the
-Ksh from the MKS Toolkit (http://www.mks.com/), or the Bourne shell of
-the U/WIN environment (http://www.research.att.com/sw/tools/uwin/), or
-the Tcsh (ftp://ftp.astron.com/pub/tcsh/, see also
-http://www.primate.wisc.edu/software/csh-tcsh-book/), or the Zsh
-(ftp://ftp.blarg.net/users/amol/zsh/, see also http://www.zsh.org/).
-MKS and U/WIN are commercial (U/WIN is free for educational and
-research purposes), Cygwin is covered by the GNU Public License (but
-that shouldn't matter for Perl use).  The Cygwin, MKS, and U/WIN all
-contain (in addition to the shells) a comprehensive set of standard
-UNIX toolkit utilities.
-
-On Mac OS the MacPerl Application comes with a simple 32k text editor
-that behaves like a rudimentary IDE.  In contrast to the MacPerl Application
-the MPW Perl tool can make use of the MPW Shell itself as an editor (with
-no 32k limit).  BBEdit and BBEdit Lite are text editors for Mac OS 
-that have a Perl sensitivity mode (http://web.barebones.com/).
-Alpha is an editor, written and extensible in Tcl, that nonetheless has
-built in support for several popular markup and programming languages
-including Perl and HTML (http://alpha.olm.net/).
+Perl programs are just plain text, though, so you could download emacs
+for Windows (http://www.gnu.org/software/emacs/windows/ntemacs.html)
+or a vi clone (vim) which runs on for win32
+(http://www.cs.vu.nl/%7Etmgil/vi.html).  If you're transferring
+Windows files to Unix be sure to transfer them in ASCII mode so the ends
+of lines are appropriately mangled.
 
 =head2 Where can I get Perl macros for vi?
 
diff --git a/proto.h b/proto.h
index a2bfa90..1390e48 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -303,11 +303,11 @@ PERL_CALLCONV HV* Perl_gv_stashpvn(pTHX_ const char* name, U32 namelen, I32 crea
 PERL_CALLCONV HV*      Perl_gv_stashsv(pTHX_ SV* sv, I32 create);
 PERL_CALLCONV void     Perl_hv_clear(pTHX_ HV* tb);
 PERL_CALLCONV void     Perl_hv_delayfree_ent(pTHX_ HV* hv, HE* entry);
-PERL_CALLCONV SV*      Perl_hv_delete(pTHX_ HV* tb, const char* key, I32 klen, I32 flags);
+PERL_CALLCONV SV*      Perl_hv_delete(pTHX_ HV* tb, const char* key, U32 klen, I32 flags);
 PERL_CALLCONV SV*      Perl_hv_delete_ent(pTHX_ HV* tb, SV* key, I32 flags, U32 hash);
-PERL_CALLCONV bool     Perl_hv_exists(pTHX_ HV* tb, const char* key, I32 klen);
+PERL_CALLCONV bool     Perl_hv_exists(pTHX_ HV* tb, const char* key, U32 klen);
 PERL_CALLCONV bool     Perl_hv_exists_ent(pTHX_ HV* tb, SV* key, U32 hash);
-PERL_CALLCONV SV**     Perl_hv_fetch(pTHX_ HV* tb, const char* key, I32 klen, I32 lval);
+PERL_CALLCONV SV**     Perl_hv_fetch(pTHX_ HV* tb, const char* key, U32 klen, I32 lval);
 PERL_CALLCONV HE*      Perl_hv_fetch_ent(pTHX_ HV* tb, SV* key, I32 lval, U32 hash);
 PERL_CALLCONV void     Perl_hv_free_ent(pTHX_ HV* hv, HE* entry);
 PERL_CALLCONV I32      Perl_hv_iterinit(pTHX_ HV* tb);
@@ -318,7 +318,7 @@ PERL_CALLCONV SV*   Perl_hv_iternextsv(pTHX_ HV* hv, char** key, I32* retlen);
 PERL_CALLCONV SV*      Perl_hv_iterval(pTHX_ HV* tb, HE* entry);
 PERL_CALLCONV void     Perl_hv_ksplit(pTHX_ HV* hv, IV newmax);
 PERL_CALLCONV void     Perl_hv_magic(pTHX_ HV* hv, GV* gv, int how);
-PERL_CALLCONV SV**     Perl_hv_store(pTHX_ HV* tb, const char* key, I32 klen, SV* val, U32 hash);
+PERL_CALLCONV SV**     Perl_hv_store(pTHX_ HV* tb, const char* key, U32 klen, SV* val, U32 hash);
 PERL_CALLCONV HE*      Perl_hv_store_ent(pTHX_ HV* tb, SV* key, SV* val, U32 hash);
 PERL_CALLCONV void     Perl_hv_undef(pTHX_ HV* tb);
 PERL_CALLCONV I32      Perl_ibcmp(pTHX_ const char* a, const char* b, I32 len);
index 262062d..6471b8d 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -2947,12 +2947,8 @@ tryagain:
        loopdone:
            PL_regcomp_parse = p - 1;
            nextchar();
-           {
-               /* len is STRLEN which is unsigned, need to copy to signed */
-               IV iv = len;
-               if (iv < 0)
-                   vFAIL("Internal disaster");
-           }
+           if (len < 0)
+               vFAIL("Internal disaster");
            if (len > 0)
                *flagp |= HASWIDTH;
            if (len == 1)
diff --git a/sv.c b/sv.c
index 3398fca..1d3a17d 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -2934,10 +2934,8 @@ void
 Perl_sv_setpvn(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
 {
     register char *dptr;
-    /* len is STRLEN which is unsigned, copy to signed to compare to 0 */
-    IV iv = len;
-    assert(iv >= 0);
-
+    assert(len >= 0);  /* STRLEN is probably unsigned, so this may
+                         elicit a warning, but it won't hurt. */
     SV_CHECK_THINKFIRST(sv);
     if (!ptr) {
        (void)SvOK_off(sv);
index 35792ab..879c0d0 100755 (executable)
@@ -1,6 +1,6 @@
 #!./perl
 
-print "1..24\n";
+print "1..19\n";
 
 $h{'abc'} = 'ABC';
 $h{'def'} = 'DEF';
@@ -131,28 +131,3 @@ if ($i == 5) { print "ok 16\n" } else { print "not ok\n" }
     print "ok 19\n";
 }
 
-# Check for Unicode hash keys.
-%u = ("\x{12}", "f", "\x{123}", "fo", "\x{1234}",  "foo");
-$u{"\x{12345}"}  = "bar";
-@u{"\x{123456}"} = "zap";
-
-foreach (keys %u) {
-    unless (length() == 1) {
-       print "not ";
-       last;
-    }
-}
-print "ok 20\n";
-
-$a = "\xe3\x81\x82"; $A = "\x{3042}";
-%b = ( $a => "non-utf8");
-%u = ( $A => "utf8");
-
-print "not " if exists $b{$A};
-print "ok 21\n";
-print "not " if exists $u{$a};
-print "ok 22\n";
-print "#$b{$_}\n" for keys %b; # Used to core dump before change #8056.
-print "ok 23\n";
-print "#$u{$_}\n" for keys %u; # Used to core dump before change #8056.
-print "ok 24\n";
index 6f417ab..c34be75 100644 (file)
@@ -337,7 +337,7 @@ CRTLOPTS =,$(CRTL)/Options
 .endif
 
 # Modules which must be installed before we can build extensions
-LIBPREREQ = $(ARCHDIR)Config.pm [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm [.lib]XSLoader.pm [.lib]vmsish.pm [.lib.ExtUtils]XSSymSet.pm $(ARCHDIR)vmspipe.com [.lib]re.pm
+LIBPREREQ = $(ARCHDIR)Config.pm [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm [.lib]XSLoader.pm [.lib]lib.pm [.lib]vmsish.pm [.lib.ExtUtils]XSSymSet.pm $(ARCHDIR)vmspipe.com [.lib]re.pm
 
 utils1 = [.lib.pod]perldoc.com [.lib.ExtUtils]Miniperl.pm [.utils]c2ph.com [.utils]h2ph.com [.utils]h2xs.com [.lib]perlbug.com [.lib]perlcc.com [.utils]dprofpp.com
 utils2 = [.lib]splain.com [.utils]pl2pm.com
@@ -500,6 +500,9 @@ dynext : $(LIBPREREQ) $(DBG)perlshr$(E)
 [.lib]vmsish.pm : [.vms.ext]vmsish.pm
        Copy/Log/NoConfirm $(MMS$SOURCE) $(MMS$TARGET)
 
+[.lib]lib.pm : [.lib]lib_pm.PL
+       $(MINIPERL) $(MMS$SOURCE)
+
 [.lib.VMS]Filespec.pm : [.vms.ext]Filespec.pm
        @ If F$Search("[.lib]VMS.Dir").eqs."" Then Create/Directory [.lib.VMS]
        Copy/Log/NoConfirm $(MMS$SOURCE) $(MMS$TARGET)
index 5a88cb8..8212ce1 100644 (file)
@@ -193,7 +193,6 @@ $d_rmdir='define'
 $d_safebcpy='undef'
 $d_safemcpy='undef'
 $d_sanemcmp='define'
-$d_sbrkproto='undef'
 $d_sched_yield='undef'
 $d_scm_rights='undef'
 $d_SCNfldbl='define'
index f4d8392..5736d92 100644 (file)
  */
 #define HAS_SANE_MEMCMP        /**/
 
-/* HAS_SBRK_PROTO:
- *     This symbol, if defined, indicates that the system provides
- *     a prototype for the sbrk() function.  Otherwise, it is up
- *     to the program to supply one.  Good guesses are
- *             extern void* sbrk _((int));
- *             extern void* sbrk _((size_t));
- */
-/*#define      HAS_SBRK_PROTO  / **/
-
 /* HAS_SEM:
  *     This symbol, if defined, indicates that the entire sem*(2) library is
  *     supported.
index c041b5c..88cd755 100644 (file)
@@ -193,7 +193,6 @@ $d_rmdir='define'
 $d_safebcpy='undef'
 $d_safemcpy='undef'
 $d_sanemcmp='define'
-$d_sbrkproto='undef'
 $d_sched_yield='undef'
 $d_scm_rights='undef'
 $d_SCNfldbl='define'
index 2fdc4a8..8a259a3 100644 (file)
  */
 #define HAS_SANE_MEMCMP        /**/
 
-/* HAS_SBRK_PROTO:
- *     This symbol, if defined, indicates that the system provides
- *     a prototype for the sbrk() function.  Otherwise, it is up
- *     to the program to supply one.  Good guesses are
- *             extern void* sbrk _((int));
- *             extern void* sbrk _((size_t));
- */
-/*#define      HAS_SBRK_PROTO  / **/
-
 /* HAS_SEM:
  *     This symbol, if defined, indicates that the entire sem*(2) library is
  *     supported.
index 04d5f45..6d8f7cd 100644 (file)
@@ -270,7 +270,6 @@ d_rmdir='define'
 d_safebcpy='undef'
 d_safemcpy='undef'
 d_sanemcmp='define'
-d_sbrkproto='undef'
 d_sched_yield='undef'
 d_scm_rights='undef'
 d_seekdir='define'
index 09316e2..0e69f3f 100644 (file)
@@ -270,7 +270,6 @@ d_rmdir='define'
 d_safebcpy='undef'
 d_safemcpy='undef'
 d_sanemcmp='define'
-d_sbrkproto='undef'
 d_sched_yield='undef'
 d_scm_rights='undef'
 d_seekdir='define'
index 27770d2..7f6c022 100644 (file)
@@ -270,7 +270,6 @@ d_rmdir='define'
 d_safebcpy='undef'
 d_safemcpy='undef'
 d_sanemcmp='define'
-d_sbrkproto='undef'
 d_sched_yield='undef'
 d_scm_rights='undef'
 d_seekdir='define'