diff options
Diffstat (limited to 'llvm/lib/DebugInfo/PDB')
-rw-r--r-- | llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp b/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp index 3a4ecdba6b1..489184ae7fc 100644 --- a/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp +++ b/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp @@ -327,9 +327,10 @@ std::unique_ptr<IPDBEnumTables> DIASession::getEnumTables() const { return llvm::make_unique<DIAEnumTables>(DiaEnumerator); } -static CComPtr<IDiaEnumInjectedSources> -getEnumInjectedSources(IDiaSession &Session) { - CComPtr<IDiaEnumInjectedSources> EIS; +template <class T> +static CComPtr<T> +getTableEnumerator(IDiaSession &Session) { + CComPtr<T> Enumerator; CComPtr<IDiaEnumTables> ET; CComPtr<IDiaTable> Table; ULONG Count = 0; @@ -340,15 +341,16 @@ getEnumInjectedSources(IDiaSession &Session) { while (ET->Next(1, &Table, &Count) == S_OK && Count == 1) { // There is only one table that matches the given iid if (S_OK == - Table->QueryInterface(__uuidof(IDiaEnumInjectedSources), (void **)&EIS)) + Table->QueryInterface(__uuidof(T), (void **)&Enumerator)) break; Table.Release(); } - return EIS; + return Enumerator; } std::unique_ptr<IPDBEnumInjectedSources> DIASession::getInjectedSources() const { - CComPtr<IDiaEnumInjectedSources> Files = getEnumInjectedSources(*Session); + CComPtr<IDiaEnumInjectedSources> Files = + getTableEnumerator<IDiaEnumInjectedSources>(*Session); if (!Files) return nullptr; |