CVS update: php3

From: Date: Sat, 19 Sep 1998 11:59:31 +0000
Subject: CVS update: php3
Groups: php.dev 
Request: Send a blank email to php-dev+get-1247@lists.php.net to get a copy of this message
Date: Saturday September 19, 1998 @ 7:59 Author: zeev Update of /repository/php3 In directory asf:/u2/tmp/cvs-serv4889 Modified Files: main.c Log Message: Fix the reported crash Index: php3/main.c diff -c php3/main.c:1.468 php3/main.c:1.469 *** php3/main.c:1.468 Sun Sep 13 19:55:54 1998 --- php3/main.c Sat Sep 19 07:59:29 1998 *************** *** 29,35 **** +----------------------------------------------------------------------+ */ ! /* $Id: main.c,v 1.468 1998/09/13 23:55:54 zeev Exp $ */ /* #define CRASH_DETECTION */ --- 29,35 ---- +----------------------------------------------------------------------+ */ ! /* $Id: main.c,v 1.469 1998/09/19 11:59:29 zeev Exp $ */ /* #define CRASH_DETECTION */ *************** *** 756,776 **** } if (GLOBAL(initialized) & INIT_FUNCTION_STATE_STACK) { FunctionState *tmp; SHUTDOWN_DEBUG("Function state stack"); while (stack_top(&GLOBAL(function_state_stack), (void **) &tmp) != FAILURE) { if (tmp->function_name) { efree(tmp->function_name); ! if (tmp->symbol_table && tmp->symbol_table != &GLOBAL(symbol_table)) { _php3_hash_destroy(tmp->symbol_table); efree(tmp->symbol_table); } } stack_del_top(&GLOBAL(function_state_stack)); } if (GLOBAL(function_state).function_name) { efree(GLOBAL(function_state).function_name); ! if (GLOBAL(function_state).symbol_table && GLOBAL(function_state).symbol_table != &GLOBAL(symbol_table)) { _php3_hash_destroy(GLOBAL(function_state).symbol_table); efree(GLOBAL(function_state).symbol_table); } --- 756,784 ---- } if (GLOBAL(initialized) & INIT_FUNCTION_STATE_STACK) { FunctionState *tmp; + HashTable *last_symbol_table=NULL; /* to protect against freeing the same symtable twice, + * if we 'crashed' in a nested function call + */ SHUTDOWN_DEBUG("Function state stack"); while (stack_top(&GLOBAL(function_state_stack), (void **) &tmp) != FAILURE) { if (tmp->function_name) { efree(tmp->function_name); ! if (tmp->symbol_table ! && (tmp->symbol_table != &GLOBAL(symbol_table)) ! && (tmp->symbol_table != last_symbol_table)) { _php3_hash_destroy(tmp->symbol_table); efree(tmp->symbol_table); + last_symbol_table = tmp->symbol_table; } } stack_del_top(&GLOBAL(function_state_stack)); } if (GLOBAL(function_state).function_name) { efree(GLOBAL(function_state).function_name); ! if (GLOBAL(function_state).symbol_table ! && (GLOBAL(function_state).symbol_table != &GLOBAL(symbol_table)) ! && (GLOBAL(function_state).symbol_table != last_symbol_table)) { _php3_hash_destroy(GLOBAL(function_state).symbol_table); efree(GLOBAL(function_state).symbol_table); } -- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net For help: php-dev-help@lists.php.net

« previous php.dev (#1247) next »