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


Reply via email to