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