From e16068240e21650becf9b47a4dc2284531397696 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 18 Aug 2010 20:16:39 +0000 Subject: [PATCH] Introduce a ScopedFatalErrorHandler class to make it easy to register fatal error handlers which automatically get unregistered at the end of a scope. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111398 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/ErrorHandling.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/llvm/Support/ErrorHandling.h b/include/llvm/Support/ErrorHandling.h index ffcb482f75c..9854657c756 100644 --- a/include/llvm/Support/ErrorHandling.h +++ b/include/llvm/Support/ErrorHandling.h @@ -52,6 +52,18 @@ namespace llvm { /// llvm_stop_multithreaded(). void remove_fatal_error_handler(); + /// ScopedFatalErrorHandler - This is a simple helper class which just + /// calls install_fatal_error_handler in its constructor and + /// remove_fatal_error_handler in its destructor. + struct ScopedFatalErrorHandler { + explicit ScopedFatalErrorHandler(fatal_error_handler_t handler, + void *user_data = 0) { + install_fatal_error_handler(handler, user_data); + } + + ~ScopedFatalErrorHandler() { remove_fatal_error_handler(); } + }; + /// Reports a serious error, calling any installed error handler. These /// functions are intended to be used for error conditions which are outside /// the control of the compiler (I/O errors, invalid user input, etc.)