summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/sybase/sybase.c7
-rw-r--r--ext/sybase_ct/php_sybase_ct.c6
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