From 140afde9d7096bea0f8d5f6a04e5c41dd37ab40b Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 29 Sep 2010 16:40:53 -0400 Subject: Fix race condition in error.c. --- libdimension/error.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libdimension/error.c') diff --git a/libdimension/error.c b/libdimension/error.c index d7365fe..11b4805 100644 --- a/libdimension/error.c +++ b/libdimension/error.c @@ -40,7 +40,8 @@ dmnsn_report_error(dmnsn_severity severity, /* An error more severe than our resilience happened, bail out */ fprintf(stderr, "Dimension ERROR: %s, %s:%u: %s\n", func, file, line, str); - (*dmnsn_fatal)(); + dmnsn_fatal_error_fn *fatal = dmnsn_get_fatal_error_fn(); + (*fatal)(); exit(EXIT_FAILURE); /* Failsafe in case *dmnsn_fatal doesn't exit */ } else { /* A trivial error happened, warn and continue */ @@ -79,7 +80,8 @@ dmnsn_set_resilience(dmnsn_severity resilience) /* Tried to set an illegal resilience, bail out */ fprintf(stderr, "Dimension ERROR: %s, line %u: %s\n", DMNSN_FUNC, __LINE__, "Resilience has wrong value."); - (*dmnsn_fatal)(); + dmnsn_fatal_error_fn *fatal = dmnsn_get_fatal_error_fn(); + (*fatal)(); exit(EXIT_FAILURE); } -- cgit v1.2.3