Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/plugin/PluginUtil.cpp

Issue 29330709: Issue #3343 - Eliminate unescaping of URL (Closed)
Patch Set: Created Nov. 23, 2015, 2:16 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld