// Make sure throw-catch during unwind does not trash internal data. #include TRIVIAL_EXCEPTION(yin); TRIVIAL_EXCEPTION(yang); int main(int argc, char * argv[]) { try { try { throw (yin){}; } finally { try { throw (yang){}; } catch (yin *) { printf("inner yin\n"); } catch (yang *) { printf("inner yang\n"); } } } catch (yin *) { printf("outer yin\n"); } catch (yang *) { printf("outer yang\n"); } }