| Index: src/plugin/AdblockPlusDomTraverser.cpp | 
| =================================================================== | 
| --- a/src/plugin/AdblockPlusDomTraverser.cpp | 
| +++ b/src/plugin/AdblockPlusDomTraverser.cpp | 
| @@ -1,5 +1,6 @@ | 
| #include "PluginStdAfx.h" | 
|  | 
| +#include "COM_Value.h" | 
| #include "PluginClient.h" | 
| #include "PluginFilter.h" | 
| #include "PluginSettings.h" | 
| @@ -66,11 +67,10 @@ | 
| // Objects | 
| else if (tag == "object") | 
| { | 
| -    CComBSTR bstrInnerHtml; | 
| - | 
| -    if (SUCCEEDED(pEl->get_innerHTML(&bstrInnerHtml)) && bstrInnerHtml) | 
| +    AdblockPlus::COM::BSTR_Argument inner_HTML; | 
| +    if (SUCCEEDED(pEl->get_innerHTML(&inner_HTML))) | 
| { | 
| -      CString sObjectHtml = bstrInnerHtml; | 
| +      CString sObjectHtml = to_CString(inner_HTML); | 
| CString src; | 
|  | 
| int posBegin = sObjectHtml.Find(L"VALUE=\""); | 
| @@ -122,16 +122,15 @@ | 
|  | 
| if (SUCCEEDED(pEl->get_style(&pStyle)) && pStyle) | 
| { | 
| -    CComBSTR bstrDisplay; | 
| - | 
| -    if (SUCCEEDED(pStyle->get_display(&bstrDisplay)) && bstrDisplay && CString(bstrDisplay) == L"none") | 
| +    AdblockPlus::COM::BSTR_Argument display; | 
| +    // Explicit call to conversion operator compensates for deficiencies in VS2012 | 
| +    if (SUCCEEDED(pStyle->get_display(&display)) && display.operator std::wstring() == L"none") | 
| { | 
| return; | 
| } | 
|  | 
| -    static const CComBSTR sbstrNone(L"none"); | 
| - | 
| -    if (SUCCEEDED(pStyle->put_display(sbstrNone))) | 
| +    static const AdblockPlus::COM::BSTR_Argument none(std::wstring(L"none")); | 
| +    if (SUCCEEDED(pStyle->put_display(none))) | 
| { | 
| DEBUG_HIDE_EL(indent + L"HideEl::Hiding " + type + L" url:" + url) | 
|  | 
|  |