diff --git a/include/onnxruntime/core/common/status.h b/include/onnxruntime/core/common/status.h index 7ae76a915c..f516a0a151 100644 --- a/include/onnxruntime/core/common/status.h +++ b/include/onnxruntime/core/common/status.h @@ -52,6 +52,8 @@ class Status { Status(StatusCategory category, int code, const std::string& msg); + Status(StatusCategory category, int code, const char* msg); + Status(StatusCategory category, int code); Status(const Status& other) @@ -72,7 +74,9 @@ class Status { Status& operator=(Status&& other) = default; ~Status() = default; - bool IsOK() const noexcept; + bool IsOK() const { + return (state_ == nullptr); + } int Code() const noexcept; @@ -90,7 +94,9 @@ class Status { return !(*this == other); } - static const Status& OK() noexcept; + static Status OK() { + return Status(); + } private: static const std::string& EmptyString() noexcept; @@ -99,6 +105,9 @@ class Status { State(StatusCategory cat0, int code0, const std::string& msg0) : category(cat0), code(code0), msg(msg0) {} + State(StatusCategory cat0, int code0, const char* msg0) + : category(cat0), code(code0), msg(msg0) {} + const StatusCategory category; const int code; const std::string msg; diff --git a/onnxruntime/core/common/status.cc b/onnxruntime/core/common/status.cc index 5fa95e8ab7..0ac4a78a16 100644 --- a/onnxruntime/core/common/status.cc +++ b/onnxruntime/core/common/status.cc @@ -23,12 +23,15 @@ Status::Status(StatusCategory category, int code, const std::string& msg) { state_ = std::make_unique(category, code, msg); } -Status::Status(StatusCategory category, int code) - : Status(category, code, EmptyString()) { +Status::Status(StatusCategory category, int code, const char* msg) { + // state_ will be allocated here causing the status to be treated as a failure + ORT_ENFORCE(code != static_cast(MLStatus::OK)); + + state_ = std::make_unique(category, code, msg); } -bool Status::IsOK() const noexcept { - return (state_ == nullptr); +Status::Status(StatusCategory category, int code) + : Status(category, code, "") { } StatusCategory Status::Category() const noexcept { @@ -58,8 +61,6 @@ std::string Status::ToString() const { result += "[ONNXRuntimeError]"; result += " : "; result += std::to_string(Code()); - std::string msg; - result += " : "; result += MLStatusToString(static_cast(Code())); result += " : "; @@ -76,10 +77,6 @@ std::string Status::ToString() const { #pragma warning(push) #pragma warning(disable : 26426) #endif -const Status& Status::OK() noexcept { - static Status s_ok; - return s_ok; -} const std::string& Status::EmptyString() noexcept { static std::string s_empty;