Jacek Caban : wininet: Don't free gzip_stream in HTTPREQ_CloseConnection.

Alexandre Julliard julliard at winehq.org
Mon Aug 24 10:08:08 CDT 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sat Aug 22 19:46:30 2009 +0200

wininet: Don't free gzip_stream in HTTPREQ_CloseConnection.

---

 dlls/wininet/http.c |   17 +++++++++--------
 1 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 7e6178c..681658e 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -1545,6 +1545,14 @@ static void HTTPREQ_Destroy(object_header_t *hdr)
         HeapFree(GetProcessHeap(), 0, lpwhr->pCustHeaders[i].lpszValue);
     }
 
+#ifdef HAVE_ZLIB
+    if(lpwhr->gzip_stream) {
+        if(!lpwhr->gzip_stream->end_of_data)
+            inflateEnd(&lpwhr->gzip_stream->zstream);
+        HeapFree(GetProcessHeap(), 0, lpwhr->gzip_stream);
+    }
+#endif
+
     HeapFree(GetProcessHeap(), 0, lpwhr->pCustHeaders);
     HeapFree(GetProcessHeap(), 0, lpwhr);
 }
@@ -1555,14 +1563,6 @@ static void HTTPREQ_CloseConnection(object_header_t *hdr)
 
     TRACE("%p\n",lpwhr);
 
-#ifdef HAVE_ZLIB
-    if(lpwhr->gzip_stream) {
-        inflateEnd(&lpwhr->gzip_stream->zstream);
-        HeapFree(GetProcessHeap(), 0, lpwhr->gzip_stream);
-        lpwhr->gzip_stream = NULL;
-    }
-#endif
-
     if (!NETCON_connected(&lpwhr->netConnection))
         return;
 
@@ -2057,6 +2057,7 @@ static DWORD read_gzip_data(http_request_t *req, BYTE *buf, int size, BOOL sync,
         if(zres == Z_STREAM_END) {
             TRACE("end of data\n");
             req->gzip_stream->end_of_data = TRUE;
+            inflateEnd(&req->gzip_stream->zstream);
         }else if(zres != Z_OK) {
             WARN("inflate failed %d\n", zres);
             if(!read)




More information about the wine-cvs mailing list