This list is now freed when the last connection has been closed.
Closes: #6366
for (cache = act->cache_head; cache; ptr = cache, cache = cache->next, ecpg_free(ptr));
ecpg_free(act->name);
ecpg_free(act);
+ /* delete cursor variables when last connection gets closed */
+ if (all_connections == NULL)
+ {
+ struct var_list *iv_ptr;
+
+ for (; ivlist; iv_ptr = ivlist, ivlist = ivlist->next, ecpg_free(iv_ptr));
+ }
}
else
ecpg_log("ecpg_finish: called an extra time\n");
struct variable *next;
};
+struct var_list
+{
+ int number;
+ void *pointer;
+ struct var_list *next;
+};
+
+extern struct var_list *ivlist;
+
/* Here are some methods used by the lib. */
/* Returns a pointer to a string containing a simple type name. */
}
#endif /* ENABLE_NLS */
-static struct var_list
-{
- int number;
- void *pointer;
- struct var_list *next;
-} *ivlist = NULL;
+struct var_list *ivlist = NULL;
void
ECPGset_var(int number, void *pointer, int lineno)