@@ -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