Authors: Mike McCormack <mikem@codeweavers.com>, Jeremy White <jwhite@codeweavers.com>
Fixed memory leaks.

diff --git a/dlls/setupapi/queue.c b/dlls/setupapi/queue.c
index 59e0617..db7f7ae 100644
--- a/dlls/setupapi/queue.c
+++ b/dlls/setupapi/queue.c
@@ -115,9 +115,9 @@
 /* free all the file operations on a given queue */
 static void free_file_op_queue( struct file_op_queue *queue )
 {
-    struct file_op *op;
+    struct file_op *t, *op = queue->head;
 
-    for (op = queue->head; op; op = op->next)
+    while( op )
     {
         HeapFree( GetProcessHeap(), 0, op->src_root );
         HeapFree( GetProcessHeap(), 0, op->src_path );
@@ -126,6 +126,9 @@
         HeapFree( GetProcessHeap(), 0, op->src_tag );
         HeapFree( GetProcessHeap(), 0, op->dst_path );
         if (op->dst_file != op->src_file) HeapFree( GetProcessHeap(), 0, op->dst_file );
+        t = op;
+        op = op->next;
+        HeapFree( GetProcessHeap(), 0, t );
     }
 }