blob: 12e38891ecd27cef704f15349ad19a9463e730cb [file] [log] [blame]
#include <csetjmp>
#include <cstdio>
class C {
const char *name;
public:
C(const char *n) : name(n) {}
~C() { printf("Destroying C object in %s\n", name); }
};
void bar(jmp_buf buf)
{
printf("Inside bar\n");
longjmp(buf, 37);
}
void foo(jmp_buf buf)
{
C Obj("foo");
bar(buf);
}
int main()
{
C Obj("main");
jmp_buf buf;
int ret;
printf("Inside main\n");
if ((ret = setjmp(buf)) != 0) {
printf("ret == %d\n", ret);
} else {
foo(buf);
}
}