From: Leigh Date: Tue, 26 Jun 2012 13:57:10 +0000 (+0100) Subject: Tests, fixes and optimisations X-Git-Tag: php-5.6.0alpha1~384^2~17^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b794cce4fd4a6158002f3e8a814a30891cefbcde;p=php Tests, fixes and optimisations * Amended existing tests to cater for new functionality. * Implemented fixes and optimisations recommended by NikiC * Added create_sid to the registered interface. This was breaking tests. It also now breaks BC for people implementing the interface directly instead of extending the class. --- diff --git a/ext/session/mod_user.h b/ext/session/mod_user.h index fd149ccff4..6b2998c426 100644 --- a/ext/session/mod_user.h +++ b/ext/session/mod_user.h @@ -24,6 +24,6 @@ extern ps_module ps_mod_user; #define ps_user_ptr &ps_mod_user -PS_FUNCS(user); +PS_FUNCS_SID(user); #endif diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c index 340c2ca97a..ea53af9ebe 100644 --- a/ext/session/mod_user_class.c +++ b/ext/session/mod_user_class.c @@ -148,12 +148,12 @@ PHP_METHOD(SessionHandler, create_sid) { char *id; - zend_parse_parameters_none(); + if (zend_parse_parameters_none() == FAILURE) { + return; + } id = PS(default_mod)->s_create_sid(&PS(mod_data), NULL TSRMLS_CC); - RETVAL_STRING(id, 1); - efree(id); - return; + RETURN_STRING(id, 0); } /* }}} */ diff --git a/ext/session/session.c b/ext/session/session.c index 4b93ffa74a..d8de5769fc 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -2083,6 +2083,7 @@ static const zend_function_entry php_session_iface_functions[] = { PHP_ABSTRACT_ME(SessionHandlerInterface, write, arginfo_session_class_write) PHP_ABSTRACT_ME(SessionHandlerInterface, destroy, arginfo_session_class_destroy) PHP_ABSTRACT_ME(SessionHandlerInterface, gc, arginfo_session_class_gc) + PHP_ABSTRACT_ME(SessionHandlerInterface, create_sid, arginfo_session_class_create_sid) { NULL, NULL, NULL } }; /* }}} */ @@ -2096,7 +2097,6 @@ static const zend_function_entry php_session_class_functions[] = { PHP_ME(SessionHandler, write, arginfo_session_class_write, ZEND_ACC_PUBLIC) PHP_ME(SessionHandler, destroy, arginfo_session_class_destroy, ZEND_ACC_PUBLIC) PHP_ME(SessionHandler, gc, arginfo_session_class_gc, ZEND_ACC_PUBLIC) -/* Added to the class but not the interface, to maintain backwards compatibility */ PHP_ME(SessionHandler, create_sid, arginfo_session_class_create_sid, ZEND_ACC_PUBLIC) { NULL, NULL, NULL } }; diff --git a/ext/session/tests/session_set_save_handler_class_002.phpt b/ext/session/tests/session_set_save_handler_class_002.phpt index 6fb831f695..4195a163a7 100644 --- a/ext/session/tests/session_set_save_handler_class_002.phpt +++ b/ext/session/tests/session_set_save_handler_class_002.phpt @@ -53,6 +53,10 @@ class MySession2 extends SessionHandler { } return true; } + + public function create_sid() { + return parent::create_sid(); + } } $handler = new MySession2; diff --git a/ext/session/tests/session_set_save_handler_iface_001.phpt b/ext/session/tests/session_set_save_handler_iface_001.phpt index 39a4b9975b..0576341a10 100644 --- a/ext/session/tests/session_set_save_handler_iface_001.phpt +++ b/ext/session/tests/session_set_save_handler_iface_001.phpt @@ -53,6 +53,10 @@ class MySession2 implements SessionHandlerInterface { } return true; } + + public function create_sid() { + return md5(mt_rand()); + } } $handler = new MySession2;