Title: [287297] trunk/Tools
Revision
287297
Author
hironori.fu...@sony.com
Date
2021-12-20 20:52:11 -0800 (Mon, 20 Dec 2021)

Log Message

[Win] MSVC reports "DumpRenderTree.cpp(633): error C2362: initialization of 'length' is skipped by 'goto exit'" with /std:c++20
https://bugs.webkit.org/show_bug.cgi?id=234503

Reviewed by Don Olmstead.

* DumpRenderTree/win/DumpRenderTree.cpp:
(dumpHistoryItem): Removed goto statements. Use std::unique_ptr for SAFEARRAY.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (287296 => 287297)


--- trunk/Tools/ChangeLog	2021-12-21 03:09:46 UTC (rev 287296)
+++ trunk/Tools/ChangeLog	2021-12-21 04:52:11 UTC (rev 287297)
@@ -1,3 +1,13 @@
+2021-12-20  Fujii Hironori  <hironori.fu...@sony.com>
+
+        [Win] MSVC reports "DumpRenderTree.cpp(633): error C2362: initialization of 'length' is skipped by 'goto exit'" with /std:c++20
+        https://bugs.webkit.org/show_bug.cgi?id=234503
+
+        Reviewed by Don Olmstead.
+
+        * DumpRenderTree/win/DumpRenderTree.cpp:
+        (dumpHistoryItem): Removed goto statements. Use std::unique_ptr for SAFEARRAY.
+
 2021-12-20  Simon Fraser  <simon.fra...@apple.com>
 
         Make it possible to enable log channels in WebKitTestRunner and DumpRenderTree

Modified: trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp (287296 => 287297)


--- trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp	2021-12-21 03:09:46 UTC (rev 287296)
+++ trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp	2021-12-21 04:52:11 UTC (rev 287297)
@@ -594,32 +594,38 @@
     fputc('\n', testResult);
 
     unsigned kidsCount;
-    SAFEARRAY* arrPtr;
-    if (FAILED(itemPrivate->children(&kidsCount, &arrPtr)) || !kidsCount)
+    SAFEARRAY* arraryPtr;
+    if (FAILED(itemPrivate->children(&kidsCount, &arraryPtr)) || !kidsCount)
         return;
 
+    auto deleter = [](SAFEARRAY* arraryPtr) {
+        if (arraryPtr && SUCCEEDED(::SafeArrayUnlock(arraryPtr)))
+            ::SafeArrayDestroy(arraryPtr);
+    };
+    std::unique_ptr<SAFEARRAY, decltype(deleter)> array(arraryPtr, deleter);
+
     Vector<COMPtr<IUnknown> > kidsVector;
 
     LONG lowerBound;
-    if (FAILED(::SafeArrayGetLBound(arrPtr, 1, &lowerBound)))
-        goto exit;
+    if (FAILED(::SafeArrayGetLBound(array.get(), 1, &lowerBound)))
+        return;
 
     LONG upperBound;
-    if (FAILED(::SafeArrayGetUBound(arrPtr, 1, &upperBound)))
-        goto exit;
+    if (FAILED(::SafeArrayGetUBound(array.get(), 1, &upperBound)))
+        return;
 
     LONG length = upperBound - lowerBound + 1;
     if (!length)
-        goto exit;
+        return;
     ASSERT(length == kidsCount);
 
     IUnknown** safeArrayData;
-    if (FAILED(::SafeArrayAccessData(arrPtr, (void**)&safeArrayData)))
-        goto exit;
+    if (FAILED(::SafeArrayAccessData(array.get(), (void**)&safeArrayData)))
+        return;
 
     for (int i = 0; i < length; ++i)
         kidsVector.append(safeArrayData[i]);
-    ::SafeArrayUnaccessData(arrPtr);
+    ::SafeArrayUnaccessData(array.get());
 
     // must sort to eliminate arbitrary result ordering which defeats reproducible testing
     qsort(kidsVector.data(), kidsCount, sizeof(kidsVector[0]), compareHistoryItems);
@@ -629,10 +635,6 @@
         kidsVector[i]->QueryInterface(&item);
         dumpHistoryItem(item.get(), indent + 4, false);
     }
-
-exit:
-    if (arrPtr && SUCCEEDED(::SafeArrayUnlock(arrPtr)))
-        ::SafeArrayDestroy(arrPtr);
 }
 
 static void dumpBackForwardList(IWebView* webView)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to