diff options
author | Chris Lattner <sabre@nondot.org> | 2006-10-12 18:32:30 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-10-12 18:32:30 +0000 |
commit | f0edc6c18b9beffa1ccce9dc84ad04cc9d4534ee (patch) | |
tree | 3b446acf5be2446034ed8e8b9679c497cec7e4e1 /lib/Bytecode/Reader/Reader.h | |
parent | 65d8c1e8d49150187b8561be931abf6b83afd793 (diff) |
Fix massive resource leaks in the bytecode reader. Reading a bytecode file
with ParseBytecodeFile used to leak both a ModuleProvider (and related
bytecode parser stuff attached to it) AND a file descriptor, which was
never closed. This prevented gccld/llvm-ld/llvm-link from linking together
apps with more that ~252 .bc files on darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30912 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode/Reader/Reader.h')
-rw-r--r-- | lib/Bytecode/Reader/Reader.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/Bytecode/Reader/Reader.h b/lib/Bytecode/Reader/Reader.h index fcf79b478b..86ccc200a7 100644 --- a/lib/Bytecode/Reader/Reader.h +++ b/lib/Bytecode/Reader/Reader.h @@ -248,6 +248,12 @@ protected: /// @brief Parse a string constants block void ParseStringConstants(unsigned NumEntries, ValueTable &Tab); + /// @brief Release our memory. + void freeState() { + freeTable(FunctionValues); + freeTable(ModuleValues); + } + /// @} /// @name Data /// @{ @@ -467,12 +473,6 @@ private: /// given constant. void ResolveReferencesToConstant(Constant *C, unsigned Typ, unsigned Slot); - /// @brief Release our memory. - void freeState() { - freeTable(FunctionValues); - freeTable(ModuleValues); - } - /// @brief Free a table, making sure to free the ValueList in the table. void freeTable(ValueTable &Tab) { while (!Tab.empty()) { |