From 465d569ee09b297f776b259197ef40ec894e0dc4 Mon Sep 17 00:00:00 2001 From: "bnesse%netscape.com" Date: Tue, 16 Apr 2002 22:16:16 +0000 Subject: [PATCH] Fix for bug 113464. Don't free unallocated objects. r=peterl, sr=beard. git-svn-id: svn://10.0.0.236/trunk@119157 18797224-902f-48f8-a5cc-f745e15eee43 --- .../plugin/base/src/nsPluginsDirMac.cpp | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/mozilla/modules/plugin/base/src/nsPluginsDirMac.cpp b/mozilla/modules/plugin/base/src/nsPluginsDirMac.cpp index f2ac0336acd..623f5b9aa9a 100644 --- a/mozilla/modules/plugin/base/src/nsPluginsDirMac.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginsDirMac.cpp @@ -314,9 +314,10 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info) // fill-in rest of info struct int variantCount = info.fVariantCount; - info.fMimeTypeArray = new char*[variantCount]; - info.fMimeDescriptionArray = new char*[variantCount]; - info.fExtensionArray = new char*[variantCount]; + info.fMimeTypeArray = new char*[variantCount]; + info.fExtensionArray = new char*[variantCount]; + if (mi.infoStrings) + info.fMimeDescriptionArray = new char*[variantCount]; short mimeIndex = 2, descriptionIndex = 2; for (int i = 0; i < variantCount; i++) { @@ -341,19 +342,24 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info) nsresult nsPluginFile::FreePluginInfo(nsPluginInfo& info) { - if (info.fPluginInfoSize <= sizeof(nsPluginInfo)) - { + if (info.fPluginInfoSize <= sizeof(nsPluginInfo)) { delete[] info.fName; delete[] info.fDescription; + int variantCount = info.fVariantCount; - for (int i = 0; i < variantCount; i++) - { + for (int i = 0; i < variantCount; i++) { delete[] info.fMimeTypeArray[i]; delete[] info.fExtensionArray[i]; - delete[] info.fMimeDescriptionArray[i]; } delete[] info.fMimeTypeArray; - delete[] info.fMimeDescriptionArray; + + if (info.fMimeDescriptionArray) { + for (int i = 0; i < variantCount; i++) { + delete[] info.fMimeDescriptionArray[i]; + } + delete[] info.fMimeDescriptionArray; + } + delete[] info.fExtensionArray; delete[] info.fFileName; delete[] info.fFullPath;