@@ -889,27 +889,17 @@ static int php_sqlite3_callback_compare(void *coll, int a_len, const void *a, in
889
889
php_sqlite3_collation * collation = (php_sqlite3_collation * )coll ;
890
890
zval zargs [2 ];
891
891
zval retval ;
892
- int ret ;
892
+ int ret = 0 ;
893
893
894
894
// Exception occurred on previous callback. Don't attempt to call function.
895
895
if (EG (exception )) {
896
896
return 0 ;
897
897
}
898
898
899
- collation -> fci .fci .size = (sizeof (collation -> fci .fci ));
900
- ZVAL_COPY_VALUE (& collation -> fci .fci .function_name , & collation -> cmp_func );
901
- collation -> fci .fci .object = NULL ;
902
- collation -> fci .fci .retval = & retval ;
903
- collation -> fci .fci .param_count = 2 ;
904
-
905
899
ZVAL_STRINGL (& zargs [0 ], a , a_len );
906
900
ZVAL_STRINGL (& zargs [1 ], b , b_len );
907
901
908
- collation -> fci .fci .params = zargs ;
909
-
910
- if ((ret = zend_call_function (& collation -> fci .fci , & collation -> fci .fcc )) == FAILURE ) {
911
- php_error_docref (NULL , E_WARNING , "An error occurred while invoking the compare callback" );
912
- }
902
+ zend_call_known_fcc (& collation -> cmp_func , & retval , /* argc */ 2 , zargs , /* named_params */ NULL );
913
903
914
904
zval_ptr_dtor (& zargs [0 ]);
915
905
zval_ptr_dtor (& zargs [1 ]);
@@ -1043,7 +1033,7 @@ PHP_METHOD(SQLite3, createCollation)
1043
1033
if (sqlite3_create_collation (db_obj -> db , collation_name , SQLITE_UTF8 , collation , php_sqlite3_callback_compare ) == SQLITE_OK ) {
1044
1034
collation -> collation_name = estrdup (collation_name );
1045
1035
1046
- ZVAL_COPY (& collation -> cmp_func , & fci . function_name );
1036
+ zend_fcc_dup (& collation -> cmp_func , & fcc );
1047
1037
1048
1038
collation -> next = db_obj -> collations ;
1049
1039
db_obj -> collations = collation ;
@@ -2207,8 +2197,8 @@ static void php_sqlite3_object_free_storage(zend_object *object) /* {{{ */
2207
2197
sqlite3_create_collation (intern -> db , collation -> collation_name , SQLITE_UTF8 , NULL , NULL );
2208
2198
}
2209
2199
efree ((char * )collation -> collation_name );
2210
- if (! Z_ISUNDEF (collation -> cmp_func )) {
2211
- zval_ptr_dtor (& collation -> cmp_func );
2200
+ if (ZEND_FCC_INITIALIZED (collation -> cmp_func )) {
2201
+ zend_fcc_dtor (& collation -> cmp_func );
2212
2202
}
2213
2203
efree (collation );
2214
2204
}
0 commit comments