Hi,
Just a few comments on an otherwise good patch:
-static BOOL URL_JustLocation(LPCWSTR str) +static BOOL WINAPI URL_JustLocation(LPCWSTR str)
...
-static LPCWSTR URL_ScanID(LPCWSTR start, LPDWORD size, WINE_URL_SCAN_TYPE type) +static LPCWSTR WINAPI URL_ScanID(LPCWSTR start, LPDWORD size, WINE_URL_SCAN_TYPE type)
Is there any reason for changing the calling convention of these two functions?
+/****************************************************************
- MLBuildResURLA [SHLWAPI.406]
- See MLBuildResURLA.
- */
+HRESULT WINAPI MLBuildResURLW(LPCWSTR lpszLibName, HMODULE hMod, DWORD dwFlags,
LPCWSTR lpszRes, LPWSTR lpszDest,DWORD dwDestLen) +{
- static const WCHAR szRes[] = { 'r','e','s',':','/','/','\0' };
+#define szResLen (sizeof(szRes)/sizeof(WCHAR) - sizeof(WCHAR))
Should this not be #define szResLen (sizeof(szRes)/sizeof(WCHAR) - 1) ?
- HRESULT hRet = E_FAIL;
- TRACE("(%s,%p,0x%08lx,%s,%p,%ld)\n", debugstr_w(lpszLibName),
hMod, dwFlags,
debugstr_w(lpszRes), lpszDest, dwDestLen);- if (!lpszLibName || !hMod || hMod == INVALID_HANDLE_VALUE ||
!lpszRes ||
!lpszDest || (dwFlags && dwFlags != 2))- return E_INVALIDARG;
- if (dwDestLen >= szResLen + 1)
- {
- dwDestLen -= (szResLen + 1);
- memcpy(lpszDest, szRes, sizeof(lpszDest));
- hMod = MLLoadLibraryW(lpszLibName, hMod, dwFlags);
- if (hMod)
- {
WCHAR szBuff[MAX_PATH];if (GetModuleFileNameW(hMod, szBuff, sizeof(szBuff)/sizeof(WCHAR))){DWORD dwPathLen = strlenW(szBuff) + 1;if (dwDestLen >= dwPathLen){DWORD dwResLen;dwDestLen -= dwPathLen;memcpy(lpszDest + szResLen, szBuff, dwPathLen * sizeof(WCHAR));dwResLen = strlenW(lpszRes) + 1;if (dwDestLen >= dwResLen + 1){lpszDest[szResLen + dwPathLen + dwResLen] = '/';memcpy(lpszDest + szResLen + dwPathLen, lpszRes,dwResLen * sizeof(WCHAR));
hRet = S_OK;}}}MLFreeLibrary(hMod);- }
- }
- return hRet;
+}
Rob