mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-04 07:40:42 +00:00
Crash OOM @ startup. r=darin, sr=alec, bug 175663
This commit is contained in:
parent
b57b38a037
commit
be7d6a627b
@ -138,9 +138,9 @@ NS_NewStringUnicharInputStream(nsIUnicharInputStream** aInstancePtrResult,
|
||||
|
||||
class UTF8InputStream : public nsIUnicharInputStream {
|
||||
public:
|
||||
UTF8InputStream(nsIInputStream* aStream,
|
||||
PRUint32 aBufSize);
|
||||
UTF8InputStream();
|
||||
virtual ~UTF8InputStream();
|
||||
nsresult Init(nsIInputStream* aStream, PRUint32 aBufSize);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_IMETHOD Read(PRUnichar* aBuf,
|
||||
@ -163,22 +163,29 @@ protected:
|
||||
PRUint32 mUnicharDataLength;
|
||||
};
|
||||
|
||||
UTF8InputStream::UTF8InputStream(nsIInputStream* aStream,
|
||||
PRUint32 aBufferSize) :
|
||||
mInput(aStream)
|
||||
UTF8InputStream::UTF8InputStream() :
|
||||
mByteDataOffset(0),
|
||||
mUnicharDataOffset(0),
|
||||
mUnicharDataLength(0)
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
}
|
||||
|
||||
nsresult
|
||||
UTF8InputStream::Init(nsIInputStream* aStream, PRUint32 aBufferSize)
|
||||
{
|
||||
if (aBufferSize == 0) {
|
||||
aBufferSize = 8192;
|
||||
}
|
||||
|
||||
// XXX what if these fail?
|
||||
NS_NewByteBuffer(getter_AddRefs(mByteData), nsnull, aBufferSize);
|
||||
NS_NewUnicharBuffer(getter_AddRefs(mUnicharData), nsnull, aBufferSize);
|
||||
nsresult rv = NS_NewByteBuffer(getter_AddRefs(mByteData), nsnull, aBufferSize);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = NS_NewUnicharBuffer(getter_AddRefs(mUnicharData), nsnull, aBufferSize);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
mByteDataOffset = 0;
|
||||
mUnicharDataOffset = 0;
|
||||
mUnicharDataLength = 0;
|
||||
mInput = aStream;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS1(UTF8InputStream,nsIUnicharInputStream)
|
||||
@ -314,12 +321,15 @@ NS_NewUTF8ConverterStream(nsIUnicharInputStream** aInstancePtrResult,
|
||||
PRInt32 aBufferSize)
|
||||
{
|
||||
// Create converter input stream
|
||||
UTF8InputStream* it =
|
||||
new UTF8InputStream(aStreamToWrap, aBufferSize);
|
||||
|
||||
UTF8InputStream* it = new UTF8InputStream();
|
||||
if (nsnull == it) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
nsresult rv = it->Init(aStreamToWrap, aBufferSize);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
return it->QueryInterface(NS_GET_IID(nsIUnicharInputStream),
|
||||
(void **) aInstancePtrResult);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user