mirror of
https://github.com/NixOS/nix.git
synced 2024-11-25 16:23:02 +00:00
C API: Make nix_err_msg treat NIX_OK as having no message
The documentation "solved" this by specifying a precondition, but let's just make it more robust, and not leak irrelevant messages that might linger. We don't clear the message when clearing the status, in order to keep clearing fast; see last_err field doc.
This commit is contained in:
parent
2dc7598779
commit
61381c9964
@ -112,7 +112,7 @@ const char * nix_err_msg(nix_c_context * context, const nix_c_context * read_con
|
|||||||
{
|
{
|
||||||
if (context)
|
if (context)
|
||||||
context->last_err_code = NIX_OK;
|
context->last_err_code = NIX_OK;
|
||||||
if (read_context->last_err) {
|
if (read_context->last_err && read_context->last_err_code != NIX_OK) {
|
||||||
if (n)
|
if (n)
|
||||||
*n = read_context->last_err->size();
|
*n = read_context->last_err->size();
|
||||||
return read_context->last_err->c_str();
|
return read_context->last_err->c_str();
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
struct nix_c_context
|
struct nix_c_context
|
||||||
{
|
{
|
||||||
nix_err last_err_code = NIX_OK;
|
nix_err last_err_code = NIX_OK;
|
||||||
|
/** The last error message. Always check last_err_code. This may not have been cleared, so that clearing is fast. */
|
||||||
std::optional<std::string> last_err = {};
|
std::optional<std::string> last_err = {};
|
||||||
std::optional<nix::ErrorInfo> info = {};
|
std::optional<nix::ErrorInfo> info = {};
|
||||||
std::string name = "";
|
std::string name = "";
|
||||||
|
Loading…
Reference in New Issue
Block a user