From fa464ed1717d1e3ff6477263ad778a9438e87a4e Mon Sep 17 00:00:00 2001 From: "jaggernaut%netscape.com" Date: Wed, 26 Dec 2001 23:14:12 +0000 Subject: [PATCH] Bug 116957: Put Adopt on ns{C}String, and use it in nsStandardURL. r=dbaron, rs=scc git-svn-id: svn://10.0.0.236/trunk@111092 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/netwerk/base/src/nsStandardURL.cpp | 3 +-- mozilla/string/obsolete/nsString.cpp | 9 ++++++++- mozilla/string/obsolete/nsString.h | 3 +++ mozilla/string/obsolete/nsString2.cpp | 8 ++++++++ mozilla/string/obsolete/nsString2.h | 2 ++ mozilla/xpcom/string/obsolete/nsString.cpp | 9 ++++++++- mozilla/xpcom/string/obsolete/nsString.h | 3 +++ mozilla/xpcom/string/obsolete/nsString2.cpp | 8 ++++++++ mozilla/xpcom/string/obsolete/nsString2.h | 2 ++ 9 files changed, 43 insertions(+), 4 deletions(-) diff --git a/mozilla/netwerk/base/src/nsStandardURL.cpp b/mozilla/netwerk/base/src/nsStandardURL.cpp index 8bc1117effe..e55bf39afc6 100644 --- a/mozilla/netwerk/base/src/nsStandardURL.cpp +++ b/mozilla/netwerk/base/src/nsStandardURL.cpp @@ -413,8 +413,7 @@ nsStandardURL::BuildNormalizedSpec(const char *spec) if (mDirectory.mLen > 1) CoalescePath(buf + mDirectory.mPos); - mSpec = buf; // XXX too bad there isn't some way of avoiding this strdup! - free(buf); + mSpec.Adopt(buf); return NS_OK; } diff --git a/mozilla/string/obsolete/nsString.cpp b/mozilla/string/obsolete/nsString.cpp index 1d3011f5fbd..8c30ffaf0e2 100644 --- a/mozilla/string/obsolete/nsString.cpp +++ b/mozilla/string/obsolete/nsString.cpp @@ -864,7 +864,14 @@ void nsCString::InsertWithConversion(PRUnichar aChar,PRUint32 anOffset){ } - +void nsCString::Adopt(char* aPtr, PRInt32 aLength) { + nsStr::Destroy(*this); + if (aLength == -1) + aLength = nsCharTraits::length(aPtr); + // We don't know the capacity, so we'll just have to assume + // capacity = length. + nsStr::Initialize(*this, aPtr, aLength, aLength, eOneByte, PR_TRUE); +} /********************************************************************** Searching methods... diff --git a/mozilla/string/obsolete/nsString.h b/mozilla/string/obsolete/nsString.h index 6b062626f2b..f8cb792b267 100644 --- a/mozilla/string/obsolete/nsString.h +++ b/mozilla/string/obsolete/nsString.h @@ -301,6 +301,9 @@ public: #endif + // Takes ownership of aPtr, sets the current length to aLength if specified. + void Adopt( char* aPtr, PRInt32 aLength = -1 ); + /********************************************************************** Searching methods... *********************************************************************/ diff --git a/mozilla/string/obsolete/nsString2.cpp b/mozilla/string/obsolete/nsString2.cpp index cba0308627d..ea846b0eb1e 100644 --- a/mozilla/string/obsolete/nsString2.cpp +++ b/mozilla/string/obsolete/nsString2.cpp @@ -866,6 +866,14 @@ void nsString::InsertWithConversion(const char* aCString,PRUint32 anOffset,PRInt } } +void nsString::Adopt(PRUnichar* aPtr, PRInt32 aLength) { + nsStr::Destroy(*this); + if (aLength == -1) + aLength = nsCharTraits::length(aPtr); + // We don't know the capacity, so we'll just have to assume + // capacity = length. + nsStr::Initialize(*this, (char*)aPtr, aLength, aLength, eTwoByte, PR_TRUE); +} /********************************************************************** diff --git a/mozilla/string/obsolete/nsString2.h b/mozilla/string/obsolete/nsString2.h index 60bc3b12a34..aefb90d02d3 100644 --- a/mozilla/string/obsolete/nsString2.h +++ b/mozilla/string/obsolete/nsString2.h @@ -322,6 +322,8 @@ public: //void InsertWithConversion(char); void InsertWithConversion(const char*, PRUint32, PRInt32=-1); + // Takes ownership of aPtr, sets the current length to aLength if specified. + void Adopt( PRUnichar* aPtr, PRInt32 aLength = -1 ); /********************************************************************** Searching methods... diff --git a/mozilla/xpcom/string/obsolete/nsString.cpp b/mozilla/xpcom/string/obsolete/nsString.cpp index 1d3011f5fbd..8c30ffaf0e2 100644 --- a/mozilla/xpcom/string/obsolete/nsString.cpp +++ b/mozilla/xpcom/string/obsolete/nsString.cpp @@ -864,7 +864,14 @@ void nsCString::InsertWithConversion(PRUnichar aChar,PRUint32 anOffset){ } - +void nsCString::Adopt(char* aPtr, PRInt32 aLength) { + nsStr::Destroy(*this); + if (aLength == -1) + aLength = nsCharTraits::length(aPtr); + // We don't know the capacity, so we'll just have to assume + // capacity = length. + nsStr::Initialize(*this, aPtr, aLength, aLength, eOneByte, PR_TRUE); +} /********************************************************************** Searching methods... diff --git a/mozilla/xpcom/string/obsolete/nsString.h b/mozilla/xpcom/string/obsolete/nsString.h index 6b062626f2b..f8cb792b267 100644 --- a/mozilla/xpcom/string/obsolete/nsString.h +++ b/mozilla/xpcom/string/obsolete/nsString.h @@ -301,6 +301,9 @@ public: #endif + // Takes ownership of aPtr, sets the current length to aLength if specified. + void Adopt( char* aPtr, PRInt32 aLength = -1 ); + /********************************************************************** Searching methods... *********************************************************************/ diff --git a/mozilla/xpcom/string/obsolete/nsString2.cpp b/mozilla/xpcom/string/obsolete/nsString2.cpp index cba0308627d..ea846b0eb1e 100644 --- a/mozilla/xpcom/string/obsolete/nsString2.cpp +++ b/mozilla/xpcom/string/obsolete/nsString2.cpp @@ -866,6 +866,14 @@ void nsString::InsertWithConversion(const char* aCString,PRUint32 anOffset,PRInt } } +void nsString::Adopt(PRUnichar* aPtr, PRInt32 aLength) { + nsStr::Destroy(*this); + if (aLength == -1) + aLength = nsCharTraits::length(aPtr); + // We don't know the capacity, so we'll just have to assume + // capacity = length. + nsStr::Initialize(*this, (char*)aPtr, aLength, aLength, eTwoByte, PR_TRUE); +} /********************************************************************** diff --git a/mozilla/xpcom/string/obsolete/nsString2.h b/mozilla/xpcom/string/obsolete/nsString2.h index 60bc3b12a34..aefb90d02d3 100644 --- a/mozilla/xpcom/string/obsolete/nsString2.h +++ b/mozilla/xpcom/string/obsolete/nsString2.h @@ -322,6 +322,8 @@ public: //void InsertWithConversion(char); void InsertWithConversion(const char*, PRUint32, PRInt32=-1); + // Takes ownership of aPtr, sets the current length to aLength if specified. + void Adopt( PRUnichar* aPtr, PRInt32 aLength = -1 ); /********************************************************************** Searching methods...