if ((ret = hs_alloc_scratch (rspamd_hyperscan_get_database(re_class->hs_db),
&re_class->hs_scratch)) != HS_SUCCESS) {
- msg_err_re_cache ("fatal error: cannot allocate scratch for %s: %d", path, ret);
- g_abort();
+ rspamd_hyperscan_free (re_class->hs_db);
+ if (!try_load) {
+ msg_err_re_cache ("bad hs database in %s; error code: %d", path, ret);
+ }
+ else {
+ msg_debug_re_cache ("bad hs database in %s; error code: %d", path, ret);
+ }
+ g_free (hs_ids);
+ g_free (hs_flags);
+
+ re_class->hs_ids = NULL;
+ re_class->hs_scratch = NULL;
+ re_class->hs_db = NULL;
+ all_valid = FALSE;
+
+ continue;
}
/*