tony2001 Mon Feb 7 08:30:47 2005 EDT Modified files: /php-src/ext/filepro filepro.c php_filepro.h Log: fix leaks on shutdown fix leaks appearing when trying to open several "databases" http://cvs.php.net/diff.php/php-src/ext/filepro/filepro.c?r1=1.55&r2=1.56&ty=u Index: php-src/ext/filepro/filepro.c diff -u php-src/ext/filepro/filepro.c:1.55 php-src/ext/filepro/filepro.c:1.56 --- php-src/ext/filepro/filepro.c:1.55 Thu Jan 8 03:15:26 2004 +++ php-src/ext/filepro/filepro.c Mon Feb 7 08:30:44 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: filepro.c,v 1.55 2004/01/08 08:15:26 andi Exp $ */ +/* $Id: filepro.c,v 1.56 2005/02/07 13:30:44 tony2001 Exp $ */ /* filePro 4.x support developed by Chad Robinson, [EMAIL PROTECTED] @@ -96,11 +96,43 @@ 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 @@ 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 @@ tmp = FP_GLOBAL(fp_fieldlist); while (tmp != NULL) { next = tmp->next; + efree(tmp->name); + efree(tmp->format); efree(tmp); tmp = next; } http://cvs.php.net/diff.php/php-src/ext/filepro/php_filepro.h?r1=1.12&r2=1.13&ty=u Index: php-src/ext/filepro/php_filepro.h diff -u php-src/ext/filepro/php_filepro.h:1.12 php-src/ext/filepro/php_filepro.h:1.13 --- php-src/ext/filepro/php_filepro.h:1.12 Thu Jan 8 12:32:07 2004 +++ php-src/ext/filepro/php_filepro.h Mon Feb 7 08:30:45 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_filepro.h,v 1.12 2004/01/08 17:32:07 sniper Exp $ */ +/* $Id: php_filepro.h,v 1.13 2005/02/07 13:30:45 tony2001 Exp $ */ /* filePro 4.x support developed by Chad Robinson, [EMAIL PROTECTED] @@ -41,6 +41,8 @@ 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
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php