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.

Reply via email to