libmedia: Fix leaks of dirs from find_paths in AddOnManager.

This commit is contained in:
Michael Lotz
2015-04-10 14:41:27 +02:00
parent 058d3b8267
commit a0a1f480de
+7
View File
@@ -15,6 +15,7 @@
#include <string.h> #include <string.h>
#include <Architecture.h> #include <Architecture.h>
#include <AutoDeleter.h>
#include <Autolock.h> #include <Autolock.h>
#include <Directory.h> #include <Directory.h>
#include <Entry.h> #include <Entry.h>
@@ -112,6 +113,8 @@ AddOnManager::GetDecoderForFormat(entry_ref* _decoderRef,
return B_ENTRY_NOT_FOUND; return B_ENTRY_NOT_FOUND;
} }
MemoryDeleter directoriesDeleter(directories);
BPath path; BPath path;
for (uint i = 0; i < directoryCount; i++) { for (uint i = 0; i < directoryCount; i++) {
path.SetTo(directories[i]); path.SetTo(directories[i]);
@@ -144,6 +147,8 @@ AddOnManager::GetReaders(entry_ref* outRefs, int32* outCount,
return B_ENTRY_NOT_FOUND; return B_ENTRY_NOT_FOUND;
} }
MemoryDeleter directoriesDeleter(directories);
BPath path; BPath path;
for (uint i = 0; i < directoryCount; i++) { for (uint i = 0; i < directoryCount; i++) {
path.SetTo(directories[i]); path.SetTo(directories[i]);
@@ -249,6 +254,8 @@ AddOnManager::RegisterAddOns()
return; return;
} }
MemoryDeleter directoriesDeleter(directories);
BPath path; BPath path;
for (uint i = 0; i < directoryCount; i++) { for (uint i = 0; i < directoryCount; i++) {
BDirectory directory; BDirectory directory;