bug 801466 - remove some usage of prmem in intl/ and network/ r=jduell

This commit is contained in:
Trevor Saunders 2012-12-04 18:04:39 -05:00
parent 4c3f5120bd
commit 10534070ec
11 changed files with 36 additions and 93 deletions

View File

@ -24,8 +24,6 @@
#include "nsIComponentManager.h"
#include "nsIMemory.h"
#include "nsIObserverService.h"
#include "pratom.h"
#include "prmem.h"
#include "nsCOMArray.h"
#include "nsTextFormatter.h"
#include "nsIErrorService.h"

View File

@ -7,6 +7,7 @@
#include "nsIInputStream.h"
#include "nsICharsetConverterManager.h"
#include "nsIServiceManager.h"
#include "nsReadLine.h"
#define CONVERTER_BUFFER_SIZE 8192
@ -53,7 +54,7 @@ NS_IMETHODIMP
nsConverterInputStream::Close()
{
nsresult rv = mInput ? mInput->Close() : NS_OK;
PR_FREEIF(mLineBuffer);
mLineBuffer = nullptr;
mInput = nullptr;
mConverter = nullptr;
mByteData = nullptr;
@ -234,8 +235,7 @@ NS_IMETHODIMP
nsConverterInputStream::ReadLine(nsAString& aLine, bool* aResult)
{
if (!mLineBuffer) {
nsresult rv = NS_InitLineBuffer(&mLineBuffer);
if (NS_FAILED(rv)) return rv;
mLineBuffer = new nsLineBuffer<PRUnichar>;
}
return NS_ReadLine(this, mLineBuffer, aLine, aResult);
return NS_ReadLine(this, mLineBuffer.get(), aLine, aResult);
}

View File

@ -7,12 +7,13 @@
#include "nsIConverterInputStream.h"
#include "nsIUnicharLineInputStream.h"
#include "nsString.h"
#include "nsReadLine.h"
#include "nsAutoPtr.h"
#include "nsCOMPtr.h"
#include "nsIUnicodeDecoder.h"
#include "nsIByteBuffer.h"
#include "nsIUnicharBuffer.h"
#include "nsReadLine.h"
#define NS_CONVERTERINPUTSTREAM_CONTRACTID "@mozilla.org/intl/converter-input-stream;1"
@ -58,5 +59,5 @@ class nsConverterInputStream : public nsIConverterInputStream,
uint32_t mUnicharDataLength;
PRUnichar mReplacementChar;
nsLineBuffer<PRUnichar>* mLineBuffer;
nsAutoPtr<nsLineBuffer<PRUnichar> > mLineBuffer;
};

View File

@ -7,7 +7,6 @@
#ifndef nsReadLine_h__
#define nsReadLine_h__
#include "prmem.h"
#include "nsIInputStream.h"
#include "mozilla/Likely.h"
@ -42,43 +41,13 @@
template<typename CharT>
class nsLineBuffer {
public:
nsLineBuffer() : start(buf), end(buf) { }
CharT buf[kLineBufferSize+1];
CharT* start;
CharT* end;
};
/**
* Initialize a line buffer for use with NS_ReadLine.
*
* @param aBufferPtr
* Pointer to pointer to a line buffer. Upon successful return,
* *aBufferPtr will contain a valid pointer to a line buffer, for use
* with NS_ReadLine. Use PR_Free when the buffer is no longer needed.
*
* @retval NS_OK Success.
* @retval NS_ERROR_OUT_OF_MEMORY Not enough memory to allocate the line buffer.
*
* @par Example:
* @code
* nsLineBuffer* lb;
* rv = NS_InitLineBuffer(&lb);
* if (NS_SUCCEEDED(rv)) {
* // do stuff...
* PR_Free(lb);
* }
* @endcode
*/
template<typename CharT>
nsresult
NS_InitLineBuffer (nsLineBuffer<CharT> ** aBufferPtr) {
*aBufferPtr = PR_NEW(nsLineBuffer<CharT>);
if (!(*aBufferPtr))
return NS_ERROR_OUT_OF_MEMORY;
(*aBufferPtr)->start = (*aBufferPtr)->end = (*aBufferPtr)->buf;
return NS_OK;
}
/**
* Read a line from an input stream. Lines are separated by '\r' (0x0D) or '\n'
* (0x0A), or "\r\n" or "\n\r".
@ -86,8 +55,7 @@ NS_InitLineBuffer (nsLineBuffer<CharT> ** aBufferPtr) {
* @param aStream
* The stream to read from
* @param aBuffer
* The line buffer to use. Must have been inited with
* NS_InitLineBuffer before. A single line buffer must not be used with
* The line buffer to use. A single line buffer must not be used with
* different input streams.
* @param aLine [out]
* The string where the line will be stored.

View File

@ -418,7 +418,7 @@ nsFileInputStream::Close()
}
// null out mLineBuffer in case Close() is called again after failing
PR_FREEIF(mLineBuffer);
mLineBuffer = nullptr;
nsresult rv = nsFileStreamBase::Close();
if (NS_FAILED(rv)) return rv;
if (mFile && (mBehaviorFlags & DELETE_ON_CLOSE)) {
@ -453,10 +453,9 @@ nsFileInputStream::ReadLine(nsACString& aLine, bool* aResult)
NS_ENSURE_SUCCESS(rv, rv);
if (!mLineBuffer) {
nsresult rv = NS_InitLineBuffer(&mLineBuffer);
if (NS_FAILED(rv)) return rv;
mLineBuffer = new nsLineBuffer<char>;
}
return NS_ReadLine(this, mLineBuffer, aLine, aResult);
return NS_ReadLine(this, mLineBuffer.get(), aLine, aResult);
}
NS_IMETHODIMP
@ -465,7 +464,7 @@ nsFileInputStream::Seek(int32_t aWhence, int64_t aOffset)
nsresult rv = DoPendingOpen();
NS_ENSURE_SUCCESS(rv, rv);
PR_FREEIF(mLineBuffer); // this invalidates the line buffer
mLineBuffer = nullptr;
if (!mFD) {
if (mBehaviorFlags & REOPEN_ON_REWIND) {
rv = Open(mFile, mIOFlags, mPerm);

View File

@ -7,6 +7,7 @@
#define nsFileStreams_h__
#include "nsAlgorithm.h"
#include "nsAutoPtr.h"
#include "nsIFileStreams.h"
#include "nsIFile.h"
#include "nsIInputStream.h"
@ -18,8 +19,8 @@
#include "prlog.h"
#include "prio.h"
#include "nsIIPCSerializableInputStream.h"
#include "nsReadLine.h"
template<class CharType> class nsLineBuffer;
////////////////////////////////////////////////////////////////////////////////
@ -141,7 +142,7 @@ public:
Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
protected:
nsLineBuffer<char> *mLineBuffer;
nsAutoPtr<nsLineBuffer<char> > mLineBuffer;
/**
* The file being opened.

View File

@ -4,9 +4,8 @@
#include "nsSerializationHelper.h"
#include "plbase64.h"
#include "prmem.h"
#include "mozilla/Base64.h"
#include "nsISerializable.h"
#include "nsIObjectOutputStream.h"
#include "nsIObjectInputStream.h"
@ -16,6 +15,8 @@
#include "nsComponentManagerUtils.h"
#include "nsStringStream.h"
using namespace mozilla;
nsresult
NS_SerializeToString(nsISerializable* obj, nsCSubstring& str)
{
@ -38,30 +39,12 @@ NS_SerializeToString(nsISerializable* obj, nsCSubstring& str)
nsresult
NS_DeserializeObject(const nsCSubstring& str, nsISupports** obj)
{
// Base64 maps 3 binary bytes -> 4 ASCII bytes. If the original byte array
// does not have length 0 mod 3, the input is padded with zeros and the
// output is padded with a corresponding number of trailing '=' (which are
// then sometimes dropped). To compute the correct length of the original
// byte array, we have to subtract the number of trailing '=' and then
// multiply by 3 and then divide by 4 (making sure this is an integer
// division).
nsCString decodedData;
nsresult rv = Base64Decode(str, decodedData);
NS_ENSURE_SUCCESS(rv, rv);
uint32_t size = str.Length();
if (size > 0 && str[size-1] == '=') {
if (size > 1 && str[size-2] == '=') {
size -= 2;
} else {
size -= 1;
}
}
size = (size * 3) / 4;
char* buf = PL_Base64Decode(str.BeginReading(), str.Length(), nullptr);
if (!buf)
return NS_ERROR_OUT_OF_MEMORY;
nsCOMPtr<nsIInputStream> stream;
nsresult rv = NS_NewCStringInputStream(getter_AddRefs(stream),
Substring(buf, size));
PR_Free(buf);
rv = NS_NewCStringInputStream(getter_AddRefs(stream), decodedData);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIObjectInputStream> objstream =

View File

@ -19,7 +19,6 @@
#include "nsAutoPtr.h"
#include "nsCOMPtr.h"
#include "netCore.h"
#include "prmem.h"
#include "plstr.h"
#include "prnetdb.h"
#include "prerror.h"

View File

@ -6,7 +6,6 @@
#include "nsCacheMetaData.h"
#include "nsICacheEntryDescriptor.h"
#include "prmem.h"
const char *
nsCacheMetaData::GetElement(const char * key)
@ -152,7 +151,7 @@ nsresult
nsCacheMetaData::EnsureBuffer(uint32_t bufSize)
{
if (mBufferSize < bufSize) {
char * buf = (char *)PR_REALLOC(mBuffer, bufSize);
char * buf = (char *)moz_realloc(mBuffer, bufSize);
if (!buf) {
return NS_ERROR_OUT_OF_MEMORY;
}

View File

@ -18,7 +18,8 @@ public:
~nsCacheMetaData() {
mBufferSize = mMetaSize = 0;
PR_FREEIF(mBuffer);
moz_free(mBuffer);
mBuffer = nullptr;
}
const char * GetElement(const char * key);

View File

@ -5,8 +5,10 @@
// data implementation
#include "nsIOService.h"
#include "nsDataChannel.h"
#include "mozilla/Base64.h"
#include "nsIOService.h"
#include "nsDataHandler.h"
#include "nsNetUtil.h"
#include "nsIPipe.h"
@ -14,9 +16,8 @@
#include "nsIOutputStream.h"
#include "nsReadableUtils.h"
#include "nsEscape.h"
#include "plbase64.h"
#include "plstr.h"
#include "prmem.h"
using namespace mozilla;
nsresult
nsDataChannel::OpenContentStream(bool async, nsIInputStream **result,
@ -70,17 +71,10 @@ nsDataChannel::OpenContentStream(bool async, nsIInputStream **result,
}
resultLen = ((resultLen * 3) / 4);
// XXX PL_Base64Decode will return a null pointer for decoding
// errors. Since those are more likely than out-of-memory,
// should we return NS_ERROR_MALFORMED_URI instead?
char * decodedData = PL_Base64Decode(dataBuffer.get(), dataLen, nullptr);
if (!decodedData) {
return NS_ERROR_OUT_OF_MEMORY;
}
rv = bufOutStream->Write(decodedData, resultLen, &contentLen);
PR_Free(decodedData);
nsAutoCString decodedData;
rv = Base64Decode(dataBuffer, decodedData);
NS_ENSURE_SUCCESS(rv, rv);
rv = bufOutStream->Write(decodedData.get(), resultLen, &contentLen);
} else {
rv = bufOutStream->Write(dataBuffer.get(), dataBuffer.Length(), &contentLen);
}