2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-30 05:27:55 +00:00

[master] Merged trac4203 (no exit())

This commit is contained in:
Francis Dupont 2015-11-27 23:31:53 +01:00
commit d6eb96ba57
3 changed files with 23 additions and 2 deletions

View File

@ -50,3 +50,9 @@ EvalContext::error (const std::string& what)
{
isc_throw(EvalParseError, what);
}
void
EvalContext::fatal (const std::string& what)
{
isc_throw(Unexpected, what);
}

View File

@ -81,6 +81,11 @@ public:
/// cases when the EvalParser is not able to handle the packet.
void error(const std::string& what);
/// @brief Fatal error handler
///
/// This is for should not happen but fatal errors
static void fatal(const std::string& what);
private:
/// @brief Flag determining scanner debugging.
bool trace_scanning_;

View File

@ -31,6 +31,9 @@
// The location of the current token. The lexer will keep updating it. This
// variable will be useful for logging errors.
static isc::eval::location loc;
// To avoid the call to exit... oops!
#define YY_FATAL_ERROR(msg) isc::eval::EvalContext::fatal(msg)
%}
/* noyywrap disables automatic rewinding for the next file to parse. Since we
@ -147,8 +150,8 @@ EvalContext::scanStringBegin()
YY_BUFFER_STATE buffer;
buffer = yy_scan_bytes(string_.c_str(), string_.size());
if (!buffer) {
error("cannot scan string");
exit(EXIT_FAILURE);
fatal("cannot scan string");
// fatal() throws an exception so this can't be reached
}
}
@ -157,3 +160,10 @@ EvalContext::scanStringEnd()
{
yy_delete_buffer(YY_CURRENT_BUFFER);
}
namespace {
/// To avoid unused function error
class Dummy {
void dummy() { yy_fatal_error("Fix me: how to disable its definition?"); }
};
}