clean/smudge: allow clean filters to process extremely large files
commit596b5e77c960cc57ad2e68407b298411ec5e8cb8
authorMatt Cooper <vtbassmatt@gmail.com>
Tue, 2 Nov 2021 15:46:11 +0000 (2 15:46 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 3 Nov 2021 18:22:27 +0000 (3 11:22 -0700)
tree1f43d3d1956e3a0866cf2c57761e92404fbad8e5
parentd6a09e795d77ddc76c5141047340dc3cb62355f4
clean/smudge: allow clean filters to process extremely large files

The filter system allows for alterations to file contents when they're
moved between the database and the worktree. We already made sure that
it is possible for smudge filters to produce contents that are larger
than `unsigned long` can represent (which matters on systems where
`unsigned long` is narrower than `size_t`, most notably 64-bit Windows).
Now we make sure that clean filters can _consume_ contents that are
larger than that.

Note that this commit only allows clean filters' _input_ to be larger
than can be represented by `unsigned long`.

This change makes only a very minute dent into the much larger project
to teach Git to use `size_t` instead of `unsigned long` wherever
appropriate.

Helped-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Matt Cooper <vtbassmatt@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
convert.c
t/t1051-large-conversion.sh