Hans Leidekker : msi: Avoid a leak when a query is executed more than once.

Alexandre Julliard julliard at winehq.org
Mon Sep 5 13:26:22 CDT 2011


Module: wine
Branch: master
Commit: a8b51497e518817716a8f79c29999d22726ad35d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a8b51497e518817716a8f79c29999d22726ad35d

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Mon Sep  5 11:47:37 2011 +0200

msi: Avoid a leak when a query is executed more than once.

---

 dlls/msi/where.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/dlls/msi/where.c b/dlls/msi/where.c
index 5304900..0e346d6 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;
 }
 




More information about the wine-cvs mailing list