TSRMLS_FETCH();
destroy_zend_function(function TSRMLS_CC);
- if (function->type == ZEND_INTERNAL_FUNCTION && function->common.function_name) {
- free(function->common.function_name);
+ if (function->type == ZEND_INTERNAL_FUNCTION) {
+ if (function->common.function_name) {
+ free(function->common.function_name);
+ }
+ if (function->common.arg_info) {
+ int n = function->common.num_args;
+
+ while (n > 0) {
+ --n;
+ if (function->common.arg_info[n].name) {
+ free(function->common.arg_info[n].name);
+ }
+ if (function->common.arg_info[n].class_name) {
+ free(function->common.arg_info[n].class_name);
+ }
+ }
+ free(function->common.arg_info);
+ }
}
}
export_hnd.export_func = export_function;
if (zend_hash_add(&php_libxml_exports, ce->name, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL) == SUCCESS) {
+ int ret;
UChar *uname;
uname = malloc(UBYTES(ce->name_length+1));
u_charsToUChars(ce->name, uname, ce->name_length+1);
- return zend_u_hash_add(&php_libxml_exports, IS_UNICODE, uname, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL);
+ ret = zend_u_hash_add(&php_libxml_exports, IS_UNICODE, uname, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL);
+ free(uname);
+ return ret;
}
return FAILURE;
}