From ff7428a06d64e06a8d759406bd0701ef1ca24162 Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Wed, 20 Apr 2005 15:37:38 +0000 Subject: [PATCH] Throw instead of crashing if used before init(). Bug 290907, r=biesi, sr=darin, a=asa git-svn-id: svn://10.0.0.236/trunk@172490 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpcom/io/nsStorageStream.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mozilla/xpcom/io/nsStorageStream.cpp b/mozilla/xpcom/io/nsStorageStream.cpp index 95f9dd38378..ca1a599da24 100644 --- a/mozilla/xpcom/io/nsStorageStream.cpp +++ b/mozilla/xpcom/io/nsStorageStream.cpp @@ -120,6 +120,8 @@ nsStorageStream::GetOutputStream(PRInt32 aStartingOffset, nsIOutputStream * *aOutputStream) { NS_ENSURE_ARG(aOutputStream); + NS_ENSURE_TRUE(mSegmentedBuffer, NS_ERROR_NOT_INITIALIZED); + if (mWriteInProgress) return NS_ERROR_NOT_AVAILABLE; @@ -145,6 +147,8 @@ nsStorageStream::GetOutputStream(PRInt32 aStartingOffset, NS_IMETHODIMP nsStorageStream::Close() { + NS_ENSURE_TRUE(mSegmentedBuffer, NS_ERROR_NOT_INITIALIZED); + mWriteInProgress = PR_FALSE; PRInt32 segmentOffset = SegOffset(mLogicalLength); @@ -173,6 +177,8 @@ nsStorageStream::Flush() NS_IMETHODIMP nsStorageStream::Write(const char *aBuffer, PRUint32 aCount, PRUint32 *aNumWritten) { + NS_ENSURE_TRUE(mSegmentedBuffer, NS_ERROR_NOT_INITIALIZED); + const char* readCursor; PRUint32 count, availableInSegment, remaining; nsresult rv = NS_OK; @@ -256,6 +262,8 @@ nsStorageStream::GetLength(PRUint32 *aLength) NS_IMETHODIMP nsStorageStream::SetLength(PRUint32 aLength) { + NS_ENSURE_TRUE(mSegmentedBuffer, NS_ERROR_NOT_INITIALIZED); + if (mWriteInProgress) return NS_ERROR_NOT_AVAILABLE; @@ -288,6 +296,8 @@ nsStorageStream::GetWriteInProgress(PRBool *aWriteInProgress) NS_METHOD nsStorageStream::Seek(PRInt32 aPosition) { + NS_ENSURE_TRUE(mSegmentedBuffer, NS_ERROR_NOT_INITIALIZED); + // An argument of -1 means "seek to end of stream" if (aPosition == -1) aPosition = mLogicalLength; @@ -378,6 +388,8 @@ NS_IMPL_THREADSAFE_ISUPPORTS2(nsStorageInputStream, NS_IMETHODIMP nsStorageStream::NewInputStream(PRInt32 aStartingOffset, nsIInputStream* *aInputStream) { + NS_ENSURE_TRUE(mSegmentedBuffer, NS_ERROR_NOT_INITIALIZED); + nsStorageInputStream *inputStream = new nsStorageInputStream(this, mSegmentSize); if (!inputStream) return NS_ERROR_OUT_OF_MEMORY;