Partial fix for 41248. Check for the buffer being null and assert, but don't

crash, a=gagan
This commit is contained in:
ruslan%netscape.com 2000-06-10 02:11:04 +00:00
parent 8fb38118d9
commit cf1d7874af

View File

@ -42,7 +42,7 @@ nsByteArrayInputStream::Available (PRUint32* aResult)
if (aResult == NULL)
return NS_ERROR_NULL_POINTER;
if (_nbytes == 0)
if (_nbytes == 0 || _buffer == NULL)
*aResult = 0;
else
*aResult = _nbytes - _pos;
@ -62,15 +62,21 @@ nsByteArrayInputStream::Read (char* aBuffer, PRUint32 aCount, PRUint32 *aNumRead
if (aCount == 0 || _pos == _nbytes)
*aNumRead = 0;
else
if (aCount > _nbytes - _pos)
{
memcpy (aBuffer, &_buffer[_pos], *aNumRead = _nbytes - _pos);
_pos = _nbytes;
}
else
{
memcpy (aBuffer, &_buffer[_pos], *aNumRead = aCount);
_pos += aCount;
NS_ASSERTION (_buffer != NULL, "Stream buffer has been released - there's an ownership problem somewhere!");
if (_buffer == NULL)
*aNumRead = 0;
else
if (aCount > _nbytes - _pos)
{
memcpy (aBuffer, &_buffer[_pos], *aNumRead = _nbytes - _pos);
_pos = _nbytes;
}
else
{
memcpy (aBuffer, &_buffer[_pos], *aNumRead = aCount);
_pos += aCount;
}
}
return NS_OK;
}