Change 30304 by [EMAIL PROTECTED] on 2007/02/14 22:27:59
Integrate:
[ 28298]
Fix segfault in SDBM_File when the destructor is called multiple times
[ 28976]
Make g++ happy when compiling NDBM_File on a system that
is likely using the GDBM compatibility headers that
g++ (and other C++ implementations) cannot handle.
[ 28996]
Fix typo in NDBM_File.xs and bump up the version number.
[ 28997]
Subject: RE: g++ compile and make test 100%
From: "Robin Barker" <[EMAIL PROTECTED]>
Date: Wed, 11 Oct 2006 15:29:43 +0100
Message-ID: <[EMAIL PROTECTED]>
[ 29000]
Subject: [PATCH] RE: g++ compile and make test 100%
From: "Robin Barker" <[EMAIL PROTECTED]>
Date: Wed, 11 Oct 2006 16:58:10 +0100
Message-ID: <[EMAIL PROTECTED]>
Affected files ...
... //depot/maint-5.8/perl/ext/NDBM_File/Makefile.PL#2 integrate
... //depot/maint-5.8/perl/ext/NDBM_File/NDBM_File.pm#6 integrate
... //depot/maint-5.8/perl/ext/NDBM_File/NDBM_File.xs#3 integrate
... //depot/maint-5.8/perl/ext/NDBM_File/typemap#4 integrate
... //depot/maint-5.8/perl/ext/ODBM_File/t/odbm.t#2 integrate
... //depot/maint-5.8/perl/ext/SDBM_File/SDBM_File.pm#5 integrate
... //depot/maint-5.8/perl/ext/SDBM_File/SDBM_File.xs#4 integrate
... //depot/maint-5.8/perl/ext/SDBM_File/sdbm/sdbm.c#4 integrate
Differences ...
==== //depot/maint-5.8/perl/ext/NDBM_File/Makefile.PL#2 (text) ====
Index: perl/ext/NDBM_File/Makefile.PL
--- perl/ext/NDBM_File/Makefile.PL#1~17645~ 2002-07-19 12:29:57.000000000
-0700
+++ perl/ext/NDBM_File/Makefile.PL 2007-02-14 14:27:59.000000000 -0800
@@ -1,7 +1,16 @@
+use Config;
use ExtUtils::MakeMaker;
+
+my $define = "";
+
+if($Config{i_gdbm} && $Config{i_gdbm} eq 'define') {
+ $define .= " -DHAS_GDBM";
+}
+
WriteMakefile(
NAME => 'NDBM_File',
LIBS => ["-L/usr/local/lib -lndbm", "-ldbm -lucb"],
+ DEFINE => $define,
MAN3PODS => {}, # Pods will be built by installman.
XSPROTOARG => '-noprototypes', # XXX remove later?
VERSION_FROM => 'NDBM_File.pm',
==== //depot/maint-5.8/perl/ext/NDBM_File/NDBM_File.pm#6 (text) ====
Index: perl/ext/NDBM_File/NDBM_File.pm
--- perl/ext/NDBM_File/NDBM_File.pm#5~26806~ 2006-01-12 11:23:34.000000000
-0800
+++ perl/ext/NDBM_File/NDBM_File.pm 2007-02-14 14:27:59.000000000 -0800
@@ -7,7 +7,7 @@
use XSLoader ();
our @ISA = qw(Tie::Hash);
-our $VERSION = "1.06";
+our $VERSION = "1.07";
XSLoader::load 'NDBM_File', $VERSION;
==== //depot/maint-5.8/perl/ext/NDBM_File/NDBM_File.xs#3 (text) ====
Index: perl/ext/NDBM_File/NDBM_File.xs
--- perl/ext/NDBM_File/NDBM_File.xs#2~18080~ 2002-11-03 21:23:04.000000000
-0800
+++ perl/ext/NDBM_File/NDBM_File.xs 2007-02-14 14:27:59.000000000 -0800
@@ -16,6 +16,20 @@
typedef datum datum_key ;
typedef datum datum_value ;
+
+#if defined(__cplusplus) && defined(HAS_GDBM)
+/* gdbm's header file used for compatibility with gdbm */
+/* isn't compatible to C++ syntax, so we need these */
+/* declarations to make everyone happy. */
+EXTERN_C DBM *dbm_open(const char *, int, mode_t);
+EXTERN_C void dbm_close(DBM *);
+EXTERN_C datum dbm_fetch(DBM *, datum);
+EXTERN_C int dbm_store(DBM *, datum, datum, int);
+EXTERN_C int dbm_delete(DBM *, datum);
+EXTERN_C datum dbm_firstkey(DBM *);
+EXTERN_C datum dbm_nextkey(DBM *);
+#endif
+
MODULE = NDBM_File PACKAGE = NDBM_File PREFIX = ndbm_
NDBM_File
==== //depot/maint-5.8/perl/ext/NDBM_File/typemap#4 (text) ====
Index: perl/ext/NDBM_File/typemap
--- perl/ext/NDBM_File/typemap#3~22046~ 2004-01-02 08:57:17.000000000 -0800
+++ perl/ext/NDBM_File/typemap 2007-02-14 14:27:59.000000000 -0800
@@ -25,18 +25,18 @@
$var.dsize = (int)PL_na;
}
else {
- $var.dptr = \"\";
+ $var.dptr = (char *)\"\";
$var.dsize = 0;
}
T_GDATUM
UNIMPLEMENTED
OUTPUT
T_DATUM_K
- sv_setpvn($arg, $var.dptr, $var.dsize);
- DBM_ckFilter($arg, filter_fetch_key,\"filter_fetch_key\");
+ sv_setpvn($arg, (char *)$var.dptr, $var.dsize);
+ DBM_ckFilter($arg, filter_fetch_key, \"filter_fetch_key\");
T_DATUM_V
- sv_setpvn($arg, $var.dptr, $var.dsize);
- DBM_ckFilter($arg, filter_fetch_value,\"filter_fetch_value\");
+ sv_setpvn($arg, (char *)$var.dptr, $var.dsize);
+ DBM_ckFilter($arg, filter_fetch_value, \"filter_fetch_value\");
T_GDATUM
sv_usepvn($arg, $var.dptr, $var.dsize);
T_PTROBJ
==== //depot/maint-5.8/perl/ext/ODBM_File/t/odbm.t#2 (xtext) ====
Index: perl/ext/ODBM_File/t/odbm.t
--- perl/ext/ODBM_File/t/odbm.t#1~20271~ 2003-07-28 08:18:57.000000000
-0700
+++ perl/ext/ODBM_File/t/odbm.t 2007-02-14 14:27:59.000000000 -0800
@@ -6,7 +6,7 @@
chdir 't' if -d 't';
@INC = '../lib';
require Config; import Config;
- if ($Config{'extensions'} !~ /\bODBM_File\b/) {
+ if ($Config{'extensions'} !~ /\bODBM_File\b/ or $Config{'d_cplusplus'}) {
print "1..0 # Skip: ODBM_File was not built\n";
exit 0;
}
==== //depot/maint-5.8/perl/ext/SDBM_File/SDBM_File.pm#5 (text) ====
Index: perl/ext/SDBM_File/SDBM_File.pm
--- perl/ext/SDBM_File/SDBM_File.pm#4~26806~ 2006-01-12 11:23:34.000000000
-0800
+++ perl/ext/SDBM_File/SDBM_File.pm 2007-02-14 14:27:59.000000000 -0800
@@ -7,7 +7,7 @@
use XSLoader ();
our @ISA = qw(Tie::Hash);
-our $VERSION = "1.05";
+our $VERSION = "1.06";
XSLoader::load 'SDBM_File', $VERSION;
==== //depot/maint-5.8/perl/ext/SDBM_File/SDBM_File.xs#4 (text) ====
Index: perl/ext/SDBM_File/SDBM_File.xs
--- perl/ext/SDBM_File/SDBM_File.xs#3~25551~ 2005-09-21 11:21:10.000000000
-0700
+++ perl/ext/SDBM_File/SDBM_File.xs 2007-02-14 14:27:59.000000000 -0800
@@ -53,16 +53,18 @@
sdbm_DESTROY(db)
SDBM_File db
CODE:
- sdbm_close(db->dbp);
- if (db->filter_fetch_key)
- SvREFCNT_dec(db->filter_fetch_key) ;
- if (db->filter_store_key)
- SvREFCNT_dec(db->filter_store_key) ;
- if (db->filter_fetch_value)
- SvREFCNT_dec(db->filter_fetch_value) ;
- if (db->filter_store_value)
- SvREFCNT_dec(db->filter_store_value) ;
- safefree(db) ;
+ if (db) {
+ sdbm_close(db->dbp);
+ if (db->filter_fetch_key)
+ SvREFCNT_dec(db->filter_fetch_key) ;
+ if (db->filter_store_key)
+ SvREFCNT_dec(db->filter_store_key) ;
+ if (db->filter_fetch_value)
+ SvREFCNT_dec(db->filter_fetch_value) ;
+ if (db->filter_store_value)
+ SvREFCNT_dec(db->filter_store_value) ;
+ safefree(db) ;
+ }
datum_value
sdbm_FETCH(db, key)
==== //depot/maint-5.8/perl/ext/SDBM_File/sdbm/sdbm.c#4 (text) ====
Index: perl/ext/SDBM_File/sdbm/sdbm.c
--- perl/ext/SDBM_File/sdbm/sdbm.c#3~25490~ 2005-09-19 08:16:29.000000000
-0700
+++ perl/ext/SDBM_File/sdbm/sdbm.c 2007-02-14 14:27:59.000000000 -0800
@@ -60,7 +60,7 @@
#define OFF_PAG(off) (long) (off) * PBLKSIZ
#define OFF_DIR(off) (long) (off) * DBLKSIZ
-static long masks[] = {
+static const long masks[] = {
000000000000, 000000000001, 000000000003, 000000000007,
000000000017, 000000000037, 000000000077, 000000000177,
000000000377, 000000000777, 000000001777, 000000003777,
End of Patch.