On 06/04/2011 03:02 PM, Gerald Pfeifer wrote:
Resending: This really looks like a straightforward bug fix and the current code definitely wrong???
The difference between two pointers (of the same type) is the number of elements, not the number of bytes. Thus the code below was way incorrect, luckily only too conversative.
Gerald
dlls/urlmon/sec_mgr.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/dlls/urlmon/sec_mgr.c b/dlls/urlmon/sec_mgr.c index 7b4bb35..75850ee 100644 --- a/dlls/urlmon/sec_mgr.c +++ b/dlls/urlmon/sec_mgr.c @@ -529,7 +529,7 @@ static HRESULT map_url_to_zone(LPCWSTR url, DWORD *zone, LPWSTR *ret_url) hres = CoInternetParseUrl(secur_url, PARSE_PATH_FROM_URL, 0, path, sizeof(path)/sizeof(WCHAR),&size, 0);
if(SUCCEEDED(hres)&& (ptr = strchrW(path, '\\'))&& ptr-path< sizeof(root)/sizeof(WCHAR)) {
if(SUCCEEDED(hres)&& (ptr = strchrW(path, '\\'))&& ptr-path< sizeof(root)) { UINT type; memcpy(root, path, (ptr-path)*sizeof(WCHAR));
Indeed, the difference between two pointers is the number of elements. sizeof(root) is the number of bytes, sizeof(root)/sizeof(WCHAR) is the number of elements.
HTH, Joris