| OLD | NEW | 
|   1 /* |   1 /* | 
|   2  * This file is part of Adblock Plus <https://adblockplus.org/>, |   2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|   3  * Copyright (C) 2006-2015 Eyeo GmbH |   3  * Copyright (C) 2006-2015 Eyeo GmbH | 
|   4  * |   4  * | 
|   5  * Adblock Plus is free software: you can redistribute it and/or modify |   5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|   6  * it under the terms of the GNU General Public License version 3 as |   6  * it under the terms of the GNU General Public License version 3 as | 
|   7  * published by the Free Software Foundation. |   7  * published by the Free Software Foundation. | 
|   8  * |   8  * | 
|   9  * Adblock Plus is distributed in the hope that it will be useful, |   9  * Adblock Plus is distributed in the hope that it will be useful, | 
|  10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  45  |  45  | 
|  46 std::wstring GetLocationUrl(IWebBrowser2& browser) |  46 std::wstring GetLocationUrl(IWebBrowser2& browser) | 
|  47 { |  47 { | 
|  48   ATL::CComBSTR locationUrl; |  48   ATL::CComBSTR locationUrl; | 
|  49   if (FAILED(browser.get_LocationURL(&locationUrl)) || !locationUrl) |  49   if (FAILED(browser.get_LocationURL(&locationUrl)) || !locationUrl) | 
|  50   { |  50   { | 
|  51     return std::wstring(); |  51     return std::wstring(); | 
|  52   } |  52   } | 
|  53   return std::wstring(locationUrl, locationUrl.Length()); |  53   return std::wstring(locationUrl, locationUrl.Length()); | 
|  54 } |  54 } | 
|  55  |  | 
|  56 void UnescapeUrl(std::wstring& url) |  | 
|  57 { |  | 
|  58   try |  | 
|  59   { |  | 
|  60     DWORD result_length = INTERNET_MAX_URL_LENGTH; |  | 
|  61     std::unique_ptr<wchar_t[]> result(new wchar_t[result_length]); |  | 
|  62     HRESULT hr = UrlUnescapeW(const_cast<wchar_t*>(url.c_str()), result.get(), &
    result_length, 0); |  | 
|  63     if (hr == S_OK) |  | 
|  64     { |  | 
|  65       url = std::wstring(result.get(), result_length); |  | 
|  66     } |  | 
|  67     /* |  | 
|  68      * Do nothing. This masks error return values from UrlUnescape without loggi
    ng the error. |  | 
|  69      */ |  | 
|  70   } |  | 
|  71   catch(std::bad_alloc e) |  | 
|  72   { |  | 
|  73     /* |  | 
|  74      * When the code has a systematic way of handling bad_alloc, we'll rethrow (
    probably). |  | 
|  75      * Until then, we mask the exception and make no modification. |  | 
|  76      */ |  | 
|  77   } |  | 
|  78   catch(...) |  | 
|  79   { |  | 
|  80     // no modification if any other exception |  | 
|  81   } |  | 
|  82 } |  | 
| OLD | NEW |