Jacek Caban : itss: Fixed test crash on IE7.

Alexandre Julliard julliard at winehq.org
Fri Oct 26 08:34:50 CDT 2007


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Oct 26 01:22:20 2007 +0200

itss: Fixed test crash on IE7.

---

 dlls/itss/tests/protocol.c |   58 +++++++++++++++++++++++++++++++------------
 1 files changed, 42 insertions(+), 16 deletions(-)

diff --git a/dlls/itss/tests/protocol.c b/dlls/itss/tests/protocol.c
index 680a867..05825be 100644
--- a/dlls/itss/tests/protocol.c
+++ b/dlls/itss/tests/protocol.c
@@ -48,10 +48,13 @@
         called_ ## func = TRUE; \
     }while(0)
 
+#define SET_CALLED(func) \
+    expect_ ## func = called_ ## func = FALSE
+
 #define CHECK_CALLED(func) \
     do { \
         ok(called_ ## func, "expected " #func "\n"); \
-        expect_ ## func = called_ ## func = FALSE; \
+        SET_CALLED(func); \
     }while(0)
 
 DEFINE_GUID(CLSID_ITSProtocol,0x9d148291,0xb9c8,0x11d0,0xa4,0xcc,0x00,0x00,0xf8,0x01,0x49,0xf6);
@@ -278,7 +281,8 @@ static void test_protocol_fail(IInternetProtocol *protocol, LPCWSTR url, HRESULT
     CHECK_CALLED(ReportResult);
 }
 
-static void protocol_start(IInternetProtocol *protocol, LPCWSTR url, BOOL expect_mime)
+#define protocol_start(p,u,e) _protocol_start(__LINE__,p,u,e)
+static HRESULT _protocol_start(unsigned line, IInternetProtocol *protocol, LPCWSTR url, BOOL expect_mime)
 {
     HRESULT hres;
 
@@ -297,20 +301,37 @@ static void protocol_start(IInternetProtocol *protocol, LPCWSTR url, BOOL expect
     expect_hrResult = S_OK;
 
     hres = IInternetProtocol_Start(protocol, url, &protocol_sink, &bind_info, 0, 0);
-    ok(hres == S_OK, "Start failed: %08x\n", hres);
+    ok_(__FILE__,line) (hres == S_OK, "Start failed: %08x\n", hres);
+
+    if(FAILED(hres)) {
+        SET_CALLED(GetBindInfo);
+        if(test_protocol == MK_PROTOCOL)
+            SET_CALLED(ReportProgress_DIRECTBIND);
+        SET_CALLED(ReportProgress_SENDINGREQUEST);
+        if(expect_mime)
+            SET_CALLED(ReportProgress_MIMETYPEAVAILABLE);
+        if(test_protocol == MK_PROTOCOL)
+            SET_EXPECT(ReportProgress_CACHEFILENAMEAVAIABLE);
+        SET_CALLED(ReportData);
+        if(test_protocol == ITS_PROTOCOL)
+            SET_CALLED(ReportProgress_BEGINDOWNLOADDATA);
+        SET_CALLED(ReportResult);
+    }else {
+        CHECK_CALLED(GetBindInfo);
+        if(test_protocol == MK_PROTOCOL)
+            CHECK_CALLED(ReportProgress_DIRECTBIND);
+        CHECK_CALLED(ReportProgress_SENDINGREQUEST);
+        if(expect_mime)
+            CHECK_CALLED(ReportProgress_MIMETYPEAVAILABLE);
+        if(test_protocol == MK_PROTOCOL)
+            SET_EXPECT(ReportProgress_CACHEFILENAMEAVAIABLE);
+        CHECK_CALLED(ReportData);
+        if(test_protocol == ITS_PROTOCOL)
+            CHECK_CALLED(ReportProgress_BEGINDOWNLOADDATA);
+        CHECK_CALLED(ReportResult);
+    }
 
-    CHECK_CALLED(GetBindInfo);
-    if(test_protocol == MK_PROTOCOL)
-        CHECK_CALLED(ReportProgress_DIRECTBIND);
-    CHECK_CALLED(ReportProgress_SENDINGREQUEST);
-    if(expect_mime)
-        CHECK_CALLED(ReportProgress_MIMETYPEAVAILABLE);
-    if(test_protocol == MK_PROTOCOL)
-        SET_EXPECT(ReportProgress_CACHEFILENAMEAVAIABLE);
-    CHECK_CALLED(ReportData);
-    if(test_protocol == ITS_PROTOCOL)
-        CHECK_CALLED(ReportProgress_BEGINDOWNLOADDATA);
-    CHECK_CALLED(ReportResult);
+    return hres;
 }
 
 static void test_protocol_url(IClassFactory *factory, LPCWSTR url, BOOL expect_mime)
@@ -325,7 +346,12 @@ static void test_protocol_url(IClassFactory *factory, LPCWSTR url, BOOL expect_m
     if(FAILED(hres))
         return;
 
-    protocol_start(protocol, url, expect_mime);
+    hres = protocol_start(protocol, url, expect_mime);
+    if(FAILED(hres)) {
+        IInternetProtocol_Release(protocol);
+        return;
+    }
+
     hres = IInternetProtocol_Read(protocol, buf, sizeof(buf), &cb);
     ok(hres == S_OK, "Read failed: %08x\n", hres);
     ok(cb == 13, "cb=%u expected 13\n", cb);




More information about the wine-cvs mailing list