Jacek Caban : mshtml: Handle aCount < buf_size case correctly in nsIInputStream::Read implementation.

Alexandre Julliard julliard at winehq.org
Tue May 12 09:08:46 CDT 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon May 11 23:08:24 2009 +0200

mshtml: Handle aCount < buf_size case correctly in nsIInputStream::Read implementation.

---

 dlls/mshtml/navigate.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 6e41699..f882e6c 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -152,18 +152,21 @@ static nsresult NSAPI nsInputStream_Read(nsIInputStream *iface, char *aBuf, PRUi
                                          PRUint32 *_retval)
 {
     nsProtocolStream *This = NSINSTREAM_THIS(iface);
+    DWORD read = aCount;
 
     TRACE("(%p)->(%p %d %p)\n", This, aBuf, aCount, _retval);
 
-    /* Gecko always calls Read with big enough buffer */
-    if(aCount < This->buf_size)
-        FIXME("aCount < This->buf_size\n");
+    if(read > This->buf_size)
+        read = This->buf_size;
 
-    *_retval = This->buf_size;
-    if(This->buf_size)
-        memcpy(aBuf, This->buf, This->buf_size);
-    This->buf_size = 0;
+    if(read) {
+        memcpy(aBuf, This->buf, read);
+        if(read < This->buf_size)
+            memmove(This->buf, This->buf+read, This->buf_size-read);
+        This->buf_size -= read;
+    }
 
+    *_retval = read;
     return NS_OK;
 }
 




More information about the wine-cvs mailing list