diff --git a/src/libstore/c/nix_api_store.cc b/src/libstore/c/nix_api_store.cc index 6586d4a1b..656eb2ae7 100644 --- a/src/libstore/c/nix_api_store.cc +++ b/src/libstore/c/nix_api_store.cc @@ -72,11 +72,9 @@ nix_err nix_store_get_version(nix_c_context * context, Store * store, char * des context->last_err_code = NIX_OK; try { auto res = store->ptr->getVersion(); - if (res) { - return nix_export_std_string(context, *res, dest, n); - } else { - return nix_set_err_msg(context, NIX_ERR_UNKNOWN, "store does not have a version"); - } + if (!res) + res = ""; + return nix_export_std_string(context, *res, dest, n); } NIXC_CATCH_ERRS } diff --git a/src/libstore/c/nix_api_store.h b/src/libstore/c/nix_api_store.h index 7732ade6b..9c5e524e5 100644 --- a/src/libstore/c/nix_api_store.h +++ b/src/libstore/c/nix_api_store.h @@ -125,7 +125,8 @@ nix_err nix_store_build( void (*callback)(void * userdata, const char * outname, const char * out)); /** - * @brief get the version of a nix store + * @brief get the version of a nix store. + * If the store doesn't have a version (like the dummy store), returns an empty string. * @param[out] context Optional, stores error information * @param[in] store nix store reference * @param[out] dest The allocated area to write the string to. diff --git a/tests/unit/libstore/nix_api_store.cc b/tests/unit/libstore/nix_api_store.cc index bbf850291..e093e9d15 100644 --- a/tests/unit/libstore/nix_api_store.cc +++ b/tests/unit/libstore/nix_api_store.cc @@ -64,6 +64,11 @@ TEST_F(nix_api_util_context, nix_store_open_dummy) Store * store = nix_store_open(ctx, "dummy://", nullptr); ASSERT_EQ(NIX_OK, ctx->last_err_code); ASSERT_STREQ("dummy", store->ptr->getUri().c_str()); + + char value[256]; + nix_store_get_version(ctx, store, value, 256); + ASSERT_STREQ("", value); + nix_store_unref(store); }