@@ -940,31 +940,30 @@ PHP_METHOD(SQLite3, createFunction)
940
940
php_sqlite3_db_object * db_obj ;
941
941
zval * object = ZEND_THIS ;
942
942
php_sqlite3_func * func ;
943
- char * sql_func ;
944
- size_t sql_func_len ;
943
+ zend_string * sql_func ;
945
944
zend_fcall_info fci = empty_fcall_info ;
946
945
zend_fcall_info_cache fcc = empty_fcall_info_cache ;
947
946
zend_long sql_func_num_args = -1 ;
948
947
zend_long flags = 0 ;
949
948
db_obj = Z_SQLITE3_DB_P (object );
950
949
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 ) {
952
951
zend_release_fcall_info_cache (& fcc );
953
952
RETURN_THROWS ();
954
953
}
955
954
956
955
SQLITE3_CHECK_INITIALIZED_FREE_TRAMPOLINE (db_obj , db_obj -> initialised , SQLite3 , & fcc );
957
956
958
- if (!sql_func_len ) {
957
+ if (!ZSTR_LEN ( sql_func ) ) {
959
958
/* TODO Add warning/ValueError that name cannot be empty? */
960
959
zend_release_fcall_info_cache (& fcc );
961
960
RETURN_FALSE ;
962
961
}
963
962
964
963
func = (php_sqlite3_func * )ecalloc (1 , sizeof (* func ));
965
964
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 );
968
967
zend_fcc_dup (& func -> func , & fcc );
969
968
970
969
func -> argc = sql_func_num_args ;
@@ -986,16 +985,15 @@ PHP_METHOD(SQLite3, createAggregate)
986
985
php_sqlite3_db_object * db_obj ;
987
986
zval * object = ZEND_THIS ;
988
987
php_sqlite3_func * func ;
989
- char * sql_func ;
990
- size_t sql_func_len ;
988
+ zend_string * sql_func ;
991
989
zend_fcall_info step_fci = empty_fcall_info ;
992
990
zend_fcall_info_cache step_fcc = empty_fcall_info_cache ;
993
991
zend_fcall_info fini_fci = empty_fcall_info ;
994
992
zend_fcall_info_cache fini_fcc = empty_fcall_info_cache ;
995
993
zend_long sql_func_num_args = -1 ;
996
994
db_obj = Z_SQLITE3_DB_P (object );
997
995
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 ) {
999
997
goto error ;
1000
998
}
1001
999
@@ -1005,15 +1003,15 @@ PHP_METHOD(SQLite3, createAggregate)
1005
1003
goto error ;
1006
1004
}
1007
1005
1008
- if (!sql_func_len ) {
1006
+ if (!ZSTR_LEN ( sql_func ) ) {
1009
1007
/* TODO Add warning/ValueError that name cannot be empty? */
1010
1008
goto error ;
1011
1009
}
1012
1010
1013
1011
func = (php_sqlite3_func * )ecalloc (1 , sizeof (* func ));
1014
1012
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 );
1017
1015
1018
1016
zend_fcc_dup (& func -> step , & step_fcc );
1019
1017
zend_fcc_dup (& func -> fini , & fini_fcc );
@@ -1040,27 +1038,26 @@ PHP_METHOD(SQLite3, createCollation)
1040
1038
php_sqlite3_db_object * db_obj ;
1041
1039
zval * object = ZEND_THIS ;
1042
1040
php_sqlite3_collation * collation ;
1043
- char * collation_name ;
1044
- size_t collation_name_len ;
1041
+ zend_string * collation_name ;
1045
1042
zend_fcall_info fci = empty_fcall_info ;
1046
1043
zend_fcall_info_cache fcc = empty_fcall_info_cache ;
1047
1044
db_obj = Z_SQLITE3_DB_P (object );
1048
1045
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 ) {
1050
1047
RETURN_THROWS ();
1051
1048
}
1052
1049
1053
1050
SQLITE3_CHECK_INITIALIZED_FREE_TRAMPOLINE (db_obj , db_obj -> initialised , SQLite3 , & fcc );
1054
1051
1055
- if (!collation_name_len ) {
1052
+ if (!ZSTR_LEN ( collation_name ) ) {
1056
1053
/* TODO Add warning/ValueError that name cannot be empty? */
1057
1054
zend_release_fcall_info_cache (& fcc );
1058
1055
RETURN_FALSE ;
1059
1056
}
1060
1057
1061
1058
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 );
1064
1061
1065
1062
zend_fcc_dup (& collation -> cmp_func , & fcc );
1066
1063
@@ -2193,10 +2190,10 @@ static void php_sqlite3_object_free_storage(zend_object *object) /* {{{ */
2193
2190
func = intern -> funcs ;
2194
2191
intern -> funcs = func -> next ;
2195
2192
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 );
2197
2194
}
2198
2195
2199
- efree (( char * ) func -> func_name );
2196
+ zend_string_release ( func -> func_name );
2200
2197
2201
2198
if (ZEND_FCC_INITIALIZED (func -> func )) {
2202
2199
zend_fcc_dtor (& func -> func );
@@ -2214,9 +2211,9 @@ static void php_sqlite3_object_free_storage(zend_object *object) /* {{{ */
2214
2211
collation = intern -> collations ;
2215
2212
intern -> collations = collation -> next ;
2216
2213
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 );
2218
2215
}
2219
- efree (( char * ) collation -> collation_name );
2216
+ zend_string_release ( collation -> collation_name );
2220
2217
if (ZEND_FCC_INITIALIZED (collation -> cmp_func )) {
2221
2218
zend_fcc_dtor (& collation -> cmp_func );
2222
2219
}
0 commit comments