diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-10-08 13:05:32 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-10-08 13:05:32 -0700 |
commit | f0d89001750a27c1c447b2eb3149b998521fa52c (patch) | |
tree | 01a5829fe13f88fa399429c56fdc1d3f798309cf /wrapper.c | |
parent | 9342f49738a6b539b94a344fdfd45cf29c93ffcd (diff) | |
parent | 9079ab7cb6768fa04e086303f90be043b423cca4 (diff) | |
download | git-f0d89001750a27c1c447b2eb3149b998521fa52c.tar.gz |
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()
Diffstat (limited to 'wrapper.c')
-rw-r--r-- | wrapper.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -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; } |