Browse Source

fix leaks on shutdown

fix leaks appearing when trying to open several "databases"
PHP-5.1
Antony Dovgal 21 years ago
parent
commit
96610aee08
  1. 44
      ext/filepro/filepro.c
  2. 2
      ext/filepro/php_filepro.h

44
ext/filepro/filepro.c

@ -96,11 +96,43 @@ PHP_MINIT_FUNCTION(filepro)
fp_globals = (fp_global_struct *) LocalAlloc(LPTR, sizeof(fp_global_struct));
TlsSetValue(FPTls, (void *) fp_globals);
#endif
return SUCCESS;
}
/* }}} */
/* {{{ PHP_RINIT_FUNCTION
*/
PHP_RINIT_FUNCTION(filepro)
{
FP_GLOBAL(fp_database)=NULL;
FP_GLOBAL(fp_fcount)=-1;
FP_GLOBAL(fp_keysize)=-1;
FP_GLOBAL(fp_fieldlist)=NULL;
return SUCCESS;
}
/* }}} */
/* {{{ PHP_RSHUTDOWN_FUNCTION
*/
PHP_RSHUTDOWN_FUNCTION(filepro)
{
FP_FIELD *tmp, *next;
if (FP_GLOBAL(fp_database)) {
efree(FP_GLOBAL(fp_database));
}
if (FP_GLOBAL(fp_fieldlist)) {
for (tmp = FP_GLOBAL(fp_fieldlist); tmp;) {
efree(tmp->name);
efree(tmp->format);
next = tmp->next;
efree(tmp);
tmp=next;
}
}
return SUCCESS;
}
/* }}} */
@ -143,7 +175,15 @@ function_entry filepro_functions[] = {
zend_module_entry filepro_module_entry = {
STANDARD_MODULE_HEADER,
"filepro", filepro_functions, PHP_MINIT(filepro), PHP_MSHUTDOWN(filepro), NULL, NULL, NULL, NO_VERSION_YET, STANDARD_MODULE_PROPERTIES
"filepro",
filepro_functions,
PHP_MINIT(filepro),
PHP_MSHUTDOWN(filepro),
PHP_RINIT(filepro),
PHP_RSHUTDOWN(filepro),
NULL,
NO_VERSION_YET,
STANDARD_MODULE_PROPERTIES
};
@ -214,6 +254,8 @@ PHP_FUNCTION(filepro)
tmp = FP_GLOBAL(fp_fieldlist);
while (tmp != NULL) {
next = tmp->next;
efree(tmp->name);
efree(tmp->format);
efree(tmp);
tmp = next;
}

2
ext/filepro/php_filepro.h

@ -41,6 +41,8 @@ PHP_FUNCTION(filepro_fieldcount);
PHP_FUNCTION(filepro_retrieve);
PHP_MINIT_FUNCTION(filepro);
PHP_RINIT_FUNCTION(filepro);
PHP_RSHUTDOWN_FUNCTION(filepro);
PHP_MSHUTDOWN_FUNCTION(filepro);
#else
#define phpext_filepro_ptr NULL

Loading…
Cancel
Save