<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[178669] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/178669">178669</a></dd>
<dt>Author</dt> <dd>bfulgham@apple.com</dd>
<dt>Date</dt> <dd>2015-01-19 12:58:09 -0800 (Mon, 19 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Win] Periodic failure in DumpRenderTree related to WebActionPropertyBag::Read
https://bugs.webkit.org/show_bug.cgi?id=139906

Reviewed by Dean Jackson.

WebKit on Windows was creating uninitialized VARIANT structures, then attempting
to use them. This patch fixes that.

Source/WebKit/win:

Identified by dom/html/level2/html/HTMLIFrameElement03.html (and others)

* COMEnumVariant.h:
(COMEnumVariant&lt;ContainerType&gt;::Next):
* COMPropertyBag.h:
(HashType&gt;::Read):
* DefaultPolicyDelegate.cpp:
(DefaultPolicyDelegate::decidePolicyForNavigationAction):
* WebActionPropertyBag.cpp:
(WebActionPropertyBag::Read):
* WebDatabaseManager.cpp:
(DatabaseDetailsPropertyBag::Read):
* WebElementPropertyBag.cpp:
(WebElementPropertyBag::Read):
* WebFrame.cpp:
(EnumChildFrames::Next):
* WebView.cpp:
(WebView::notifyDidAddIcon):

Tools:

* DumpRenderTree/win/AccessibilityControllerWin.cpp:
(findAccessibleObjectById):
(AccessibilityController::focusedElement):
(logEventProc):
(notificationListenerProc):
* DumpRenderTree/win/AccessibilityUIElementWin.cpp:
(AccessibilityUIElement::getChildAtIndex):
(AccessibilityUIElement::titleUIElement):
(self):
(AccessibilityUIElement::role):
(AccessibilityUIElement::valueDescription):
(accessibilityState):
(AccessibilityUIElement::isChecked):
* DumpRenderTree/win/DumpRenderTree.cpp:
(dumpFrameScrollPosition):
(dumpFramesAsText):
* DumpRenderTree/win/PolicyDelegate.cpp:
(PolicyDelegate::decidePolicyForNavigationAction):
* DumpRenderTree/win/UIDelegate.cpp:
(UIDelegate::exceededDatabaseQuota):
* WinLauncher/Common.cpp:
(setWindowText):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKitwinCOMEnumVarianth">trunk/Source/WebKit/win/COMEnumVariant.h</a></li>
<li><a href="#trunkSourceWebKitwinCOMPropertyBagh">trunk/Source/WebKit/win/COMPropertyBag.h</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinDefaultPolicyDelegatecpp">trunk/Source/WebKit/win/DefaultPolicyDelegate.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebActionPropertyBagcpp">trunk/Source/WebKit/win/WebActionPropertyBag.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebDatabaseManagercpp">trunk/Source/WebKit/win/WebDatabaseManager.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebElementPropertyBagcpp">trunk/Source/WebKit/win/WebElementPropertyBag.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebFramecpp">trunk/Source/WebKit/win/WebFrame.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebViewcpp">trunk/Source/WebKit/win/WebView.cpp</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsDumpRenderTreewinAccessibilityControllerWincpp">trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreewinAccessibilityUIElementWincpp">trunk/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreewinDumpRenderTreecpp">trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreewinPolicyDelegatecpp">trunk/Tools/DumpRenderTree/win/PolicyDelegate.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreewinUIDelegatecpp">trunk/Tools/DumpRenderTree/win/UIDelegate.cpp</a></li>
<li><a href="#trunkToolsWinLauncherCommoncpp">trunk/Tools/WinLauncher/Common.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKitwinCOMEnumVarianth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/COMEnumVariant.h (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/COMEnumVariant.h        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/COMEnumVariant.h        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx">     if (!rgVar)
</span><span class="cx">         return E_POINTER;
</span><span class="cx">     for (unsigned i = 0 ; i &lt; celt; i++)
</span><del>-        VariantInit(&amp;rgVar[i]);
</del><ins>+        ::VariantInit(&amp;rgVar[i]);
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; celt; i++) {
</span><span class="cx">         if (m_currentPos == m_container.end())
</span></span></pre></div>
<a id="trunkSourceWebKitwinCOMPropertyBagh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/COMPropertyBag.h (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/COMPropertyBag.h        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/COMPropertyBag.h        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx">     HRESULT hr = S_OK;
</span><span class="cx"> 
</span><span class="cx">     for (ULONG i = 0; i &lt; cProperties; ++i) {
</span><del>-        VariantInit(&amp;pvarValue[i]);
</del><ins>+        ::VariantInit(&amp;pvarValue[i]);
</ins><span class="cx">         pvarValue[i].vt = pPropBag[i].vt;
</span><span class="cx">         phrError[i] = Read(pPropBag[i].pstrName, &amp;pvarValue[i], pErrorLog);
</span><span class="cx">         if (FAILED(phrError[i]))
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/ChangeLog        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2015-01-19  Brent Fulgham  &lt;bfulgham@apple.com&gt;
+
+        [Win] Periodic failure in DumpRenderTree related to WebActionPropertyBag::Read
+        https://bugs.webkit.org/show_bug.cgi?id=139906
+
+        Reviewed by Dean Jackson.
+
+        WebKit on Windows was creating uninitialized VARIANT structures, then attempting
+        to use them. This patch fixes that.
+
+        Identified by dom/html/level2/html/HTMLIFrameElement03.html (and others)
+
+        * COMEnumVariant.h:
+        (COMEnumVariant&lt;ContainerType&gt;::Next):
+        * COMPropertyBag.h:
+        (HashType&gt;::Read):
+        * DefaultPolicyDelegate.cpp:
+        (DefaultPolicyDelegate::decidePolicyForNavigationAction):
+        * WebActionPropertyBag.cpp:
+        (WebActionPropertyBag::Read):
+        * WebDatabaseManager.cpp:
+        (DatabaseDetailsPropertyBag::Read):
+        * WebElementPropertyBag.cpp:
+        (WebElementPropertyBag::Read):
+        * WebFrame.cpp:
+        (EnumChildFrames::Next):
+        * WebView.cpp:
+        (WebView::notifyDidAddIcon):
+
</ins><span class="cx"> 2015-01-15  Csaba Osztrogonác  &lt;ossy@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove ENABLE(SQL_DATABASE) guards
</span></span></pre></div>
<a id="trunkSourceWebKitwinDefaultPolicyDelegatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/DefaultPolicyDelegate.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/DefaultPolicyDelegate.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/DefaultPolicyDelegate.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;WebKitDLL.h&quot;
</span><span class="cx"> #include &quot;DefaultPolicyDelegate.h&quot;
</span><span class="cx"> 
</span><ins>+#include &lt;comutil.h&gt;
</ins><span class="cx"> #include &lt;WebCore/BString.h&gt;
</span><span class="cx"> #include &lt;WebCore/COMPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="lines">@@ -97,17 +98,13 @@
</span><span class="cx">     return newRef;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-HRESULT STDMETHODCALLTYPE DefaultPolicyDelegate::decidePolicyForNavigationAction(
-    /*[in]*/ IWebView* webView, 
-    /*[in]*/ IPropertyBag* actionInformation, 
-    /*[in]*/ IWebURLRequest* request, 
-    /*[in]*/ IWebFrame* /*frame*/, 
-    /*[in]*/ IWebPolicyDecisionListener* listener)
</del><ins>+HRESULT DefaultPolicyDelegate::decidePolicyForNavigationAction(IWebView* webView, IPropertyBag* actionInformation, 
+    IWebURLRequest* request, IWebFrame* /*frame*/, IWebPolicyDecisionListener* listener)
</ins><span class="cx"> {
</span><span class="cx">     int navType = 0;
</span><del>-    VARIANT var;
-    if (SUCCEEDED(actionInformation-&gt;Read(WebActionNavigationTypeKey, &amp;var, 0))) {
-        V_VT(&amp;var) = VT_I4;
</del><ins>+    _variant_t var;
+    if (SUCCEEDED(actionInformation-&gt;Read(WebActionNavigationTypeKey, &amp;var.GetVARIANT(), nullptr))) {
+        var.ChangeType(VT_I4, nullptr);
</ins><span class="cx">         navType = V_I4(&amp;var);
</span><span class="cx">     }
</span><span class="cx">     COMPtr&lt;IWebViewPrivate&gt; wvPrivate(Query, webView);
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebActionPropertyBagcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebActionPropertyBag.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebActionPropertyBag.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebActionPropertyBag.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -105,12 +105,12 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-HRESULT STDMETHODCALLTYPE WebActionPropertyBag::Read(LPCOLESTR pszPropName, VARIANT *pVar, IErrorLog * /*pErrorLog*/)
</del><ins>+HRESULT WebActionPropertyBag::Read(LPCOLESTR pszPropName, VARIANT *pVar, IErrorLog * /*pErrorLog*/)
</ins><span class="cx"> {
</span><span class="cx">     if (!pszPropName)
</span><span class="cx">         return E_POINTER;
</span><span class="cx"> 
</span><del>-    VariantClear(pVar);
</del><ins>+    ::VariantClear(pVar);
</ins><span class="cx"> 
</span><span class="cx">     if (isEqual(pszPropName, WebActionNavigationTypeKey)) {
</span><span class="cx">         V_VT(pVar) = VT_I4;
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebDatabaseManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebDatabaseManager.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebDatabaseManager.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebDatabaseManager.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -112,12 +112,12 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // IPropertyBag --------------------------------------------------------------------
</span><del>-HRESULT STDMETHODCALLTYPE DatabaseDetailsPropertyBag::Read(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog*)
</del><ins>+HRESULT DatabaseDetailsPropertyBag::Read(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog*)
</ins><span class="cx"> {
</span><span class="cx">     if (!pszPropName || !pVar)
</span><span class="cx">         return E_POINTER;
</span><span class="cx"> 
</span><del>-    VariantInit(pVar);
</del><ins>+    ::VariantInit(pVar);
</ins><span class="cx"> 
</span><span class="cx">     if (isEqual(pszPropName, WebDatabaseDisplayNameKey)) {
</span><span class="cx">         COMVariantSetter&lt;String&gt;::setVariant(pVar, m_details.displayName());
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebElementPropertyBagcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebElementPropertyBag.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebElementPropertyBag.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebElementPropertyBag.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx">         return E_FAIL;
</span><span class="cx"> 
</span><span class="cx">     BSTR key = (BSTR)pszPropName;
</span><del>-    VariantClear(pVar);
</del><ins>+    ::VariantClear(pVar);
</ins><span class="cx">     if (isEqual(WebElementDOMNodeKey, key)) {
</span><span class="cx">         IDOMNode* node = DOMNode::createInstance(m_result-&gt;innerNonSharedNode());
</span><span class="cx">         V_VT(pVar) = VT_UNKNOWN;
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebFrame.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebFrame.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebFrame.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -793,7 +793,7 @@
</span><span class="cx">             *pCeltFetched = 0;
</span><span class="cx">         if (!rgVar)
</span><span class="cx">             return E_POINTER;
</span><del>-        VariantInit(rgVar);
</del><ins>+        ::VariantInit(rgVar);
</ins><span class="cx">         if (!celt || celt &gt; 1)
</span><span class="cx">             return S_FALSE;
</span><span class="cx">         if (!m_frame || !m_curChild)
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebView.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebView.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Source/WebKit/win/WebView.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -2926,7 +2926,7 @@
</span><span class="cx">         return E_FAIL;
</span><span class="cx"> 
</span><span class="cx">     COMVariant iconUserInfoURL;
</span><del>-    hr = propertyBag-&gt;Read(WebIconDatabase::iconDatabaseNotificationUserInfoURLKey(), &amp;iconUserInfoURL, 0);
</del><ins>+    hr = propertyBag-&gt;Read(WebIconDatabase::iconDatabaseNotificationUserInfoURLKey(), &amp;iconUserInfoURL, nullptr);
</ins><span class="cx">     if (FAILED(hr))
</span><span class="cx">         return hr;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/ChangeLog        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -1,3 +1,36 @@
</span><ins>+2015-01-19  Brent Fulgham  &lt;bfulgham@apple.com&gt;
+
+        [Win] Periodic failure in DumpRenderTree related to WebActionPropertyBag::Read
+        https://bugs.webkit.org/show_bug.cgi?id=139906
+
+        Reviewed by Dean Jackson.
+
+        WebKit on Windows was creating uninitialized VARIANT structures, then attempting
+        to use them. This patch fixes that.
+
+        * DumpRenderTree/win/AccessibilityControllerWin.cpp:
+        (findAccessibleObjectById):
+        (AccessibilityController::focusedElement):
+        (logEventProc):
+        (notificationListenerProc):
+        * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
+        (AccessibilityUIElement::getChildAtIndex):
+        (AccessibilityUIElement::titleUIElement):
+        (self):
+        (AccessibilityUIElement::role):
+        (AccessibilityUIElement::valueDescription):
+        (accessibilityState):
+        (AccessibilityUIElement::isChecked):
+        * DumpRenderTree/win/DumpRenderTree.cpp:
+        (dumpFrameScrollPosition):
+        (dumpFramesAsText):
+        * DumpRenderTree/win/PolicyDelegate.cpp:
+        (PolicyDelegate::decidePolicyForNavigationAction):
+        * DumpRenderTree/win/UIDelegate.cpp:
+        (UIDelegate::exceededDatabaseQuota):
+        * WinLauncher/Common.cpp:
+        (setWindowText):
+
</ins><span class="cx"> 2015-01-19  Dean Jackson  &lt;dino@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add &quot;override&quot; to fix the build with newer clangs.
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinAccessibilityControllerWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -90,22 +90,18 @@
</span><span class="cx">     if (!comparable)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><del>-    VARIANT value;
-    ::VariantInit(&amp;value);
-
</del><ins>+    COMVariant navigationType;
+    _variant_t value;
</ins><span class="cx">     _bstr_t elementIdAttributeKey(L&quot;AXDRTElementIdAttribute&quot;);
</span><del>-    if (SUCCEEDED(comparable-&gt;get_attribute(elementIdAttributeKey, &amp;value))) {
</del><ins>+    if (SUCCEEDED(comparable-&gt;get_attribute(elementIdAttributeKey, &amp;value.GetVARIANT()))) {
</ins><span class="cx">         ASSERT(V_VT(&amp;value) == VT_BSTR);
</span><del>-        if (VARCMP_EQ == ::VarBstrCmp(value.bstrVal, idAttribute, LOCALE_USER_DEFAULT, 0)) {
-            ::VariantClear(&amp;value);
</del><ins>+        if (VARCMP_EQ == ::VarBstrCmp(value.bstrVal, idAttribute, LOCALE_USER_DEFAULT, 0))
</ins><span class="cx">             return parentIAccessible;
</span><del>-        }
</del><span class="cx">     }
</span><del>-    ::VariantClear(&amp;value);
</del><span class="cx"> 
</span><span class="cx">     long childCount = parentObject.childrenCount();
</span><span class="cx">     if (!childCount)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     COMPtr&lt;IAccessible&gt; result;
</span><span class="cx">     for (long i = 0; i &lt; childCount; ++i) {
</span><span class="lines">@@ -116,7 +112,7 @@
</span><span class="cx">             return result;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef id)
</span><span class="lines">@@ -136,9 +132,9 @@
</span><span class="cx"> {
</span><span class="cx">     COMPtr&lt;IAccessible&gt; rootAccessible = rootElement().platformUIElement();
</span><span class="cx"> 
</span><del>-    VARIANT vFocus;
-    if (FAILED(rootAccessible-&gt;get_accFocus(&amp;vFocus)))
-        return 0;
</del><ins>+    _variant_t vFocus;
+    if (FAILED(rootAccessible-&gt;get_accFocus(&amp;vFocus.GetVARIANT())))
+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     if (V_VT(&amp;vFocus) == VT_I4) {
</span><span class="cx">         ASSERT(V_I4(&amp;vFocus) == CHILDID_SELF);
</span><span class="lines">@@ -179,18 +175,16 @@
</span><span class="cx">     // Get the accessible object for this event.
</span><span class="cx">     COMPtr&lt;IAccessible&gt; parentObject;
</span><span class="cx"> 
</span><del>-    VARIANT vChild;
-    VariantInit(&amp;vChild);
</del><ins>+    _variant_t vChild;
</ins><span class="cx"> 
</span><del>-    HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &amp;parentObject, &amp;vChild);
</del><ins>+    HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &amp;parentObject, &amp;vChild.GetVARIANT());
</ins><span class="cx">     ASSERT(SUCCEEDED(hr));
</span><span class="cx"> 
</span><span class="cx">     // Get the name of the focused element, and log it to stdout.
</span><del>-    BSTR nameBSTR;
-    hr = parentObject-&gt;get_accName(vChild, &amp;nameBSTR);
</del><ins>+    _bstr_t nameBSTR;
+    hr = parentObject-&gt;get_accName(vChild, &amp;nameBSTR.GetBSTR());
</ins><span class="cx">     ASSERT(SUCCEEDED(hr));
</span><del>-    wstring name(nameBSTR, ::SysStringLen(nameBSTR));
-    SysFreeString(nameBSTR);
</del><ins>+    wstring name(nameBSTR, nameBSTR.length());
</ins><span class="cx"> 
</span><span class="cx">     switch (event) {
</span><span class="cx">         case EVENT_OBJECT_FOCUS:
</span><span class="lines">@@ -202,11 +196,10 @@
</span><span class="cx">             break;
</span><span class="cx"> 
</span><span class="cx">         case EVENT_OBJECT_VALUECHANGE: {
</span><del>-            BSTR valueBSTR;
-            hr = parentObject-&gt;get_accValue(vChild, &amp;valueBSTR);
</del><ins>+            _bstr_t valueBSTR;
+            hr = parentObject-&gt;get_accValue(vChild, &amp;valueBSTR.GetBSTR());
</ins><span class="cx">             ASSERT(SUCCEEDED(hr));
</span><del>-            wstring value(valueBSTR, ::SysStringLen(valueBSTR));
-            SysFreeString(valueBSTR);
</del><ins>+            wstring value(valueBSTR, valueBSTR.length());
</ins><span class="cx"> 
</span><span class="cx">             printf(&quot;Received value change event for object '%S', value '%S'.\n&quot;, name.c_str(), value.c_str());
</span><span class="cx">             break;
</span><span class="lines">@@ -220,8 +213,6 @@
</span><span class="cx">             printf(&quot;Received unknown event for object '%S'.\n&quot;, name.c_str());
</span><span class="cx">             break;
</span><span class="cx">     }
</span><del>-
-    VariantClear(&amp;vChild);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AccessibilityController::setLogFocusEvents(bool logFocusEvents)
</span><span class="lines">@@ -323,24 +314,17 @@
</span><span class="cx">     // Get the accessible object for this event.
</span><span class="cx">     COMPtr&lt;IAccessible&gt; parentObject;
</span><span class="cx"> 
</span><del>-    VARIANT vChild;
-    VariantInit(&amp;vChild);
-
-    HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &amp;parentObject, &amp;vChild);
</del><ins>+    _variant_t vChild;
+    HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &amp;parentObject, &amp;vChild.GetVARIANT());
</ins><span class="cx">     if (FAILED(hr) || !parentObject)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     COMPtr&lt;IDispatch&gt; childDispatch;
</span><del>-    if (FAILED(parentObject-&gt;get_accChild(vChild, &amp;childDispatch))) {
-        VariantClear(&amp;vChild);
</del><ins>+    if (FAILED(parentObject-&gt;get_accChild(vChild, &amp;childDispatch)))
</ins><span class="cx">         return;
</span><del>-    }
</del><span class="cx"> 
</span><span class="cx">     COMPtr&lt;IAccessible&gt; childAccessible(Query, childDispatch);
</span><del>-
</del><span class="cx">     sharedFrameLoadDelegate-&gt;accessibilityController()-&gt;winNotificationReceived(childAccessible, stringEvent(event));
</span><del>-
-    VariantClear(&amp;vChild);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool AccessibilityController::addNotificationListener(JSObjectRef functionCallback)
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinAccessibilityUIElementWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -145,16 +145,15 @@
</span><span class="cx"> AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index)
</span><span class="cx"> {
</span><span class="cx">     if (!m_element)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     COMPtr&lt;IDispatch&gt; child;
</span><del>-    VARIANT vChild;
-    ::VariantInit(&amp;vChild);
</del><ins>+    _variant_t vChild;
</ins><span class="cx">     V_VT(&amp;vChild) = VT_I4;
</span><span class="cx">     // In MSAA, index 0 is the object itself.
</span><span class="cx">     V_I4(&amp;vChild) = index + 1;
</span><del>-    if (FAILED(m_element-&gt;get_accChild(vChild, &amp;child)))
-        return 0;
</del><ins>+    if (FAILED(m_element-&gt;get_accChild(vChild.GetVARIANT(), &amp;child)))
+        return nullptr;
</ins><span class="cx">     return COMPtr&lt;IAccessible&gt;(Query, child);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -187,31 +186,22 @@
</span><span class="cx">     if (!comparable)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><del>-    VARIANT value;
-    ::VariantInit(&amp;value);
-
</del><ins>+    _variant_t value;
</ins><span class="cx">     _bstr_t titleUIElementAttributeKey(L&quot;AXTitleUIElementAttribute&quot;);
</span><del>-    if (FAILED(comparable-&gt;get_attribute(titleUIElementAttributeKey, &amp;value))) {
-        ::VariantClear(&amp;value);
-        return 0;
-    }
</del><ins>+    if (FAILED(comparable-&gt;get_attribute(titleUIElementAttributeKey, &amp;value.GetVARIANT())))
+        return nullptr;
</ins><span class="cx"> 
</span><del>-    if (V_VT(&amp;value) == VT_EMPTY) {
-        ::VariantClear(&amp;value);
-        return 0;
-    }
</del><ins>+    if (V_VT(&amp;value) == VT_EMPTY)
+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(V_VT(&amp;value) == VT_UNKNOWN);
</span><span class="cx"> 
</span><del>-    if (V_VT(&amp;value) != VT_UNKNOWN) {
-        ::VariantClear(&amp;value);
-        return 0;
-    }
</del><ins>+    if (V_VT(&amp;value) != VT_UNKNOWN)
+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     COMPtr&lt;IAccessible&gt; titleElement(Query, value.punkVal);
</span><span class="cx">     if (value.punkVal)
</span><span class="cx">         value.punkVal-&gt;Release();
</span><del>-    ::VariantClear(&amp;value);
</del><span class="cx"> 
</span><span class="cx">     return titleElement;
</span><span class="cx"> }
</span><span class="lines">@@ -240,11 +230,10 @@
</span><span class="cx"> 
</span><span class="cx"> static VARIANT&amp; self()
</span><span class="cx"> {
</span><del>-    static VARIANT vSelf;
</del><ins>+    static _variant_t vSelf;
</ins><span class="cx">     static bool haveInitialized;
</span><span class="cx"> 
</span><span class="cx">     if (!haveInitialized) {
</span><del>-        ::VariantInit(&amp;vSelf);
</del><span class="cx">         V_VT(&amp;vSelf) = VT_I4;
</span><span class="cx">         V_I4(&amp;vSelf) = CHILDID_SELF;
</span><span class="cx">     }
</span><span class="lines">@@ -256,15 +245,15 @@
</span><span class="cx">     if (!m_element)
</span><span class="cx">         return JSStringCreateWithCharacters(0, 0);
</span><span class="cx"> 
</span><del>-    VARIANT vRole;
-    if (FAILED(m_element-&gt;get_accRole(self(), &amp;vRole)))
-        return JSStringCreateWithCharacters(0, 0);
</del><ins>+    _variant_t vRole;
+    if (FAILED(m_element-&gt;get_accRole(self(), &amp;vRole.GetVARIANT())))
+        return JSStringCreateWithCharacters(nullptr, 0);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(V_VT(&amp;vRole) == VT_I4 || V_VT(&amp;vRole) == VT_BSTR);
</span><span class="cx"> 
</span><span class="cx">     wstring result;
</span><span class="cx">     if (V_VT(&amp;vRole) == VT_I4) {
</span><del>-        unsigned roleTextLength = ::GetRoleText(V_I4(&amp;vRole), 0, 0) + 1;
</del><ins>+        unsigned roleTextLength = ::GetRoleText(V_I4(&amp;vRole), nullptr, 0) + 1;
</ins><span class="cx"> 
</span><span class="cx">         Vector&lt;TCHAR&gt; roleText(roleTextLength);
</span><span class="cx"> 
</span><span class="lines">@@ -274,8 +263,6 @@
</span><span class="cx">     } else if (V_VT(&amp;vRole) == VT_BSTR)
</span><span class="cx">         result = wstring(V_BSTR(&amp;vRole), ::SysStringLen(V_BSTR(&amp;vRole)));
</span><span class="cx"> 
</span><del>-    ::VariantClear(&amp;vRole);
-
</del><span class="cx">     return JSStringCreateWithCharacters(result.data(), result.length());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -394,19 +381,18 @@
</span><span class="cx"> 
</span><span class="cx"> JSStringRef AccessibilityUIElement::valueDescription()
</span><span class="cx"> {
</span><del>-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static DWORD accessibilityState(COMPtr&lt;IAccessible&gt; element)
</span><span class="cx"> {
</span><del>-    VARIANT state;
-    if (FAILED(element-&gt;get_accState(self(), &amp;state)))
</del><ins>+    _variant_t state;
+    if (FAILED(element-&gt;get_accState(self(), &amp;state.GetVARIANT())))
</ins><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     ASSERT(V_VT(&amp;state) == VT_I4);
</span><span class="cx"> 
</span><span class="cx">     DWORD result = state.lVal;
</span><del>-    VariantClear(&amp;state);
</del><span class="cx"> 
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="lines">@@ -448,8 +434,8 @@
</span><span class="cx">     if (!m_element)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    VARIANT vState;
-    if (FAILED(m_element-&gt;get_accState(self(), &amp;vState)))
</del><ins>+    _variant_t vState;
+    if (FAILED(m_element-&gt;get_accState(self(), &amp;vState.GetVARIANT())))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     return vState.lVal &amp; STATE_SYSTEM_CHECKED;
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinDumpRenderTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -412,14 +412,12 @@
</span><span class="cx">         COMPtr&lt;IEnumVARIANT&gt; enumKids;
</span><span class="cx">         if (FAILED(frame-&gt;childFrames(&amp;enumKids)))
</span><span class="cx">             return;
</span><del>-        VARIANT var;
-        VariantInit(&amp;var);
-        while (enumKids-&gt;Next(1, &amp;var, 0) == S_OK) {
</del><ins>+        _variant_t var;
+        while (enumKids-&gt;Next(1, &amp;var.GetVARIANT(), nullptr) == S_OK) {
</ins><span class="cx">             ASSERT(V_VT(&amp;var) == VT_UNKNOWN);
</span><span class="cx">             COMPtr&lt;IWebFrame&gt; framePtr;
</span><span class="cx">             V_UNKNOWN(&amp;var)-&gt;QueryInterface(IID_IWebFrame, (void**)&amp;framePtr);
</span><span class="cx">             dumpFrameScrollPosition(framePtr.get());
</span><del>-            VariantClear(&amp;var);
</del><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -467,14 +465,12 @@
</span><span class="cx">         if (FAILED(frame-&gt;childFrames(&amp;enumKids)))
</span><span class="cx">             return L&quot;&quot;;
</span><span class="cx"> 
</span><del>-        VARIANT var;
-        ::VariantInit(&amp;var);
-        while (enumKids-&gt;Next(1, &amp;var, 0) == S_OK) {
</del><ins>+        _variant_t var;
+        while (enumKids-&gt;Next(1, &amp;var.GetVARIANT(), nullptr) == S_OK) {
</ins><span class="cx">             ASSERT(V_VT(&amp;var) == VT_UNKNOWN);
</span><span class="cx">             COMPtr&lt;IWebFrame&gt; framePtr;
</span><span class="cx">             V_UNKNOWN(&amp;var)-&gt;QueryInterface(IID_IWebFrame, (void**)&amp;framePtr);
</span><span class="cx">             result.append(dumpFramesAsText(framePtr.get()));
</span><del>-            ::VariantClear(&amp;var);
</del><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinPolicyDelegatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/PolicyDelegate.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/PolicyDelegate.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/PolicyDelegate.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -90,20 +90,16 @@
</span><span class="cx">     return newRef;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-HRESULT PolicyDelegate::decidePolicyForNavigationAction(
-    /*[in]*/ IWebView* /*webView*/, 
-    /*[in]*/ IPropertyBag* actionInformation, 
-    /*[in]*/ IWebURLRequest* request, 
-    /*[in]*/ IWebFrame* frame, 
-    /*[in]*/ IWebPolicyDecisionListener* listener)
</del><ins>+HRESULT PolicyDelegate::decidePolicyForNavigationAction(IWebView* /*webView*/, IPropertyBag* actionInformation, 
+    IWebURLRequest* request, IWebFrame* frame, IWebPolicyDecisionListener* listener)
</ins><span class="cx"> {
</span><span class="cx">     _bstr_t url;
</span><span class="cx">     request-&gt;URL(&amp;url.GetBSTR());
</span><span class="cx">     wstring wurl = urlSuitableForTestResult(wstring(url, url.length()));
</span><span class="cx"> 
</span><span class="cx">     int navType = 0;
</span><del>-    VARIANT var;
-    if (SUCCEEDED(actionInformation-&gt;Read(WebActionNavigationTypeKey, &amp;var, 0))) {
</del><ins>+    _variant_t var;
+    if (SUCCEEDED(actionInformation-&gt;Read(WebActionNavigationTypeKey, &amp;var.GetVARIANT(), nullptr))) {
</ins><span class="cx">         V_VT(&amp;var) = VT_I4;
</span><span class="cx">         navType = V_I4(&amp;var);
</span><span class="cx">     }
</span><span class="lines">@@ -134,11 +130,11 @@
</span><span class="cx"> 
</span><span class="cx">     wstring message = TEXT(&quot;Policy delegate: attempt to load &quot;) + wurl + TEXT(&quot; with navigation type '&quot;) + typeDescription + TEXT(&quot;'&quot;);
</span><span class="cx"> 
</span><del>-    VARIANT actionElementVar;
-    if (SUCCEEDED(actionInformation-&gt;Read(WebActionElementKey, &amp;actionElementVar, 0))) {
</del><ins>+    _variant_t actionElementVar;
+    if (SUCCEEDED(actionInformation-&gt;Read(WebActionElementKey, &amp;actionElementVar, nullptr))) {
</ins><span class="cx">         COMPtr&lt;IPropertyBag&gt; actionElement(Query, V_UNKNOWN(&amp;actionElementVar));
</span><del>-        VARIANT originatingNodeVar;
-        if (SUCCEEDED(actionElement-&gt;Read(WebElementDOMNodeKey, &amp;originatingNodeVar, 0))) {
</del><ins>+        _variant_t originatingNodeVar;
+        if (SUCCEEDED(actionElement-&gt;Read(WebElementDOMNodeKey, &amp;originatingNodeVar, nullptr))) {
</ins><span class="cx">             COMPtr&lt;IDOMNode&gt; originatingNode(Query, V_UNKNOWN(&amp;originatingNodeVar));
</span><span class="cx">             message += TEXT(&quot; originating from &quot;) + dumpPath(originatingNode.get());
</span><span class="cx">         }
</span><span class="lines">@@ -153,7 +149,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (m_controllerToNotifyDone) {
</span><span class="cx">         m_controllerToNotifyDone-&gt;notifyDone();
</span><del>-        m_controllerToNotifyDone = 0;
</del><ins>+        m_controllerToNotifyDone = nullptr;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return S_OK;
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreewinUIDelegatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/win/UIDelegate.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/win/UIDelegate.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/DumpRenderTree/win/UIDelegate.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -523,8 +523,8 @@
</span><span class="cx">         origin-&gt;setQuota(defaultQuota);
</span><span class="cx">         return S_OK;
</span><span class="cx">     }
</span><del>-    VARIANT var;
-    detailsBag-&gt;Read(WebDatabaseUsageKey, &amp;var, 0);
</del><ins>+    _variant_t var;
+    detailsBag-&gt;Read(WebDatabaseUsageKey, &amp;var.GetVARIANT(), nullptr);
</ins><span class="cx">     unsigned long long expectedSize = V_UI8(&amp;var);
</span><span class="cx">     unsigned long long newQuota = defaultQuota;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWinLauncherCommoncpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WinLauncher/Common.cpp (178668 => 178669)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WinLauncher/Common.cpp        2015-01-19 20:49:31 UTC (rev 178668)
+++ trunk/Tools/WinLauncher/Common.cpp        2015-01-19 20:58:09 UTC (rev 178669)
</span><span class="lines">@@ -665,19 +665,15 @@
</span><span class="cx"> 
</span><span class="cx"> static void setWindowText(HWND dialog, UINT field, IPropertyBagPtr statistics, const _bstr_t&amp; key)
</span><span class="cx"> {
</span><del>-    VARIANT var;
-    ::VariantInit(&amp;var);
</del><ins>+    _variant_t var;
</ins><span class="cx">     V_VT(&amp;var) = VT_UI8;
</span><del>-    if (FAILED(statistics-&gt;Read(key, &amp;var, 0))) {
-        ::VariantClear(&amp;var);
</del><ins>+    if (FAILED(statistics-&gt;Read(key, &amp;var.GetVARIANT(), nullptr)))
</ins><span class="cx">         return;
</span><del>-    }
</del><span class="cx"> 
</span><span class="cx">     unsigned long long value = V_UI8(&amp;var);
</span><span class="cx">     String valueStr = WTF::String::number(value);
</span><span class="cx"> 
</span><span class="cx">     setWindowText(dialog, field, _bstr_t(valueStr.utf8().data()));
</span><del>-    ::VariantClear(&amp;var);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void setWindowText(HWND dialog, UINT field, CFDictionaryRef dictionary, CFStringRef key, UINT&amp; total)
</span></span></pre>
</div>
</div>

</body>
</html>