int line_;
std::string file_;
std::string msg_;
+ char* rendered_what = nullptr;
public:
ParseError(int line, std::string& file, std::string&& msg)
: Exception(XBT_THROW_POINT, std::move(msg)), std::invalid_argument(msg), line_(line), file_(file), msg_(msg)
{
+ rendered_what = bprintf("Parse error at %s:%d: %s", file_.c_str(), line_, msg_.c_str());
}
+ ~ParseError() { free(rendered_what); }
- const char* what() const noexcept override
- {
- return bprintf("Parse error at %s:%d: %s", file_.c_str(), line_, msg_.c_str());
- }
+ const char* what() const noexcept override { return rendered_what; }
};
class XBT_PUBLIC ForcefulKillException {