Module: wine Branch: refs/heads/master Commit: d1b375f7e65c484c9d23491620a5addfe0b54323 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=d1b375f7e65c484c9d234916...
Author: Rolf Kalbermatter rolf.kalbermatter@citeng.com Date: Fri Jan 6 13:03:50 2006 +0100
urlmon: Fix a LARGE_INTEGER truncation.
---
dlls/urlmon/umstream.c | 17 +++++++---------- 1 files changed, 7 insertions(+), 10 deletions(-)
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 @@ static HRESULT WINAPI IStream_fnWrite (I 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_fnSeek ( 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 ) )