Re: [PATCH 05/10] grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Feb 10, 2021, 10:38 UTC
- Message-ID
- <nycvar.QRO.7.76.6.2102101135390.29765@tvgsbejvaqbjf.bet>
- In-Reply-To
- <20210204210556.25242-6-avarab@gmail.com>
Hi Ævar,
On Thu, 4 Feb 2021, Ævar Arnfjörð Bjarmason wrote:
> Add optional printing of PCREv2 allocations to stderr for a developer > who manually changes the GREP_PCRE2_DEBUG_MALLOC definition to > "1".
Maybe clarify in the oneline that this is not an environment variable, but a Makefile knob? I had to read all the way to the diff to understand that aspect.
Otherwise, the patch series so far looks really fine to me.
Thanks, Dscho
Show 44 quoted lines
>
> This will be referenced a subsequent commit, and is generally useful
> to manually see what's going on with PCREv2 allocations while working
> on that code.
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
> grep.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/grep.c b/grep.c
> index f96d86c929..7d262a23d8 100644
> --- a/grep.c
> +++ b/grep.c
> @@ -42,15 +42,25 @@ static struct grep_opt grep_defaults = {
>
> #ifdef USE_LIBPCRE2
> static pcre2_general_context *pcre2_global_context;
> +#define GREP_PCRE2_DEBUG_MALLOC 0
>
> static void *pcre2_malloc(PCRE2_SIZE size, MAYBE_UNUSED void *memory_data)
> {
> void *pointer = malloc(size);
> +#if GREP_PCRE2_DEBUG_MALLOC
> + static int count = 1;
> + fprintf(stderr, "PCRE2:%p -> #%02d: alloc(%lu)\n", pointer, count++, size);
> +#endif
> return pointer;
> }
>
> static void pcre2_free(void *pointer, MAYBE_UNUSED void *memory_data)
> {
> +#if GREP_PCRE2_DEBUG_MALLOC
> + static int count = 1;
> + if (pointer)
> + fprintf(stderr, "PCRE2:%p -> #%02d: free()\n", pointer, count++);
> +#endif
> free(pointer);
> }
> #endif
> --
> 2.30.0.284.gd98b1dd5eaa7
>
>