+ lh_ERR_STRING_DATA_free(int_error_hash);
+ int_error_hash = NULL;
+}
+
+/*
+ * Legacy; pack in the library.
+ */
+static void err_patch(int lib, ERR_STRING_DATA *str)
+{
+ unsigned long plib = ERR_PACK(lib, 0, 0);
+
+ for (; str->error != 0; str++)
+ str->error |= plib;
+}
+
+/*
+ * Hash in |str| error strings. Assumes the URN_ONCE was done.
+ */
+static int err_load_strings(const ERR_STRING_DATA *str)
+{
+ CRYPTO_THREAD_write_lock(err_string_lock);
+ for (; str->error; str++)
+ (void)lh_ERR_STRING_DATA_insert(int_error_hash,
+ (ERR_STRING_DATA *)str);
+ CRYPTO_THREAD_unlock(err_string_lock);
+ return 1;