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