From 67cbb9dcf83b58655c4ff6f174ea8f0ad0192be9 Mon Sep 17 00:00:00 2001 From: "waterson%netscape.com" Date: Sat, 12 Jun 1999 16:39:11 +0000 Subject: [PATCH] Ensure that mBuf <-- 0 before assignment begins. Otherwise we run the rise of a failed assignment causing a duplicate free. git-svn-id: svn://10.0.0.236/trunk@35014 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/string/obsolete/nsXPIDLString.cpp | 4 ++++ mozilla/xpcom/ds/nsXPIDLString.cpp | 4 ++++ mozilla/xpcom/string/obsolete/nsXPIDLString.cpp | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/mozilla/string/obsolete/nsXPIDLString.cpp b/mozilla/string/obsolete/nsXPIDLString.cpp index e43dfdd6a6e..2994cdc3131 100644 --- a/mozilla/string/obsolete/nsXPIDLString.cpp +++ b/mozilla/string/obsolete/nsXPIDLString.cpp @@ -84,6 +84,7 @@ nsXPIDLString::StartAssignmentByValue() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_TRUE; return &mBuf; } @@ -95,6 +96,7 @@ nsXPIDLString::StartAssignmentByReference() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_FALSE; return (const PRUnichar**) &mBuf; } @@ -145,6 +147,7 @@ nsXPIDLCString::StartAssignmentByValue() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_TRUE; return &mBuf; } @@ -156,6 +159,7 @@ nsXPIDLCString::StartAssignmentByReference() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_FALSE; return (const char**) &mBuf; } diff --git a/mozilla/xpcom/ds/nsXPIDLString.cpp b/mozilla/xpcom/ds/nsXPIDLString.cpp index e43dfdd6a6e..2994cdc3131 100644 --- a/mozilla/xpcom/ds/nsXPIDLString.cpp +++ b/mozilla/xpcom/ds/nsXPIDLString.cpp @@ -84,6 +84,7 @@ nsXPIDLString::StartAssignmentByValue() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_TRUE; return &mBuf; } @@ -95,6 +96,7 @@ nsXPIDLString::StartAssignmentByReference() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_FALSE; return (const PRUnichar**) &mBuf; } @@ -145,6 +147,7 @@ nsXPIDLCString::StartAssignmentByValue() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_TRUE; return &mBuf; } @@ -156,6 +159,7 @@ nsXPIDLCString::StartAssignmentByReference() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_FALSE; return (const char**) &mBuf; } diff --git a/mozilla/xpcom/string/obsolete/nsXPIDLString.cpp b/mozilla/xpcom/string/obsolete/nsXPIDLString.cpp index e43dfdd6a6e..2994cdc3131 100644 --- a/mozilla/xpcom/string/obsolete/nsXPIDLString.cpp +++ b/mozilla/xpcom/string/obsolete/nsXPIDLString.cpp @@ -84,6 +84,7 @@ nsXPIDLString::StartAssignmentByValue() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_TRUE; return &mBuf; } @@ -95,6 +96,7 @@ nsXPIDLString::StartAssignmentByReference() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_FALSE; return (const PRUnichar**) &mBuf; } @@ -145,6 +147,7 @@ nsXPIDLCString::StartAssignmentByValue() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_TRUE; return &mBuf; } @@ -156,6 +159,7 @@ nsXPIDLCString::StartAssignmentByReference() if (mBufOwner && mBuf) XPIDL_FREE(mBuf); + mBuf = 0; mBufOwner = PR_FALSE; return (const char**) &mBuf; }