perl 5.003_05: ext/ODBM_File/ODBM_File.xs
Perl 5 Porters [Sat, 7 Sep 1996 23:55:22 +0000 (23:55 +0000)]
Attempt to correct for "Bad free" in Ultrix and HPUX versions of
odbm.

ext/ODBM_File/ODBM_File.xs

index c1b405f..92b443c 100644 (file)
 #  endif
 #endif
 
+#ifdef DBM_BUG_DUPLICATE_FREE 
+/*
+ * DBM on at least Ultrix and HPUX call dbmclose() from dbminit(),
+ * resulting in duplicate free() because dbmclose() does *not*
+ * check if it has already been called for this DBM.
+ * If some malloc/free calls have been done between dbmclose() and
+ * the next dbminit(), the memory might be used for something else when
+ * it is freed.
+ * Verified to work on ultrix4.3.  Probably will work on HP/UX.
+ * Set DBM_BUG_DUPLICATE_FREE in the extension hint file.
+ */
+/* Close the previous dbm, and fail to open a new dbm */
+#define dbmclose()     ((void) dbminit("/tmp/x/y/z/z/y"))
+#endif
+
 #include <fcntl.h>
 
 typedef void* ODBM_File;