Jacek Caban : urlmon: Properly support dwFlags argument in CreateURLMonikerEx.

Alexandre Julliard julliard at winehq.org
Fri Jun 24 13:54:00 CDT 2011


Module: wine
Branch: master
Commit: 7cb30ca57d6157c1cca8356bcd7a19d55ff45630
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7cb30ca57d6157c1cca8356bcd7a19d55ff45630

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Jun 23 13:43:22 2011 +0200

urlmon: Properly support dwFlags argument in CreateURLMonikerEx.

---

 dlls/urlmon/umon.c |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/dlls/urlmon/umon.c b/dlls/urlmon/umon.c
index fbb2287..86c0382 100644
--- a/dlls/urlmon/umon.c
+++ b/dlls/urlmon/umon.c
@@ -555,6 +555,18 @@ HRESULT StdURLMoniker_Construct(IUnknown *outer, void **ppv)
     return S_OK;
 }
 
+static const DWORD create_flags_map[3] = {
+    Uri_CREATE_FILE_USE_DOS_PATH,  /* URL_MK_LEGACY */
+    0,                             /* URL_MK_UNIFORM */
+    Uri_CREATE_NO_CANONICALIZE     /* URL_MK_NO_CANONICALIZE */
+};
+
+static const DWORD combine_flags_map[3] = {
+    URL_FILE_USE_PATHURL,  /* URL_MK_LEGACY */
+    0,                     /* URL_MK_UNIFORM */
+    URL_DONT_SIMPLIFY      /* URL_MK_NO_CANONICALIZE */
+};
+
 /***********************************************************************
  *           CreateURLMonikerEx (URLMON.@)
  *
@@ -585,8 +597,10 @@ HRESULT WINAPI CreateURLMonikerEx(IMoniker *pmkContext, LPCWSTR szURL, IMoniker
     if (!szURL || !ppmk)
         return E_INVALIDARG;
 
-    if(dwFlags != URL_MK_LEGACY)
+    if(dwFlags > sizeof(create_flags_map)/sizeof(*create_flags_map)) {
         FIXME("Unsupported flags %x\n", dwFlags);
+        return E_INVALIDARG;
+    }
 
     if(pmkContext) {
         IUriContainer *uri_container;
@@ -601,10 +615,10 @@ HRESULT WINAPI CreateURLMonikerEx(IMoniker *pmkContext, LPCWSTR szURL, IMoniker
     }
 
     if(base_uri) {
-        hres = CoInternetCombineUrlEx(base_uri, szURL, URL_FILE_USE_PATHURL, &uri, 0);
+        hres = CoInternetCombineUrlEx(base_uri, szURL, combine_flags_map[dwFlags], &uri, 0);
         IUri_Release(base_uri);
     }else {
-        hres = CreateUri(szURL, Uri_CREATE_FILE_USE_DOS_PATH|Uri_CREATE_ALLOW_RELATIVE|Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME, 0, &uri);
+        hres = CreateUri(szURL, Uri_CREATE_ALLOW_RELATIVE|Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME|create_flags_map[dwFlags], 0, &uri);
     }
     if(FAILED(hres))
         return hres;




More information about the wine-cvs mailing list