can't catch exception after creating CXIndex

119 views Asked by At

Why does this program

#include <clang-c/Index.h>
#include <exception>
#include <iostream>

int main() {
    try {
        throw std::exception("threw");
    } catch (const std::exception& e) {
        std::cout << e.what() << "\n";
    }
    CXIndex idx = clang_createIndex(0, 0);
    clang_disposeIndex(idx);
    return 0;
}

behave as expected, but this one

#include <clang-c/Index.h>
#include <exception>
#include <iostream>

int main() {
    CXIndex idx = clang_createIndex(0, 0);
    clang_disposeIndex(idx);
    try {
        throw std::exception("threw");
    } catch (const std::exception& e) {
        std::cout << e.what() << "\n";
    }
    return 0;
}

crashes?

More generally, what could a function do that causes subsequent exceptions to not get caught?

Using: visual c++ 10.0 (tried the different /EH flags), clang 3.4 (built with the same)

0

There are 0 answers