]> granicus.if.org Git - php/commitdiff
Warnings and Notices when lock modifiers for dba_(p)open are used wrong.
authorMarcus Boerger <helly@php.net>
Wed, 11 Dec 2002 10:37:38 +0000 (10:37 +0000)
committerMarcus Boerger <helly@php.net>
Wed, 11 Dec 2002 10:37:38 +0000 (10:37 +0000)
This finally closes bug #20828 (and i hope it must not be reopened)

ext/dba/dba.c

index 1f2badd30823d6e636f283e93d17c1ede11c7c17..c110d7322905bd4cde62c588aac8720d804074ee 100644 (file)
@@ -430,16 +430,21 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
        if (pmode[0] && (pmode[1]=='d' || pmode[1]=='l' || pmode[1]=='-')) { /* force lock on db file or lck file or disable locking */
                switch (pmode[1]) {
                case 'd':
-                       if ((hptr->flags & DBA_LOCK_ALL) == 0) {
-                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_NOTICE, "Handler %s does locking internally", hptr->name);
-                       }
                        lock_dbf = 1;
                        /* no break */
                case 'l':
                        lock_flag = DBA_LOCK_ALL;
+                       if ((hptr->flags & DBA_LOCK_ALL) == 0) {
+                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_NOTICE, "Handler %s does locking internally", hptr->name);
+                       }
                        break;
                default:
                case '-':
+                       if ((hptr->flags & DBA_LOCK_ALL) == 0) {
+                               php_error_docref2(NULL TSRMLS_CC, Z_STRVAL_PP(args[0]), Z_STRVAL_PP(args[1]), E_WARNING, "Locking cannot be disabled for handler %s", hptr->name);
+                               FREENOW;
+                               RETURN_FALSE;
+                       }
                        lock_flag = 0;
                        break;
                }