[comp.lang.perl] perl4.003 and ndbm

tkacik@kyzyl.mi.org (Tom Tkacik) (05/08/91)

I just compiled perl 4.003 on an AT&T 3b1.  Not the world's biggest
machine, but it does the job.  It failed on test, op/dbm.t.
Here's what I get when I run  ./perl t/op/dbm.t.

1..12
ok 1
ok 2
Out of memory!

From looking at t/op/dbm.t, it does not appear that the test should use
that much memory.  Does this test really use that much memory,
or is something wrong?

Do I need to do anything special when compiling perl on a 3b1?

Now the 3b1 does not come with -lndbm, but that didn't stop me.
I just grabbed Ozan Yigit's sdbm package, and used that.
I compiled most of perl with gcc, (falling back to cc for eval.c and toke.c).
Gcc tends to run out of virtual memory, (there's that 2.5Meg limit again).
I did not use perl's malloc, (should I have?)
And I used the shared libraries, (maybe I should not have).

Any ideas?
-- 
Tom Tkacik                |
tkacik@kyzyl.mi.org       |     To rent this space, call 1-800-555-QUIP.
...!rphroy!kyzyl!tkacik   |

oz@yunexus.yorku.ca (Ozan Yigit) (05/09/91)

In article <339@kyzyl.mi.org> tkacik@kyzyl.mi.org (Tom Tkacik) writes:

>Now the 3b1 does not come with -lndbm, but that didn't stop me.
>I just grabbed Ozan Yigit's sdbm package, and used that.

While I do not know the reasons for your current problem, I can tell you
that with the version of sdbm you have, the same test will fail between 7
and 8. When I wrote sdbm, I considered an attempt to store null key (dsize
0) to be a sure sign of something bizarre going on, and decided to check
for it. By some poetic :-) coincidence, the dbm test for perl attempts to
store a null key between 7 and 8, and gets caught by this check.

If you wish to allow for this, patch sdbm.c with the following diff, and
re-compile with -DNULLKEY.

enjoy...	oz

------------- 

11c11
< static char rcsid[] = "$Id: sdbm.c,v 1.2 1991/04/23 13:48:03 oz Exp $";
---
> static char rcsid[] = "$Id: sdbm.c,v 1.3 91/04/23 13:51:39 oz Exp Locker: oz $";
13a14,20
> /*
>  * $Log:	sdbm.c,v $
>  * Revision 1.3  91/04/23  13:51:39  oz
>  * added #ifdef NULLKEY to allow storing of a key with 0 length,
>  * and NULL dptr..
>  * 
>  */
59a67,69
> #ifdef NULLKEY
> #define bad(x)		((x).dsize < 0)
> #else
60a71
> #endif