summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fitz/base_error.c6
-rw-r--r--fitz/fitz.h7
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);