int ERR_unload_strings(int lib, ERR_STRING_DATA *str) { if (!RUN_ONCE(&err_string_init, do_err_strings_init)) return 0; CRYPTO_THREAD_write_lock(err_string_lock); /* * We don't need to ERR_PACK the lib, since that was done (to * the table) when it was loaded. */ for (; str->error; str++) (void)lh_ERR_STRING_DATA_delete(int_error_hash, str); CRYPTO_THREAD_unlock(err_string_lock); return 1; }
int ERR_unload_strings(int lib, ERR_STRING_DATA *str) { if (!RUN_ONCE(&err_string_init, do_err_strings_init)) return 0; CRYPTO_THREAD_write_lock(err_string_lock); if (int_error_hash != NULL) { for (; str->error; str++) { if (lib) str->error |= ERR_PACK(lib, 0, 0); (void)lh_ERR_STRING_DATA_delete(int_error_hash, str); } } CRYPTO_THREAD_unlock(err_string_lock); return 1; }
void ERR_unload_strings(int lib, ERR_STRING_DATA *str) { LHASH_OF(ERR_STRING_DATA) *hash; CRYPTO_THREAD_run_once(&err_string_init, do_err_strings_init); CRYPTO_THREAD_write_lock(err_string_lock); hash = get_hash(0, 0); if (hash) { for (; str->error; str++) { if (lib) str->error |= ERR_PACK(lib, 0, 0); (void)lh_ERR_STRING_DATA_delete(hash, str); } } CRYPTO_THREAD_unlock(err_string_lock); }