X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FODBM_File%2FODBM_File.xs;h=53d1930c54e218d57ad25fca5ee5321055234caa;hb=b85d18e97b6ae9e0cc168f99b999fd3fd33104bd;hp=92b443ce99a38d8b515d9a09d5a8174bad3aa592;hpb=1639c7b394658ecd7eb856ba9df0fd2269415ecd;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/ODBM_File/ODBM_File.xs b/ext/ODBM_File/ODBM_File.xs index 92b443c..53d1930 100644 --- a/ext/ODBM_File/ODBM_File.xs +++ b/ext/ODBM_File/ODBM_File.xs @@ -3,7 +3,7 @@ #include "XSUB.h" #ifdef NULL -#undef NULL +#undef NULL /* XXX Why? */ #endif #ifdef I_DBM # include @@ -46,6 +46,10 @@ static int dbmrefcnt; MODULE = ODBM_File PACKAGE = ODBM_File PREFIX = odbm_ +#ifndef NULL +# define NULL 0 +#endif + ODBM_File odbm_TIEHASH(dbtype, filename, flags, mode) char * dbtype @@ -54,9 +58,11 @@ odbm_TIEHASH(dbtype, filename, flags, mode) int mode CODE: { - char tmpbuf[1025]; + char *tmpbuf; if (dbmrefcnt++) croak("Old dbm can only open one database"); + New(0, tmpbuf, strlen(filename) + 5, char); + SAVEFREEPV(tmpbuf); sprintf(tmpbuf,"%s.dir",filename); if (stat(tmpbuf, &statbuf) < 0) { if (flags & O_CREAT) { @@ -71,7 +77,7 @@ odbm_TIEHASH(dbtype, filename, flags, mode) } RETVAL = (void*)(dbminit(filename) >= 0 ? &dbmrefcnt : 0); ST(0) = sv_mortalcopy(&sv_undef); - sv_setptrobj(ST(0), RETVAL, "ODBM_File"); + sv_setptrobj(ST(0), RETVAL, dbtype); } void