Rolf Kalbermatter : urlmon: Fix a LARGE_INTEGER truncation.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jan 6 06:17:05 CST 2006


Module: wine
Branch: refs/heads/master
Commit: d1b375f7e65c484c9d23491620a5addfe0b54323
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=d1b375f7e65c484c9d23491620a5addfe0b54323

Author: Rolf Kalbermatter <rolf.kalbermatter at 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 ) )




More information about the wine-cvs mailing list