Kaydet (Commit) 2119b98e authored tarafından Mike Kaganski's avatar Mike Kaganski Kaydeden (comit) Andras Timar

tdf#116516: INTERNET_PROXY_INFO always contains char* data

Regression from e80aef4e

The InternetQueryOption has two variants: ANSI (A) and Unicode (W)
(see https://msdn.microsoft.com/en-us/library/aa385101).
INTERNET_PROXY_INFO struct we are using is defined to contain two
LPCTSTR members (see https://msdn.microsoft.com/en-us/library/aa385148).
When UNICODE is defined, InternetQueryOption expands to W variant,
and at the same time, all MS-specific generic string types (like
TCHAR or LPCTSTR) are expanded to wchar_t-based types.

So, the expectation is that InternetQueryOptionW fills the struct
with pointers to widechar strings.

But actually this is not true: InternetQueryOptionW still returns
char-based strings in the struct; so just revert partially commit
above.

Change-Id: I0facb1baf2a191f7bafdf185e684bfe741ca677a
Reviewed-on: https://gerrit.libreoffice.org/51629Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 3837901e)
Reviewed-on: https://gerrit.libreoffice.org/51633Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
(cherry picked from commit 87381482)
üst 9782644d
......@@ -165,10 +165,14 @@ WinInetBackend::WinInetBackend()
// an empty proxy list, so we don't have to check if
// proxy is enabled or not
// We use a W-version of InternetQueryOption; it returns struct with pointers to wide strings
// There's no INTERNET_PROXY_INFOW, so we simply cast returned struct's members
OUString aProxyList = reinterpret_cast<const sal_Unicode*>( lpi->lpszProxy );
OUString aProxyBypassList = reinterpret_cast<const sal_Unicode*>( lpi->lpszProxyBypass );
// We use InternetQueryOptionW (see https://msdn.microsoft.com/en-us/library/aa385101);
// it fills INTERNET_PROXY_INFO struct which is definned in WinInet.h to have LPCTSTR
// (i.e., the UNICODE-dependent generic string type expanding to const wchar_t* when
// UNICODE is defined, and InternetQueryOption macro expands to InternetQueryOptionW).
// Thus, it's natural to expect that W version would return wide strings. But it's not
// true. The W version still returns const char* in INTERNET_PROXY_INFO.
OUString aProxyList = OUString::createFromAscii( lpi->lpszProxy );
OUString aProxyBypassList = OUString::createFromAscii( lpi->lpszProxyBypass );
// override default for ProxyType, which is "0" meaning "No proxies".
valueProxyType_.IsPresent = true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment