From 58de1fff510078e3d2d8cfce033c87299adf78f0 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Thu, 11 Nov 2004 07:15:07 +0100 Subject: filter reference counting --- base/error.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'base/error.c') diff --git a/base/error.c b/base/error.c index df795192..489dcc40 100644 --- a/base/error.c +++ b/base/error.c @@ -20,9 +20,10 @@ fz_throwMS(char *fmt, ...) eo = fz_malloc(sizeof(fz_error)); if (!eo) return fz_outofmem; + eo->nrefs = 1; strlcpy(eo->func, "unknown", sizeof eo->func); strlcpy(eo->file, "unknown", sizeof eo->file); - eo->line = -1; + eo->line = 0; va_start(ap, fmt); vsnprintf(eo->msg, sizeof eo->msg, fmt, ap); @@ -41,6 +42,7 @@ fz_throw0(const char *func, const char *file, int line, char *fmt, ...) eo = fz_malloc(sizeof(fz_error)); if (!eo) return fz_outofmem; + eo->nrefs = 1; strlcpy(eo->func, func, sizeof eo->func); strlcpy(eo->file, file, sizeof eo->file); eo->line = line; @@ -59,7 +61,9 @@ fz_throw0(const char *func, const char *file, int line, char *fmt, ...) void fz_droperror(fz_error *eo) { - if (!eo->frozen) + if (eo->nrefs > 0) + eo->nrefs--; + if (eo->nrefs == 0) fz_free(eo); } -- cgit v1.2.3