From 9d9014409972956a9d644585a44aaab0e6ddba3a Mon Sep 17 00:00:00 2001 From: Andrew Lenharth Date: Thu, 26 Jan 2006 19:38:58 +0000 Subject: [PATCH] dynamically allocate plugin space as needed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25652 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/PluginLoader.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/Support/PluginLoader.cpp b/lib/Support/PluginLoader.cpp index 77eb52852de..94cbec3a933 100644 --- a/lib/Support/PluginLoader.cpp +++ b/lib/Support/PluginLoader.cpp @@ -19,13 +19,17 @@ using namespace llvm; -std::vector plugins; +static std::vector* plugins; void PluginLoader::operator=(const std::string &Filename) { std::string ErrorMessage; + + if (!plugins) + plugins = new std::vector(); + try { sys::DynamicLibrary::LoadLibraryPermanently(Filename.c_str()); - plugins.push_back(Filename); + plugins->push_back(Filename); } catch (const std::string& errmsg) { if (errmsg.empty()) { ErrorMessage = "Unknown"; @@ -40,11 +44,14 @@ void PluginLoader::operator=(const std::string &Filename) { unsigned PluginLoader::getNumPlugins() { - return plugins.size(); + if(plugins) + return plugins->size(); + else + return 0; } std::string& PluginLoader::getPlugin(unsigned num) { - assert(num < plugins.size() && "Asking for an out of bounds plugin"); - return plugins[num]; + assert(plugins && num < plugins->size() && "Asking for an out of bounds plugin"); + return (*plugins)[num]; } -- 2.34.1