| ... | @@ -2096,7 +2096,9 @@ ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char | ... | @@ -2096,7 +2096,9 @@ ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char |
| 2096 | } | 2096 | } |
| 2097 | | 2097 | |
| 2098 | if (diags->hasErrorOccurred()) { | 2098 | if (diags->hasErrorOccurred()) { |
| 2099 | clang::ASTUnit *unit = ast_unit ? ast_unit : err_unit.get(); | 2099 | // Take ownership of the err_unit ASTUnit object so that it won't be |
| | 2100 | // free'd when we return, invalidating the error message pointers |
| | 2101 | clang::ASTUnit *unit = ast_unit ? ast_unit : err_unit.release(); |
| 2100 | ZigList<Stage2ErrorMsg> errors = {}; | 2102 | ZigList<Stage2ErrorMsg> errors = {}; |
| 2101 | | 2103 | |
| 2102 | for (clang::ASTUnit::stored_diag_iterator it = unit->stored_diag_begin(), | 2104 | for (clang::ASTUnit::stored_diag_iterator it = unit->stored_diag_begin(), |