From 60c0544742931da63db623ad7a79ba3758704cc1 Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Mon, 14 Nov 2011 16:42:43 +0000 Subject: Simplify fz_try/fz_catch by removing failed flag. The failed flag can be removed by having the fz_throw (and fz_rethrow) functions do the popping of the stack. --- fitz/base_error.c | 6 +++--- fitz/fitz.h | 7 ++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/fitz/base_error.c b/fitz/base_error.c index 3ef69a60..b844fb6a 100644 --- a/fitz/base_error.c +++ b/fitz/base_error.c @@ -36,9 +36,9 @@ void fz_warn(fz_context *ctx, char *fmt, ...) static void throw(fz_error_context *ex) { - if (ex->top >= 0) - longjmp(ex->stack[ex->top].buffer, 1); - else { + if (ex->top >= 0) { + longjmp(ex->stack[ex->top--].buffer, 1); + } else { fprintf(stderr, "uncaught exception: %s\n", ex->message); exit(EXIT_FAILURE); } diff --git a/fitz/fitz.h b/fitz/fitz.h index da39b04d..44d976cb 100644 --- a/fitz/fitz.h +++ b/fitz/fitz.h @@ -155,7 +155,6 @@ struct fz_error_context_s { int top; struct { - int failed; jmp_buf buffer; } stack[256]; char message[256]; @@ -168,11 +167,9 @@ struct fz_error_context_s #define fz_catch(ctx) \ } while(0); \ - ctx->error->stack[ctx->error->top].failed = 0; \ + ctx->error->top--; \ } \ - else \ - ctx->error->stack[ctx->error->top].failed = 1; \ - if (ctx->error->stack[ctx->error->top--].failed) + else void fz_push_try(fz_error_context *ex); void fz_throw(fz_context *, char *, ...) __printflike(2, 3); -- cgit v1.2.3