Merge branch 'sp/stream-clean-filter'
When running a required clean filter, we do not have to mmap the original before feeding the filter. Instead, stream the file contents directly to the filter and process its output. * sp/stream-clean-filter: sha1_file: don't convert off_t to size_t too early to avoid potential die() convert: stream from fd to required clean filter to reduce used address space copy_fd(): do not close the input file descriptor mmap_limit: introduce GIT_MMAP_LIMIT to allow testing expected mmap size memory_limit: use git_env_ulong() to parse GIT_ALLOC_LIMIT config.c: add git_env_ulong() to parse environment variable convert: drop arguments other than 'path' from would_convert_to_git()
This commit is contained in:
19
wrapper.c
19
wrapper.c
@ -11,19 +11,20 @@ static void (*try_to_free_routine)(size_t size) = do_nothing;
|
||||
|
||||
static int memory_limit_check(size_t size, int gentle)
|
||||
{
|
||||
static int limit = -1;
|
||||
if (limit == -1) {
|
||||
const char *env = getenv("GIT_ALLOC_LIMIT");
|
||||
limit = env ? atoi(env) * 1024 : 0;
|
||||
static size_t limit = 0;
|
||||
if (!limit) {
|
||||
limit = git_env_ulong("GIT_ALLOC_LIMIT", 0);
|
||||
if (!limit)
|
||||
limit = SIZE_MAX;
|
||||
}
|
||||
if (limit && size > limit) {
|
||||
if (size > limit) {
|
||||
if (gentle) {
|
||||
error("attempting to allocate %"PRIuMAX" over limit %d",
|
||||
(intmax_t)size, limit);
|
||||
error("attempting to allocate %"PRIuMAX" over limit %"PRIuMAX,
|
||||
(uintmax_t)size, (uintmax_t)limit);
|
||||
return -1;
|
||||
} else
|
||||
die("attempting to allocate %"PRIuMAX" over limit %d",
|
||||
(intmax_t)size, limit);
|
||||
die("attempting to allocate %"PRIuMAX" over limit %"PRIuMAX,
|
||||
(uintmax_t)size, (uintmax_t)limit);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user