#include "internal/e_os.h"
#include "err_local.h"
-/* Forward declaration in case it's not published because of configuration */
-ERR_STATE *ERR_get_state(void);
-
#ifndef OPENSSL_NO_ERR
static int err_load_strings(const ERR_STRING_DATA *str);
#endif
int i;
ERR_STATE *es;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(0);
if (es == NULL)
return;
ERR_STATE *es;
unsigned long ret;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(1);
if (es == NULL)
return 0;
OSSL_ERR_STATE_free(state);
}
-ERR_STATE *ossl_err_get_state_int(void)
+ERR_STATE *ossl_err_get_state_int(int save_sys_error)
{
ERR_STATE *state;
- int saveerrno = get_last_sys_error();
+ int saveerrno = 0;
+
+ if (save_sys_error)
+ saveerrno = get_last_sys_error();
if (!OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL))
return NULL;
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL);
}
- set_sys_error(saveerrno);
+ if (save_sys_error)
+ set_sys_error(saveerrno);
return state;
}
{
ERR_STATE *es;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(1);
if (es == NULL)
return 0;
ERR_STATE *es;
/* Get the current error data; if an allocated string get it. */
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(1);
if (es == NULL)
return;
i = es->top;
ERR_STATE *es;
int top;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(0);
if (es == NULL)
return;
{
ERR_STATE *es;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(1);
if (es == NULL)
return;
{
ERR_STATE *es;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(1);
if (es == NULL)
return;
unsigned long flags = 0;
size_t i;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(1);
if (es == NULL)
return;
i = es->top;
es->err_func[i] = NULL;
}
-ERR_STATE *ossl_err_get_state_int(void);
+ERR_STATE *ossl_err_get_state_int(int save_sys_error);
void ossl_err_string_int(unsigned long e, const char *func,
char *buf, size_t len);
{
ERR_STATE *es;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(0);
if (es == NULL)
return 0;
{
ERR_STATE *es;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(0);
if (es == NULL || es->bottom == es->top)
return 0;
{
ERR_STATE *es;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(0);
if (es == NULL)
return 0;
ERR_STATE *es;
int count = 0, top;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(1);
if (es == NULL)
return 0;
ERR_STATE *es;
int top;
- es = ossl_err_get_state_int();
+ es = ossl_err_get_state_int(0);
if (es == NULL)
return 0;
for (i = 0; i < ERR_NUM_ERRORS; i++)
err_clear(es, i, 1);
- thread_es = ossl_err_get_state_int();
+ thread_es = ossl_err_get_state_int(1);
if (thread_es == NULL)
return;
if (es == NULL)
return;
- thread_es = ossl_err_get_state_int();
+ thread_es = ossl_err_get_state_int(1);
if (thread_es == NULL) {
for (i = 0; i < ERR_NUM_ERRORS; ++i)
err_clear(es, i, 1);
if (es == NULL || es->bottom == es->top)
return;
- thread_es = ossl_err_get_state_int();
+ thread_es = ossl_err_get_state_int(0);
if (thread_es == NULL)
return;