Fixed memory leak when calling ToString on version.

Fixed 13501.
This commit is contained in:
dougt%netscape.com 1999-09-15 20:40:50 +00:00
parent af323a9056
commit 7f44b8d355
2 changed files with 32 additions and 25 deletions

View File

@ -443,20 +443,12 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
{
nsInstallFile* ie;
nsString qualifiedRegName;
nsString qualifiedVersion;
nsString tempTargetName;
nsString qualifiedVersion = aVersion;
nsString tempTargetName = aTargetName;
PRInt32 errcode = nsInstall::SUCCESS;
if( aTargetName.Equals("") )
{
tempTargetName = aJarSource;
}
else
{
tempTargetName = aTargetName;
}
if(aJarSource.Equals("") || aFolder.Equals("") )
{
*aReturn = SaveError( nsInstall::INVALID_ARGUMENTS );
@ -470,19 +462,13 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
*aReturn = SaveError( result );
return NS_OK;
}
qualifiedVersion = aVersion;
if( aTargetName.Equals("") )
tempTargetName = aJarSource;
if (qualifiedVersion == "")
{
// assume package version for overriden forms that don't take version info
*aReturn = mVersionInfo->ToString(qualifiedVersion);
qualifiedVersion.SetString("0.0.0.0");
if (NS_FAILED(*aReturn))
{
SaveError( nsInstall::UNEXPECTED_ERROR );
return NS_OK;
}
}
if ( aRegName.Equals("") )
{
@ -552,8 +538,17 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
const nsString& aTargetName,
PRInt32* aReturn)
{
nsString version;
*aReturn = mVersionInfo->ToString(version);
if (NS_FAILED(*aReturn))
{
SaveError( nsInstall::UNEXPECTED_ERROR );
return NS_OK;
}
return AddSubcomponent(aRegName,
"",
version,
aJarSource,
aFolder,
aTargetName,
@ -570,9 +565,18 @@ nsInstall::AddSubcomponent(const nsString& aJarSource,
*aReturn = SaveError( nsInstall::PACKAGE_FOLDER_NOT_SET );
return NS_OK;
}
nsString version;
*aReturn = mVersionInfo->ToString(version);
if (NS_FAILED(*aReturn))
{
SaveError( nsInstall::UNEXPECTED_ERROR );
return NS_OK;
}
return AddSubcomponent("",
"",
version,
aJarSource,
mPackageFolder,
"",

View File

@ -28,6 +28,7 @@
#include "nsIScriptGlobalObject.h"
#include "prprf.h"
#include "prmem.h"
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
@ -268,7 +269,9 @@ nsInstallVersion::ToString(nsString& aReturn)
char *result=NULL;
result = PR_sprintf_append(result, "%d.%d.%d.%d", major, minor, release, build);
aReturn = result;
aReturn.SetString(result);
PR_FREEIF(result);
return NS_OK;
}