aboutsummaryrefslogtreecommitdiffstats
path: root/query.c
diff options
context:
space:
mode:
Diffstat (limited to 'query.c')
-rw-r--r--query.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/query.c b/query.c
index b60669f7..67382b79 100644
--- a/query.c
+++ b/query.c
@@ -30,7 +30,8 @@ static void query_display( irc_t *irc, query_t *q );
static query_t *query_default( irc_t *irc );
query_t *query_add( irc_t *irc, struct im_connection *ic, char *question,
- query_callback yes, query_callback no, void *data )
+ query_callback yes, query_callback no, query_callback free,
+ void *data )
{
query_t *q = g_new0( query_t, 1 );
@@ -38,6 +39,7 @@ query_t *query_add( irc_t *irc, struct im_connection *ic, char *question,
q->question = g_strdup( question );
q->yes = yes;
q->no = no;
+ q->free = free;
q->data = data;
if( strchr( irc->umode, 'b' ) != NULL )
@@ -93,7 +95,8 @@ void query_del( irc_t *irc, query_t *q )
}
g_free( q->question );
- if( q->data ) g_free( q->data ); /* Memory leak... */
+ if( q->free && q->data )
+ q->free( q->data );
g_free( q );
}