]> granicus.if.org Git - php/commitdiff
- return correct hash constants
authorMarcus Boerger <helly@php.net>
Sun, 21 Sep 2003 19:36:40 +0000 (19:36 +0000)
committerMarcus Boerger <helly@php.net>
Sun, 21 Sep 2003 19:36:40 +0000 (19:36 +0000)
- check for 'memory' in sqlite_factory() too (noticed by John Coggeshal)

ext/sqlite/sqlite.c

index 06b72eb2e132a384a92c067b225438a1ab10bbd5..e33c22c15390517536f8ef7f3394c7398fb5bd50 100644 (file)
@@ -757,7 +757,7 @@ typedef struct _sqlite_object {
 
 static int sqlite_free_persistent(list_entry *le, void *ptr TSRMLS_DC)
 {
-       return le->ptr == ptr;
+       return le->ptr == ptr ? ZEND_HASH_APPLY_REMOVE : ZEND_HASH_APPLY_KEEP;
 }
 
 static void sqlite_object_dtor(void *object, zend_object_handle handle TSRMLS_DC)
@@ -1172,14 +1172,16 @@ PHP_FUNCTION(sqlite_factory)
                zval_dtor(errmsg);
        }
 
-       if (PG(safe_mode) && (!php_checkuid(filename, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
-               php_std_error_handling();
-               RETURN_NULL();
-       }
-
-       if (php_check_open_basedir(filename TSRMLS_CC)) {
-               php_std_error_handling();
-               RETURN_NULL();
+       if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) {
+               if (PG(safe_mode) && (!php_checkuid(filename, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
+                       php_std_error_handling();
+                       RETURN_NULL();
+               }
+       
+               if (php_check_open_basedir(filename TSRMLS_CC)) {
+                       php_std_error_handling();
+                       RETURN_NULL();
+               }
        }
 
        php_sqlite_open(filename, mode, NULL, return_value, errmsg, return_value TSRMLS_CC);