--- previous/src/cpu/cpummu.c 2018/04/24 19:27:55 1.1.1.2 +++ previous/src/cpu/cpummu.c 2018/04/24 19:29:03 1.1.1.3 @@ -860,19 +860,20 @@ static int s_try_stack_size=0; static jmp_buf s_try_stack[MAX_TRY_STACK]; jmp_buf* __poptry(void) { if (s_try_stack_size>0) { - s_try_stack_size--; - if (s_try_stack_size>0) - memcpy(&__exbuf,&s_try_stack[s_try_stack_size-1],sizeof(jmp_buf)); - // fprintf(stderr,"pop jmpbuf=%08x\n",s_try_stack[s_try_stack_size][0]); - return &s_try_stack[s_try_stack_size-1]; - } + s_try_stack_size--; + if (s_try_stack_size == 0) + return NULL; + memcpy(&__exbuf,&s_try_stack[s_try_stack_size-1],sizeof(jmp_buf)); + // fprintf(stderr,"pop jmpbuf=%08x\n",s_try_stack[s_try_stack_size][0]); + return &s_try_stack[s_try_stack_size-1]; + } else { fprintf(stderr,"try stack underflow...\n"); // return (NULL); abort(); } } -void __pushtry(jmp_buf* j) { +void __pushtry(jmp_buf* j) { if (s_try_stack_size