diff --git a/e_os.h b/e_os.h index 914a2bf4ac..49a0c3ed18 100644 --- a/e_os.h +++ b/e_os.h @@ -13,6 +13,7 @@ # include # include +# include /* * contains what we can justify to make visible to the * outside; this file e_os.h is not part of the exported interface. @@ -544,6 +545,23 @@ struct servent *getservbyname(const char *name, const char *proto); # define CRYPTO_memcmp memcmp #endif +#ifdef NDEBUG +# define ossl_assert(x) (int)(x) +#else +__owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, + const char *file, int line) +{ + if (!expr) + OPENSSL_die(exprstr, file, line); + + return expr; +} + +# define ossl_assert(x) ossl_assert_int((int)(x), "Assertion failed: "#x, \ + __FILE__, __LINE__) + +#endif + #ifdef __cplusplus } #endif