File tree 1 file changed +10
-5
lines changed
1 file changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -636,15 +636,20 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
636
636
lock_mode = (lock_flag & DBA_LOCK_WRITER ) ? LOCK_EX : 0 ;
637
637
file_mode = "r+b" ;
638
638
break ;
639
- case 'n' :
640
- modenr = DBA_TRUNC ;
641
- lock_mode = (lock_flag & DBA_LOCK_TRUNC ) ? LOCK_EX : 0 ;
642
- file_mode = "w+b" ;
643
- break ;
644
639
case 'c' :
645
640
modenr = DBA_CREAT ;
646
641
lock_mode = (lock_flag & DBA_LOCK_CREAT ) ? LOCK_EX : 0 ;
647
642
file_mode = "a+b" ;
643
+ if (!lock_mode || !lock_dbf ) {
644
+ break ;
645
+ }
646
+ /* When we lock the db file it will be created before the handler
647
+ * even tries to open it, hence we must change to truncate mode.
648
+ */
649
+ case 'n' :
650
+ modenr = DBA_TRUNC ;
651
+ lock_mode = (lock_flag & DBA_LOCK_TRUNC ) ? LOCK_EX : 0 ;
652
+ file_mode = "w+b" ;
648
653
break ;
649
654
default :
650
655
modenr = 0 ;
You can’t perform that action at this time.
0 commit comments