wininet: Give a name to the critical sections, make them static and delete them when unloading the dll.

Francois Gouget fgouget at codeweavers.com
Tue Nov 15 07:40:03 CST 2011


---
 dlls/wininet/http.c          |    2 ++
 dlls/wininet/netconnection.c |    9 ++++++++-
 dlls/wininet/tests/http.c    |   11 +++++++++--
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 1847820..16f550c 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -1825,6 +1825,7 @@ static void HTTPREQ_Destroy(object_header_t *hdr)
     }
     heap_free(request->cacheFile);
 
+    request->read_section.DebugInfo->Spare[0] = 0;
     DeleteCriticalSection( &request->read_section );
     WININET_Release(&request->session->hdr);
 
@@ -3047,6 +3048,7 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session,
     request->data_stream = &request->netconn_stream.data_stream;
 
     InitializeCriticalSection( &request->read_section );
+    request->read_section.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": http_request_t.read_section");
 
     WININET_AddRef( &session->hdr );
     request->session = session;
diff --git a/dlls/wininet/netconnection.c b/dlls/wininet/netconnection.c
index dd887eb..bf93301 100644
--- a/dlls/wininet/netconnection.c
+++ b/dlls/wininet/netconnection.c
@@ -484,7 +484,10 @@ static DWORD init_openssl(void)
         return ERROR_OUTOFMEMORY;
 
     for(i = 0; i < num_ssl_locks; i++)
+    {
         InitializeCriticalSection(&ssl_locks[i]);
+        ssl_locks[i].DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": ssl_locks");
+    }
     pCRYPTO_set_locking_callback(ssl_lock_callback);
 
     return ERROR_SUCCESS;
@@ -578,7 +581,11 @@ void NETCON_unload(void)
     if (ssl_locks)
     {
         int i;
-        for (i = 0; i < num_ssl_locks; i++) DeleteCriticalSection(&ssl_locks[i]);
+        for (i = 0; i < num_ssl_locks; i++)
+        {
+            ssl_locks[i].DebugInfo->Spare[0] = 0;
+            DeleteCriticalSection(&ssl_locks[i]);
+        }
         heap_free(ssl_locks);
     }
 #endif
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 881f1e6..397f96a 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -3224,6 +3224,13 @@ struct info
 };
 
 static CRITICAL_SECTION notification_cs;
+static CRITICAL_SECTION_DEBUG notification_cs_debug =
+{
+    0, 0, &notification_cs,
+    { &notification_cs_debug.ProcessLocksList, &notification_cs_debug.ProcessLocksList },
+      0, 0, { (DWORD_PTR)(__FILE__ ": notification_cs") }
+};
+static CRITICAL_SECTION notification_cs = { &notification_cs_debug, -1, 0, 0, 0, 0 };
 
 static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DWORD status, LPVOID buffer, DWORD buflen )
 {
@@ -3316,8 +3323,6 @@ static void test_async_HttpSendRequestEx(void)
     static char data[] = "Public ID=codeweavers";
     char buffer[32];
 
-    InitializeCriticalSection( &notification_cs );
-
     info.test  = async_send_request_ex_test;
     info.count = sizeof(async_send_request_ex_test)/sizeof(async_send_request_ex_test[0]);
     info.index = 0;
@@ -3394,6 +3399,8 @@ static void test_async_HttpSendRequestEx(void)
     WaitForSingleObject( info.wait, 10000 );
     Sleep(100);
     CloseHandle( info.wait );
+
+    DeleteCriticalSection(&notification_cs);
 }
 
 static HINTERNET closetest_session, closetest_req, closetest_conn;
-- 
1.7.7.1




More information about the wine-patches mailing list