helly Thu Jun 12 15:53:40 2003 EDT
Modified files:
/php4/ext/dba dba.c
Log:
Bugfix #2397: dba_open locking error with db3
Index: php4/ext/dba/dba.c
diff -u php4/ext/dba/dba.c:1.91 php4/ext/dba/dba.c:1.92
--- php4/ext/dba/dba.c:1.91 Tue Jun 10 16:03:26 2003
+++ php4/ext/dba/dba.c Thu Jun 12 15:53:40 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba.c,v 1.91 2003/06/10 20:03:26 imajes Exp $ */
+/* $Id: dba.c,v 1.92 2003/06/12 19:53:40 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -636,15 +636,20 @@
lock_mode = (lock_flag & DBA_LOCK_WRITER) ? LOCK_EX : 0;
file_mode = "r+b";
break;
- case 'n':
- modenr = DBA_TRUNC;
- lock_mode = (lock_flag & DBA_LOCK_TRUNC) ? LOCK_EX : 0;
- file_mode = "w+b";
- break;
case 'c':
modenr = DBA_CREAT;
lock_mode = (lock_flag & DBA_LOCK_CREAT) ? LOCK_EX : 0;
file_mode = "a+b";
+ if (!lock_mode || !lock_dbf) {
+ break;
+ }
+ /* When we lock the db file it will be created before the
handler
+ * even tries to open it, hence we must change to truncate
mode.
+ */
+ case 'n':
+ modenr = DBA_TRUNC;
+ lock_mode = (lock_flag & DBA_LOCK_TRUNC) ? LOCK_EX : 0;
+ file_mode = "w+b";
break;
default:
modenr = 0;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php