From a8b51497e518817716a8f79c29999d22726ad35d Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Mon, 5 Sep 2011 11:47:37 +0200 Subject: [PATCH] msi: Avoid a leak when a query is executed more than once. --- dlls/msi/where.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dlls/msi/where.c b/dlls/msi/where.c index 5304900d0ce..0e346d62ba1 100644 --- a/dlls/msi/where.c +++ b/dlls/msi/where.c @@ -73,6 +73,7 @@ typedef struct tagMSIWHEREVIEW struct expr *cond; UINT rec_index; MSIORDERINFO *order_info; + UINT error; } MSIWHEREVIEW; #define INITIAL_REORDER_SIZE 16 @@ -617,6 +618,9 @@ static UINT WHERE_execute( struct tagMSIVIEW *view, MSIRECORD *record ) if( !table ) return ERROR_FUNCTION_FAILED; + if (wv->reorder) + return wv->error; + r = init_reorder(wv); if (r != ERROR_SUCCESS) return r; @@ -648,7 +652,9 @@ static UINT WHERE_execute( struct tagMSIVIEW *view, MSIRECORD *record ) if (wv->order_info) r = wv->order_info->error; + msi_free( rows ); + wv->error = r; return r; } -- 2.11.4.GIT