summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/session/mod_user_class.c1
-rw-r--r--ext/session/tests/bug63379.phpt57
-rw-r--r--ext/session/tests/bug63379_nodestroy.phpt57
3 files changed, 114 insertions, 1 deletions
diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c
index 70d2f40df1..4edac28b86 100644
--- a/ext/session/mod_user_class.c
+++ b/ext/session/mod_user_class.c
@@ -121,7 +121,6 @@ PHP_METHOD(SessionHandler, destroy)
return;
}
- PS(mod_user_is_open) = 0;
RETVAL_BOOL(SUCCESS == PS(default_mod)->s_destroy(&PS(mod_data), key TSRMLS_CC));
}
/* }}} */
diff --git a/ext/session/tests/bug63379.phpt b/ext/session/tests/bug63379.phpt
new file mode 100644
index 0000000000..80941828c8
--- /dev/null
+++ b/ext/session/tests/bug63379.phpt
@@ -0,0 +1,57 @@
+--TEST--
+Bug #63379: Warning when using session_regenerate_id(TRUE) with a SessionHandler
+--INI--
+session.save_handler=files
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+$handler = new SessionHandler;
+session_set_save_handler($handler);
+
+session_start();
+
+$_SESSION['foo'] = 'hello';
+var_dump($_SESSION);
+
+session_regenerate_id(true);
+
+echo "*** Regenerated ***\n";
+var_dump($_SESSION);
+
+$_SESSION['bar'] = 'world';
+
+var_dump($_SESSION);
+
+session_write_close();
+session_unset();
+
+session_start();
+var_dump($_SESSION);
+
+--EXPECTF--
+array(1) {
+ ["foo"]=>
+ string(5) "hello"
+}
+*** Regenerated ***
+array(1) {
+ ["foo"]=>
+ string(5) "hello"
+}
+array(2) {
+ ["foo"]=>
+ string(5) "hello"
+ ["bar"]=>
+ string(5) "world"
+}
+array(2) {
+ ["foo"]=>
+ string(5) "hello"
+ ["bar"]=>
+ string(5) "world"
+}
diff --git a/ext/session/tests/bug63379_nodestroy.phpt b/ext/session/tests/bug63379_nodestroy.phpt
new file mode 100644
index 0000000000..03a9ae74d9
--- /dev/null
+++ b/ext/session/tests/bug63379_nodestroy.phpt
@@ -0,0 +1,57 @@
+--TEST--
+Bug #63379: Warning when using session_regenerate_id(TRUE) with a SessionHandler
+--INI--
+session.save_handler=files
+session.name=PHPSESSID
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--FILE--
+<?php
+
+ob_start();
+
+$handler = new SessionHandler;
+session_set_save_handler($handler);
+
+session_start();
+
+$_SESSION['foo'] = 'hello';
+var_dump($_SESSION);
+
+session_regenerate_id(false);
+
+echo "*** Regenerated ***\n";
+var_dump($_SESSION);
+
+$_SESSION['bar'] = 'world';
+
+var_dump($_SESSION);
+
+session_write_close();
+session_unset();
+
+session_start();
+var_dump($_SESSION);
+
+--EXPECTF--
+array(1) {
+ ["foo"]=>
+ string(5) "hello"
+}
+*** Regenerated ***
+array(1) {
+ ["foo"]=>
+ string(5) "hello"
+}
+array(2) {
+ ["foo"]=>
+ string(5) "hello"
+ ["bar"]=>
+ string(5) "world"
+}
+array(2) {
+ ["foo"]=>
+ string(5) "hello"
+ ["bar"]=>
+ string(5) "world"
+}