mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-30 13:37:55 +00:00
[master] Merged trac4203 (no exit())
This commit is contained in:
commit
d6eb96ba57
@ -50,3 +50,9 @@ EvalContext::error (const std::string& what)
|
|||||||
{
|
{
|
||||||
isc_throw(EvalParseError, what);
|
isc_throw(EvalParseError, what);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
EvalContext::fatal (const std::string& what)
|
||||||
|
{
|
||||||
|
isc_throw(Unexpected, what);
|
||||||
|
}
|
||||||
|
@ -81,6 +81,11 @@ public:
|
|||||||
/// cases when the EvalParser is not able to handle the packet.
|
/// cases when the EvalParser is not able to handle the packet.
|
||||||
void error(const std::string& what);
|
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:
|
private:
|
||||||
/// @brief Flag determining scanner debugging.
|
/// @brief Flag determining scanner debugging.
|
||||||
bool trace_scanning_;
|
bool trace_scanning_;
|
||||||
|
@ -31,6 +31,9 @@
|
|||||||
// The location of the current token. The lexer will keep updating it. This
|
// The location of the current token. The lexer will keep updating it. This
|
||||||
// variable will be useful for logging errors.
|
// variable will be useful for logging errors.
|
||||||
static isc::eval::location loc;
|
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
|
/* noyywrap disables automatic rewinding for the next file to parse. Since we
|
||||||
@ -147,8 +150,8 @@ EvalContext::scanStringBegin()
|
|||||||
YY_BUFFER_STATE buffer;
|
YY_BUFFER_STATE buffer;
|
||||||
buffer = yy_scan_bytes(string_.c_str(), string_.size());
|
buffer = yy_scan_bytes(string_.c_str(), string_.size());
|
||||||
if (!buffer) {
|
if (!buffer) {
|
||||||
error("cannot scan string");
|
fatal("cannot scan string");
|
||||||
exit(EXIT_FAILURE);
|
// fatal() throws an exception so this can't be reached
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,3 +160,10 @@ EvalContext::scanStringEnd()
|
|||||||
{
|
{
|
||||||
yy_delete_buffer(YY_CURRENT_BUFFER);
|
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?"); }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user