diff --git a/mozilla/widget/src/photon/nsClipboard.cpp b/mozilla/widget/src/photon/nsClipboard.cpp index 4e72cbe50a9..489846414d2 100644 --- a/mozilla/widget/src/photon/nsClipboard.cpp +++ b/mozilla/widget/src/photon/nsClipboard.cpp @@ -560,7 +560,7 @@ nsClipboard::HasDataMatchingFlavors(nsISupportsArray* aFlavorList, nsresult nsClipboard::GetFormat(const char* aMimeStr, char *format ) { - nsCAutoString mimeStr ( CBufDescriptor(NS_CONST_CAST(char*,aMimeStr), PR_TRUE, PL_strlen(aMimeStr)+1) ); + nsDependentCString mimeStr(aMimeStr); int ret = NS_OK; if( mimeStr.Equals(kUnicodeMime) || mimeStr.Equals(kTextMime) ) diff --git a/mozilla/xpcom/string/obsolete/nsString.cpp b/mozilla/xpcom/string/obsolete/nsString.cpp index 72797f743f8..3ac7f6b89c8 100644 --- a/mozilla/xpcom/string/obsolete/nsString.cpp +++ b/mozilla/xpcom/string/obsolete/nsString.cpp @@ -74,6 +74,14 @@ nsCString::nsCString() { nsStrPrivate::Initialize(*this,eOneByte); } +inline +nsCString::nsCString(char* aCString, PRUint32 aCapacity, PRUint32 aLength, + eCharSize aCharSize, PRBool aOwnsBuffer) { + nsStrPrivate::Initialize(*this, aCString, aCapacity, aLength, aCharSize, + aOwnsBuffer); +} + + nsCString::nsCString(const char* aCString) { nsStrPrivate::Initialize(*this,eOneByte); Assign(aCString); @@ -1193,26 +1201,29 @@ NS_LossyConvertUTF16toASCII::NS_LossyConvertUTF16toASCII( const nsAString& aStri * Default constructor * */ -nsCAutoString::nsCAutoString() : nsCString(){ - nsStrPrivate::Initialize(*this,mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE); +nsCAutoString::nsCAutoString() + : nsCString(mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE) +{ AddNullTerminator(*this); - } -nsCAutoString::nsCAutoString( const nsCString& aString ) : nsCString(){ - nsStrPrivate::Initialize(*this,mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE); +nsCAutoString::nsCAutoString( const nsCString& aString ) + : nsCString(mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE) +{ AddNullTerminator(*this); Append(aString); } -nsCAutoString::nsCAutoString( const nsACString& aString ) : nsCString(){ - nsStrPrivate::Initialize(*this,mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE); +nsCAutoString::nsCAutoString( const nsACString& aString ) + : nsCString(mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE) +{ AddNullTerminator(*this); Append(aString); } -nsCAutoString::nsCAutoString(const char* aCString) : nsCString() { - nsStrPrivate::Initialize(*this,mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE); +nsCAutoString::nsCAutoString(const char* aCString) + : nsCString(mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE) +{ AddNullTerminator(*this); Append(aCString); } @@ -1221,8 +1232,9 @@ nsCAutoString::nsCAutoString(const char* aCString) : nsCString() { * Copy construct from ascii c-string * @param aCString is a ptr to a 1-byte cstr */ -nsCAutoString::nsCAutoString(const char* aCString,PRInt32 aLength) : nsCString() { - nsStrPrivate::Initialize(*this,mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE); +nsCAutoString::nsCAutoString(const char* aCString,PRInt32 aLength) + : nsCString(mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE) +{ AddNullTerminator(*this); Append(aCString,aLength); } @@ -1231,13 +1243,10 @@ nsCAutoString::nsCAutoString(const char* aCString,PRInt32 aLength) : nsCString() * Copy construct using an external buffer descriptor * @param aBuffer -- descibes external buffer */ -nsCAutoString::nsCAutoString(const CBufDescriptor& aBuffer) : nsCString() { - if(!aBuffer.mBuffer) { - nsStrPrivate::Initialize(*this,mBuffer,sizeof(mBuffer)-1,0,eOneByte,PR_FALSE); - } - else { - nsStrPrivate::Initialize(*this,aBuffer.mBuffer,aBuffer.mCapacity,aBuffer.mLength,aBuffer.mCharSize,!aBuffer.mStackBased); - } +nsCAutoString::nsCAutoString(const CBufDescriptor& aBuffer) + : nsCString(aBuffer.mBuffer,aBuffer.mCapacity,aBuffer.mLength,aBuffer.mCharSize,!aBuffer.mStackBased) +{ + NS_ASSERTION(aBuffer.mBuffer, "null buffer"); if(!aBuffer.mIsConst) AddNullTerminator(*this); //this isn't really needed, but it guarantees that folks don't pass string constants. } diff --git a/mozilla/xpcom/string/obsolete/nsString.h b/mozilla/xpcom/string/obsolete/nsString.h index ef13a352254..64c780fd883 100644 --- a/mozilla/xpcom/string/obsolete/nsString.h +++ b/mozilla/xpcom/string/obsolete/nsString.h @@ -79,6 +79,14 @@ public: */ nsCString(); +protected: + /** + * Constructor for the use of derived classes. + */ + inline nsCString(char* aCString, PRUint32 aCapacity, PRUint32 aLength, + eCharSize aCharSize, PRBool aOwnsBuffer); + +public: /** * This is our copy constructor * @param reference to another nsCString diff --git a/mozilla/xpcom/string/obsolete/nsString2.cpp b/mozilla/xpcom/string/obsolete/nsString2.cpp index 2b87c4d559e..a0f41cd73ff 100644 --- a/mozilla/xpcom/string/obsolete/nsString2.cpp +++ b/mozilla/xpcom/string/obsolete/nsString2.cpp @@ -73,6 +73,14 @@ nsString::nsString() { nsStrPrivate::Initialize(*this,eTwoByte); } +inline +nsString::nsString(PRUnichar* aString, PRUint32 aCapacity, PRUint32 aLength, + eCharSize aCharSize, PRBool aOwnsBuffer) { + nsStrPrivate::Initialize(*this, (char*)aString, aCapacity, aLength, + aCharSize, aOwnsBuffer); +} + + nsString::nsString(const PRUnichar* aString) { nsStrPrivate::Initialize(*this,eTwoByte); Assign(aString); @@ -1275,13 +1283,15 @@ PRBool nsString::IsASCII(const PRUnichar* aBuffer) { * Default constructor * */ -nsAutoString::nsAutoString() : nsString() { - nsStrPrivate::Initialize(*this, (char*)mBuffer, (sizeof(mBuffer)/sizeof(mBuffer[0]))-1, 0, eTwoByte, PR_FALSE); +nsAutoString::nsAutoString() + : nsString(mBuffer, NS_ARRAY_LENGTH(mBuffer)-1, 0, eTwoByte, PR_FALSE) +{ AddNullTerminator(*this); } -nsAutoString::nsAutoString(const PRUnichar* aString) : nsString() { - nsStrPrivate::Initialize(*this, (char*)mBuffer, (sizeof(mBuffer)/sizeof(mBuffer[0]))-1, 0, eTwoByte, PR_FALSE); +nsAutoString::nsAutoString(const PRUnichar* aString) + : nsString(mBuffer, NS_ARRAY_LENGTH(mBuffer)-1, 0, eTwoByte, PR_FALSE) +{ AddNullTerminator(*this); Append(aString); } @@ -1291,24 +1301,23 @@ nsAutoString::nsAutoString(const PRUnichar* aString) : nsString() { * @param aString is a ptr to a unistr * @param aLength tells us how many chars to copy from aString */ -nsAutoString::nsAutoString(const PRUnichar* aString,PRInt32 aLength) : nsString() { - nsStrPrivate::Initialize(*this, (char*)mBuffer, (sizeof(mBuffer)/sizeof(mBuffer[0]))-1, 0, eTwoByte, PR_FALSE); +nsAutoString::nsAutoString(const PRUnichar* aString,PRInt32 aLength) + : nsString(mBuffer, NS_ARRAY_LENGTH(mBuffer)-1, 0, eTwoByte, PR_FALSE) +{ AddNullTerminator(*this); Append(aString,aLength); } nsAutoString::nsAutoString( const nsString& aString ) - : nsString() + : nsString(mBuffer, NS_ARRAY_LENGTH(mBuffer)-1, 0, eTwoByte, PR_FALSE) { - nsStrPrivate::Initialize(*this, (char*)mBuffer, (sizeof(mBuffer)/sizeof(mBuffer[0]))-1, 0, eTwoByte, PR_FALSE); AddNullTerminator(*this); Append(aString); } nsAutoString::nsAutoString( const nsAString& aString ) - : nsString() + : nsString(mBuffer, NS_ARRAY_LENGTH(mBuffer)-1, 0, eTwoByte, PR_FALSE) { - nsStrPrivate::Initialize(*this, (char*)mBuffer, (sizeof(mBuffer)/sizeof(mBuffer[0]))-1, 0, eTwoByte, PR_FALSE); AddNullTerminator(*this); Append(aString); } @@ -1319,13 +1328,12 @@ nsAutoString::nsAutoString( const nsAString& aString ) * constructor that uses external buffer * @param aBuffer describes the external buffer */ -nsAutoString::nsAutoString(const CBufDescriptor& aBuffer) : nsString() { - if(!aBuffer.mBuffer) { - nsStrPrivate::Initialize(*this, (char*)mBuffer, (sizeof(mBuffer)/sizeof(mBuffer[0]))-1, 0, eTwoByte, PR_FALSE); - } - else { - nsStrPrivate::Initialize(*this, aBuffer.mBuffer, aBuffer.mCapacity, aBuffer.mLength, aBuffer.mCharSize, !aBuffer.mStackBased); - } +nsAutoString::nsAutoString(const CBufDescriptor& aBuffer) + : nsString(NS_REINTERPRET_CAST(PRUnichar*,aBuffer.mBuffer), + aBuffer.mCapacity, aBuffer.mLength, aBuffer.mCharSize, + !aBuffer.mStackBased) +{ + NS_ASSERTION(aBuffer.mBuffer, "null buffer"); if(!aBuffer.mIsConst) AddNullTerminator(*this); } @@ -1455,8 +1463,9 @@ NS_ConvertUTF8toUTF16::Init( const char* aCString, PRUint32 aLength ) /** * Default copy constructor */ -nsAutoString::nsAutoString(const nsAutoString& aString) : nsString() { - nsStrPrivate::Initialize(*this,(char*)mBuffer,(sizeof(mBuffer)/sizeof(mBuffer[0]))-1,0,eTwoByte,PR_FALSE); +nsAutoString::nsAutoString(const nsAutoString& aString) + : nsString(mBuffer,NS_ARRAY_LENGTH(mBuffer)-1,0,eTwoByte,PR_FALSE) +{ AddNullTerminator(*this); Append(aString); } @@ -1466,8 +1475,9 @@ nsAutoString::nsAutoString(const nsAutoString& aString) : nsString() { * Copy construct from a unichar * @param */ -nsAutoString::nsAutoString(PRUnichar aChar) : nsString(){ - nsStrPrivate::Initialize(*this,(char*)mBuffer,(sizeof(mBuffer)/sizeof(mBuffer[0]))-1,0,eTwoByte,PR_FALSE); +nsAutoString::nsAutoString(PRUnichar aChar) + : nsString(mBuffer,NS_ARRAY_LENGTH(mBuffer)-1,0,eTwoByte,PR_FALSE) +{ AddNullTerminator(*this); Append(aChar); } diff --git a/mozilla/xpcom/string/obsolete/nsString2.h b/mozilla/xpcom/string/obsolete/nsString2.h index 9f766ea0333..bb0a35f91eb 100644 --- a/mozilla/xpcom/string/obsolete/nsString2.h +++ b/mozilla/xpcom/string/obsolete/nsString2.h @@ -109,6 +109,15 @@ public: */ nsString(); +protected: + /** + * Constructor for the use of derived classes. + */ + inline nsString(PRUnichar* aString, PRUint32 aCapacity, PRUint32 aLength, + eCharSize aCharSize, PRBool aOwnsBuffer); + +public: + /** * This is our copy constructor * @param reference to another nsString