diff --git a/dlls/mshtml/protocol.c b/dlls/mshtml/protocol.c index 021ce554543..c8f8d08243d 100644 --- a/dlls/mshtml/protocol.c +++ b/dlls/mshtml/protocol.c @@ -631,31 +631,27 @@ static HRESULT WINAPI ResProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl, } url_dll = url + sizeof(wszRes)/sizeof(wszRes[0]); - if(!(url_file = strrchrW(url_dll, '/'))) { + if(!(res_type = strchrW(url_dll, '/'))) { WARN("wrong url: %s\n", debugstr_w(url)); IInternetProtocolSink_ReportResult(pOIProtSink, MK_E_SYNTAX, 0, NULL); heap_free(url); return MK_E_SYNTAX; } - *url_file++ = 0; + *res_type++ = 0; + if ((url_file = strchrW(res_type, '/'))) { + *url_file++ = 0; + }else { + url_file = res_type; + res_type = MAKEINTRESOURCEW(RT_HTML); + } + hdll = LoadLibraryExW(url_dll, NULL, LOAD_LIBRARY_AS_DATAFILE); if(!hdll) { - if (!(res_type = strrchrW(url_dll, '/'))) { - WARN("Could not open dll: %s\n", debugstr_w(url_dll)); - IInternetProtocolSink_ReportResult(pOIProtSink, HRESULT_FROM_WIN32(GetLastError()), 0, NULL); - heap_free(url); - return HRESULT_FROM_WIN32(GetLastError()); - } - *res_type++ = 0; - - hdll = LoadLibraryExW(url_dll, NULL, LOAD_LIBRARY_AS_DATAFILE); - if(!hdll) { - WARN("Could not open dll: %s\n", debugstr_w(url_dll)); - IInternetProtocolSink_ReportResult(pOIProtSink, HRESULT_FROM_WIN32(GetLastError()), 0, NULL); - heap_free(url); - return HRESULT_FROM_WIN32(GetLastError()); - } + WARN("Could not open dll: %s\n", debugstr_w(url_dll)); + IInternetProtocolSink_ReportResult(pOIProtSink, HRESULT_FROM_WIN32(GetLastError()), 0, NULL); + heap_free(url); + return HRESULT_FROM_WIN32(GetLastError()); } TRACE("trying to find resource type %s, name %s\n", debugstr_w(res_type), debugstr_w(url_file)); @@ -665,7 +661,7 @@ static HRESULT WINAPI ResProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl, LPWSTR endpoint = NULL; DWORD file_id = strtolW(url_file, &endpoint, 10); if(endpoint == url_file+strlenW(url_file)) - src = FindResourceW(hdll, MAKEINTRESOURCEW(file_id), MAKEINTRESOURCEW(RT_HTML)); + src = FindResourceW(hdll, MAKEINTRESOURCEW(file_id), res_type); if(!src) { WARN("Could not find resource\n");