@@ -940,31 +940,30 @@ PHP_METHOD(SQLite3, createFunction)
940940	php_sqlite3_db_object  * db_obj ;
941941	zval  * object  =  ZEND_THIS ;
942942	php_sqlite3_func  * func ;
943- 	char  * sql_func ;
944- 	size_t  sql_func_len ;
943+ 	zend_string  * sql_func ;
945944	zend_fcall_info  fci  =  empty_fcall_info ;
946945	zend_fcall_info_cache  fcc  =  empty_fcall_info_cache ;
947946	zend_long  sql_func_num_args  =  -1 ;
948947	zend_long  flags  =  0 ;
949948	db_obj  =  Z_SQLITE3_DB_P (object );
950949
951- 	if  (zend_parse_parameters (ZEND_NUM_ARGS (), "sF |ll" , & sql_func ,  & sql_func_len , & fci , & fcc , & sql_func_num_args , & flags ) ==  FAILURE ) {
950+ 	if  (zend_parse_parameters (ZEND_NUM_ARGS (), "SF |ll" , & sql_func , & fci , & fcc , & sql_func_num_args , & flags ) ==  FAILURE ) {
952951		zend_release_fcall_info_cache (& fcc );
953952		RETURN_THROWS ();
954953	}
955954
956955	SQLITE3_CHECK_INITIALIZED_FREE_TRAMPOLINE (db_obj , db_obj -> initialised , SQLite3 , & fcc );
957956
958- 	if  (!sql_func_len ) {
957+ 	if  (!ZSTR_LEN ( sql_func ) ) {
959958		/* TODO Add warning/ValueError that name cannot be empty? */ 
960959		zend_release_fcall_info_cache (& fcc );
961960		RETURN_FALSE ;
962961	}
963962
964963	func  =  (php_sqlite3_func  * )ecalloc (1 , sizeof (* func ));
965964
966- 	if  (sqlite3_create_function (db_obj -> db , sql_func , sql_func_num_args , flags  | SQLITE_UTF8 , func , php_sqlite3_callback_func , NULL , NULL ) ==  SQLITE_OK ) {
967- 		func -> func_name  =  estrdup (sql_func );
965+ 	if  (sqlite3_create_function (db_obj -> db , ZSTR_VAL ( sql_func ) , sql_func_num_args , flags  | SQLITE_UTF8 , func , php_sqlite3_callback_func , NULL , NULL ) ==  SQLITE_OK ) {
966+ 		func -> func_name  =  zend_string_copy (sql_func );
968967		zend_fcc_dup (& func -> func , & fcc );
969968
970969		func -> argc  =  sql_func_num_args ;
@@ -986,16 +985,15 @@ PHP_METHOD(SQLite3, createAggregate)
986985	php_sqlite3_db_object  * db_obj ;
987986	zval  * object  =  ZEND_THIS ;
988987	php_sqlite3_func  * func ;
989- 	char  * sql_func ;
990- 	size_t  sql_func_len ;
988+ 	zend_string  * sql_func ;
991989	zend_fcall_info  step_fci  =  empty_fcall_info ;
992990	zend_fcall_info_cache  step_fcc  =  empty_fcall_info_cache ;
993991	zend_fcall_info  fini_fci  =  empty_fcall_info ;
994992	zend_fcall_info_cache  fini_fcc  =  empty_fcall_info_cache ;
995993	zend_long  sql_func_num_args  =  -1 ;
996994	db_obj  =  Z_SQLITE3_DB_P (object );
997995
998- 	if  (zend_parse_parameters (ZEND_NUM_ARGS (), "sFF |l" , & sql_func ,  & sql_func_len , & step_fci , & step_fcc , & fini_fci , & fini_fcc , & sql_func_num_args ) ==  FAILURE ) {
996+ 	if  (zend_parse_parameters (ZEND_NUM_ARGS (), "SFF |l" , & sql_func , & step_fci , & step_fcc , & fini_fci , & fini_fcc , & sql_func_num_args ) ==  FAILURE ) {
999997		goto error ;
1000998	}
1001999
@@ -1005,15 +1003,15 @@ PHP_METHOD(SQLite3, createAggregate)
10051003		goto error ;
10061004	}
10071005
1008- 	if  (!sql_func_len ) {
1006+ 	if  (!ZSTR_LEN ( sql_func ) ) {
10091007		/* TODO Add warning/ValueError that name cannot be empty? */ 
10101008		goto error ;
10111009	}
10121010
10131011	func  =  (php_sqlite3_func  * )ecalloc (1 , sizeof (* func ));
10141012
1015- 	if  (sqlite3_create_function (db_obj -> db , sql_func , sql_func_num_args , SQLITE_UTF8 , func , NULL , php_sqlite3_callback_step , php_sqlite3_callback_final ) ==  SQLITE_OK ) {
1016- 		func -> func_name  =  estrdup (sql_func );
1013+ 	if  (sqlite3_create_function (db_obj -> db , ZSTR_VAL ( sql_func ) , sql_func_num_args , SQLITE_UTF8 , func , NULL , php_sqlite3_callback_step , php_sqlite3_callback_final ) ==  SQLITE_OK ) {
1014+ 		func -> func_name  =  zend_string_copy (sql_func );
10171015
10181016		zend_fcc_dup (& func -> step , & step_fcc );
10191017		zend_fcc_dup (& func -> fini , & fini_fcc );
@@ -1040,27 +1038,26 @@ PHP_METHOD(SQLite3, createCollation)
10401038	php_sqlite3_db_object  * db_obj ;
10411039	zval  * object  =  ZEND_THIS ;
10421040	php_sqlite3_collation  * collation ;
1043- 	char  * collation_name ;
1044- 	size_t  collation_name_len ;
1041+ 	zend_string  * collation_name ;
10451042	zend_fcall_info  fci  =  empty_fcall_info ;
10461043	zend_fcall_info_cache  fcc  =  empty_fcall_info_cache ;
10471044	db_obj  =  Z_SQLITE3_DB_P (object );
10481045
1049- 	if  (zend_parse_parameters (ZEND_NUM_ARGS (), "sF " , & collation_name ,  & collation_name_len , & fci , & fcc ) ==  FAILURE ) {
1046+ 	if  (zend_parse_parameters (ZEND_NUM_ARGS (), "SF " , & collation_name , & fci , & fcc ) ==  FAILURE ) {
10501047		RETURN_THROWS ();
10511048	}
10521049
10531050	SQLITE3_CHECK_INITIALIZED_FREE_TRAMPOLINE (db_obj , db_obj -> initialised , SQLite3 , & fcc );
10541051
1055- 	if  (!collation_name_len ) {
1052+ 	if  (!ZSTR_LEN ( collation_name ) ) {
10561053		/* TODO Add warning/ValueError that name cannot be empty? */ 
10571054		zend_release_fcall_info_cache (& fcc );
10581055		RETURN_FALSE ;
10591056	}
10601057
10611058	collation  =  (php_sqlite3_collation  * )ecalloc (1 , sizeof (* collation ));
1062- 	if  (sqlite3_create_collation (db_obj -> db , collation_name , SQLITE_UTF8 , collation , php_sqlite3_callback_compare ) ==  SQLITE_OK ) {
1063- 		collation -> collation_name  =  estrdup (collation_name );
1059+ 	if  (sqlite3_create_collation (db_obj -> db , ZSTR_VAL ( collation_name ) , SQLITE_UTF8 , collation , php_sqlite3_callback_compare ) ==  SQLITE_OK ) {
1060+ 		collation -> collation_name  =  zend_string_copy (collation_name );
10641061
10651062		zend_fcc_dup (& collation -> cmp_func , & fcc );
10661063
@@ -2193,10 +2190,10 @@ static void php_sqlite3_object_free_storage(zend_object *object) /* {{{ */
21932190		func  =  intern -> funcs ;
21942191		intern -> funcs  =  func -> next ;
21952192		if  (intern -> initialised  &&  intern -> db ) {
2196- 			sqlite3_create_function (intern -> db , func -> func_name , func -> argc , SQLITE_UTF8 , func , NULL , NULL , NULL );
2193+ 			sqlite3_create_function (intern -> db , ZSTR_VAL ( func -> func_name ) , func -> argc , SQLITE_UTF8 , func , NULL , NULL , NULL );
21972194		}
21982195
2199- 		efree (( char * ) func -> func_name );
2196+ 		zend_string_release ( func -> func_name );
22002197
22012198		if  (ZEND_FCC_INITIALIZED (func -> func )) {
22022199			zend_fcc_dtor (& func -> func );
@@ -2214,9 +2211,9 @@ static void php_sqlite3_object_free_storage(zend_object *object) /* {{{ */
22142211		collation  =  intern -> collations ;
22152212		intern -> collations  =  collation -> next ;
22162213		if  (intern -> initialised  &&  intern -> db ){
2217- 			sqlite3_create_collation (intern -> db , collation -> collation_name , SQLITE_UTF8 , NULL , NULL );
2214+ 			sqlite3_create_collation (intern -> db , ZSTR_VAL ( collation -> collation_name ) , SQLITE_UTF8 , NULL , NULL );
22182215		}
2219- 		efree (( char * ) collation -> collation_name );
2216+ 		zend_string_release ( collation -> collation_name );
22202217		if  (ZEND_FCC_INITIALIZED (collation -> cmp_func )) {
22212218			zend_fcc_dtor (& collation -> cmp_func );
22222219		}
0 commit comments