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