summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
authorLarry Wall <lwall@jpl-devvax.jpl.nasa.gov>1990-10-19 13:31:07 +0000
committerLarry Wall <lwall@jpl-devvax.jpl.nasa.gov>1990-10-19 13:31:07 +0000
commite5d73d7778736a8bd9f7f44aad5289ad2c783a16 (patch)
tree756f3b46679d7ac7f679ae75de0329852e1155b2 /hash.c
parent20188a906a3fc8fea4839293454a6ca32aa362cc (diff)
downloadperl-e5d73d7778736a8bd9f7f44aad5289ad2c783a16.tar.gz
perl 3.0 patch #37 (combined patch)
I tried to take the strlen of an integer on systems without wait4() or waitpid(). For some reason this didn't work too well... In hash.c there was a call to dbm_nextkey() which needed to be ifdefed on old dbm systems. A pattern such as /foo.*bar$/ was wrongly optimized to do tail matching on "foo". This was a longstanding bug that was unmasked by patch 36. Some systems have some SYS V IPC but not all of it. Configure now figures this out. Patch 36 put the user's PATH in front of Configures, but to make it work right I needed to change all calls of loc to ./loc in Configure. $cryptlib needed to be mentioned in the Makefile. Apollo 10.3 and Sun 3.5 have some compilation problems, so I mentioned them in README. Cray has weird restrictions on setjmp locations--you can't say if (result = setjmp(...)) Random typos and cleanup.
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/hash.c b/hash.c
index 8a288df1ff..73ac5b9961 100644
--- a/hash.c
+++ b/hash.c
@@ -1,4 +1,4 @@
-/* $Header: hash.c,v 3.0.1.6 90/10/15 17:32:52 lwall Locked $
+/* $Header: hash.c,v 3.0.1.7 90/10/20 02:10:00 lwall Locked $
*
* Copyright (c) 1989, Larry Wall
*
@@ -6,6 +6,9 @@
* as specified in the README file that comes with the perl 3.0 kit.
*
* $Log: hash.c,v $
+ * Revision 3.0.1.7 90/10/20 02:10:00 lwall
+ * patch37: hash.c called ndbm function on dbm system
+ *
* Revision 3.0.1.6 90/10/15 17:32:52 lwall
* patch29: non-existent array values no longer cause core dumps
* patch29: %foo = () will now clear dbm files
@@ -402,7 +405,15 @@ int dodbm;
if ((old_dbm = tb->tbl_dbm) && dodbm) {
while (dkey = dbm_firstkey(tb->tbl_dbm), dkey.dptr) {
do {
+#ifdef NDBM
+#ifdef _CX_UX
nextdkey = dbm_nextkey(tb->tbl_dbm, dkey);
+#else
+ nextdkey = dbm_nextkey(tb->tbl_dbm);
+#endif
+#else
+ nextdkey = nextkey(dkey);
+#endif
dbm_delete(tb->tbl_dbm,dkey);
dkey = nextdkey;
} while (dkey.dptr); /* one way or another, this works */