]> git.ipfire.org Git - thirdparty/git.git/commit
grep: make PCRE1 aware of custom allocator
authorCarlo Marcelo Arenas Belón <carenas@gmail.com>
Wed, 16 Oct 2019 12:10:22 +0000 (12:10 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 18 Oct 2019 01:33:16 +0000 (10:33 +0900)
commit57d4660468ef2674bb6afc2c5814d4b397a5eda9
tree4db611062a231e79ca30534a070b39f310970f2f
parent51cf315870bbb7254ddf06c84fe03b41bc48eebd
grep: make PCRE1 aware of custom allocator

63e7e9d8b6 ("git-grep: Learn PCRE", 2011-05-09) didn't include a way
to override the system alocator, and so it is incompatible with
USE_NED_ALLOCATOR as reported by Dscho[1] (in similar code from PCRE2)

Note that nedmalloc, as well as other custom allocators like jemalloc
and mi-malloc, can be configured at runtime (via `LD_PRELOAD`),
therefore we cannot know at compile time whether a custom allocator is
used or not.

Make the minimum change possible to ensure this combination is supported
by extending `grep_init()` to set the PCRE1 specific functions to Git's
idea of `malloc()` and `free()` and therefore making sure all
allocations are done inside PCRE1 with the same allocator than the rest
of Git.

This change has negligible performance impact: PCRE needs to allocate
memory once per program run for the character table and for each pattern
compilation. These are both rare events compared to matching patterns
against lines. Actual measurements[2] show that the impact is lost in
the noise.

[1] https://public-inbox.org/git/pull.306.git.gitgitgadget@gmail.com
[2] https://public-inbox.org/git/7f42007f-911b-c570-17f6-1c6af0429586@web.de

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
grep.c