urlmon: Fix a LARGE_INTEGER truncation.
diff --git a/dlls/urlmon/umstream.c b/dlls/urlmon/umstream.c
index 36909b6..cb2869b 100644
--- a/dlls/urlmon/umstream.c
+++ b/dlls/urlmon/umstream.c
@@ -252,26 +252,21 @@
return E_NOTIMPL;
}
-static HRESULT WINAPI IStream_fnSeek ( IStream * iface,
+static HRESULT WINAPI IStream_fnSeek (IStream * iface,
LARGE_INTEGER dlibMove,
DWORD dwOrigin,
ULARGE_INTEGER* plibNewPosition)
{
- DWORD pos, newposlo;
- LONG newposhi;
-
+ LARGE_INTEGER newpos;
IUMCacheStream *This = (IUMCacheStream *)iface;
TRACE("(%p)\n",This);
- pos = dlibMove.QuadPart; /* FIXME: truncates */
- newposhi = 0;
- newposlo = SetFilePointer( This->handle, pos, &newposhi, dwOrigin );
- if( newposlo == INVALID_SET_FILE_POINTER && GetLastError())
+ if (!SetFilePointerEx( This->handle, dlibMove, &newpos, dwOrigin ))
return E_FAIL;
if (plibNewPosition)
- plibNewPosition->QuadPart = newposlo | ( (LONGLONG)newposhi<<32);
+ plibNewPosition->QuadPart = newpos.QuadPart;
return S_OK;
}
@@ -279,11 +274,13 @@
static HRESULT WINAPI IStream_fnSetSize (IStream * iface,
ULARGE_INTEGER libNewSize)
{
+ LARGE_INTEGER newpos;
IUMCacheStream *This = (IUMCacheStream *)iface;
TRACE("(%p)\n",This);
- if( ! SetFilePointer( This->handle, libNewSize.QuadPart, NULL, FILE_BEGIN ) )
+ newpos.QuadPart = libNewSize.QuadPart;
+ if( ! SetFilePointerEx( This->handle, newpos, NULL, FILE_BEGIN ) )
return E_FAIL;
if( ! SetEndOfFile( This->handle ) )