]> granicus.if.org Git - php/commitdiff
fix calling user close func when it isn't open
authorArpad Ray <arpad@php.net>
Wed, 2 Nov 2011 16:53:22 +0000 (16:53 +0000)
committerArpad Ray <arpad@php.net>
Wed, 2 Nov 2011 16:53:22 +0000 (16:53 +0000)
ext/session/session.c
ext/session/tests/session_set_save_handler_class_014.phpt
ext/session/tests/session_set_save_handler_class_015.phpt [new file with mode: 0644]

index ac3fda0a6988dc3b992c96225aad94c78ededd6c..faa45824aa776655fcf04f4a2429f684002d1f15 100644 (file)
@@ -1649,7 +1649,6 @@ static PHP_FUNCTION(session_set_save_handler)
                        remove_user_shutdown_function("session_shutdown" TSRMLS_CC);
                }
 
-               PS(mod_user_implemented) = 1;
                if (PS(mod) && PS(session_status) == php_session_none && PS(mod) != &ps_mod_user) {
                        zend_alter_ini_entry("session.save_handler", sizeof("session.save_handler"), "user", sizeof("user")-1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
                }
@@ -1674,7 +1673,6 @@ static PHP_FUNCTION(session_set_save_handler)
                efree(name);
        }
        
-       PS(mod_user_implemented) = 1;
 
        if (PS(mod) && PS(mod) != &ps_mod_user) {
                zend_alter_ini_entry("session.save_handler", sizeof("session.save_handler"), "user", sizeof("user")-1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
index 51fc690dfe00aeb9f5f2cef54615f14d5cdc95c6..ea62beb0ff57eff2aec7ed93214f14229839372c 100644 (file)
@@ -28,5 +28,3 @@ session_start();
 *** Testing session_set_save_handler() : calling default handler when save_handler=user ***
 
 Fatal error: SessionHandler::open(): Cannot call default session handler in %s on line %d
-
-Fatal error: Unknown: Cannot call default session handler in %s on line %d
diff --git a/ext/session/tests/session_set_save_handler_class_015.phpt b/ext/session/tests/session_set_save_handler_class_015.phpt
new file mode 100644 (file)
index 0000000..3bef51b
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+Test session_set_save_handler() : register session handler but don't start
+--INI--
+session.save_handler=files
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+/* 
+ * Prototype : bool session_set_save_handler(SessionHandler $handler [, bool $register_shutdown_function = true])
+ * Description : Sets user-level session storage functions
+ * Source code : ext/session/session.c 
+ */
+
+echo "*** Testing session_set_save_handler() : register session handler but don't start  ***\n";
+
+session_set_save_handler(new SessionHandler);
+
+--EXPECTF--
+*** Testing session_set_save_handler() : register session handler but don't start  ***