From b8c0565ec4d9c8b2eff7a0799cfdabf66536a87c Mon Sep 17 00:00:00 2001 From: Quentin Deslandes Date: Tue, 13 Sep 2022 16:14:52 +0100 Subject: [PATCH] Create hash_ops structure to free keys of type pcre2_code --- src/shared/pcre2-util.c | 9 +++++++++ src/shared/pcre2-util.h | 3 +++ 2 files changed, 12 insertions(+) diff --git a/src/shared/pcre2-util.c b/src/shared/pcre2-util.c index 998dab04910..a2c8687cf90 100644 --- a/src/shared/pcre2-util.c +++ b/src/shared/pcre2-util.c @@ -14,6 +14,15 @@ pcre2_code* (*sym_pcre2_compile)(PCRE2_SPTR, PCRE2_SIZE, uint32_t, int *, PCRE2_ int (*sym_pcre2_get_error_message)(int, PCRE2_UCHAR *, PCRE2_SIZE); int (*sym_pcre2_match)(const pcre2_code *, PCRE2_SPTR, PCRE2_SIZE, PCRE2_SIZE, uint32_t, pcre2_match_data *, pcre2_match_context *); PCRE2_SIZE* (*sym_pcre2_get_ovector_pointer)(pcre2_match_data *); + +DEFINE_HASH_OPS_WITH_KEY_DESTRUCTOR( + pcre2_code_hash_ops_free, + pcre2_code, + (void (*)(const pcre2_code *, struct siphash*))trivial_hash_func, + (int (*)(const pcre2_code *, const pcre2_code*))trivial_compare_func, + sym_pcre2_code_free); +#else +const struct hash_ops pcre2_code_hash_ops_free = {}; #endif int dlopen_pcre2(void) { diff --git a/src/shared/pcre2-util.h b/src/shared/pcre2-util.h index 11f1d77f4f2..f1e744d5774 100644 --- a/src/shared/pcre2-util.h +++ b/src/shared/pcre2-util.h @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include "hash-funcs.h" #include "macro.h" #if HAVE_PCRE2 @@ -24,6 +25,8 @@ typedef struct {} pcre2_code; #endif +extern const struct hash_ops pcre2_code_hash_ops_free; + typedef enum { PATTERN_COMPILE_CASE_AUTO, PATTERN_COMPILE_CASE_SENSITIVE, -- 2.47.3