-
- Downloads
Let ASTReader optionally delete its ASTDeserializationListener.
Use this to fix the leak of DeserializedDeclsDumper and DeserializedDeclsChecker in FrontendAction (found by LSan), PR19560. The "delete this" bool is necessary because both PCHGenerator and ASTUnit return the same object from both getDeserializationListener() and getASTMutationListener(), so ASTReader can't just have a unique_ptr. It's also not possible to just let FrontendAction (or CompilerInstance) own these listeners due to lifetime issues (see comments on PR19560). Finally, ASTDeserializationListener can't easily be refcounted, since several of the current listeners are allocated on the stack. Having this bool isn't ideal, but it's a pattern that's used in other places in the codebase too, and it seems better than leaking. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208277 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/Frontend/CompilerInstance.h 8 additions, 10 deletionsinclude/clang/Frontend/CompilerInstance.h
- include/clang/Serialization/ASTDeserializationListener.h 1 addition, 3 deletionsinclude/clang/Serialization/ASTDeserializationListener.h
- include/clang/Serialization/ASTReader.h 3 additions, 1 deletioninclude/clang/Serialization/ASTReader.h
- lib/Frontend/CompilerInstance.cpp 15 additions, 22 deletionslib/Frontend/CompilerInstance.cpp
- lib/Frontend/FrontendAction.cpp 31 additions, 17 deletionslib/Frontend/FrontendAction.cpp
- lib/Serialization/ASTReader.cpp 30 additions, 30 deletionslib/Serialization/ASTReader.cpp
Loading
Please register or sign in to comment