# HG changeset patch # User Kaito Tokumori # Date 1385897303 -32400 # Node ID 3f7c32b23851dc5783cd61daa8e991370108cbb3 # Parent a7c771f554e7092fca70dfe7c790acab672418ad change __environment.env type and remove unnecessary casts. diff -r a7c771f554e7 -r 3f7c32b23851 struct_longjump.c --- a/struct_longjump.c Sun Dec 01 20:23:27 2013 +0900 +++ b/struct_longjump.c Sun Dec 01 20:28:23 2013 +0900 @@ -3,7 +3,8 @@ int printf(const char*,...); struct CbC_env { - void *ret_p,*env; + void *ret_p; + int *env; }; __code code1(int n,__code(*__return)(int,void *),void *__environment){ @@ -14,7 +15,7 @@ __code return1 (int n,void* env){ printf("return1 : __return entry\n"); *(int*)((struct CbC_env *)(env))->ret_p = n; - longjmp((int*)(((struct CbC_env *)env)->env),1); + longjmp((((struct CbC_env *)env)->env),1); } int main1 (){ @@ -23,7 +24,7 @@ int i_buf[128]; int retval; __environment.ret_p = &retval; - __environment.env = &i_buf; + __environment.env = i_buf; printf("main1 : main1 entry\n"); if (setjmp(__environment.env)){ printf("main1 : main1 return\n");