diff options
-rw-r--r-- | ext/sybase/sybase.c | 7 | ||||
-rw-r--r-- | ext/sybase_ct/php_sybase_ct.c | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/ext/sybase/sybase.c b/ext/sybase/sybase.c index d28a329e25..bb400d0a3e 100644 --- a/ext/sybase/sybase.c +++ b/ext/sybase/sybase.c @@ -160,6 +160,13 @@ static void _free_sybase_result(sybase_result *result) static void _close_sybase_link(sybase_link *sybase_ptr) { sybase_ptr->valid = 0; + + /* + this can cause crashes in the current model. + if the resource gets destroyed via destroy_resource_list() resource_list + will *not* be in a consistent state. thies@digicol.de + */ + zend_hash_apply(resource_list,(int (*)(void *))_clean_invalid_results); dbclose(sybase_ptr->link); dbloginfree(sybase_ptr->login); diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c index c9d0cbaf01..fdba2fb5ae 100644 --- a/ext/sybase_ct/php_sybase_ct.c +++ b/ext/sybase_ct/php_sybase_ct.c @@ -127,6 +127,12 @@ static void _close_sybase_link(sybase_link *sybase_ptr) CS_INT con_status; sybase_ptr->valid = 0; + + /* + this can cause crashes in the current model. + if the resource gets destroyed via destroy_resource_list() resource_list + will *not* be in a consistent state. thies@digicol.de + */ zend_hash_apply(resource_list,(int (*)(void *))_clean_invalid_results); /* Non-persistent connections will always be connected or we wouldn't |