helly Thu Jun 12 15:55:16 2003 EDT
Modified files: (Branch: PHP_4_3)
/php4/ext/dba dba.c
Log:
MFH: Bugfix #2397: dba_open locking error with db3
Index: php4/ext/dba/dba.c
diff -u php4/ext/dba/dba.c:1.61.2.16 php4/ext/dba/dba.c:1.61.2.17
--- php4/ext/dba/dba.c:1.61.2.16 Thu May 29 10:16:25 2003
+++ php4/ext/dba/dba.c Thu Jun 12 15:55:16 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dba.c,v 1.61.2.16 2003/05/29 14:16:25 helly Exp $ */
+/* $Id: dba.c,v 1.61.2.17 2003/06/12 19:55:16 helly Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -642,15 +642,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