sha1_file: remove recursion in unpack_entry
commitabe601bba52ee6b0bf89d282aa1c3ef5fd89cbb0
authorThomas Rast <trast@student.ethz.ch>
Wed, 27 Mar 2013 20:03:42 +0000 (27 21:03 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 27 Mar 2013 20:25:16 +0000 (27 13:25 -0700)
tree62540653a4652dcdee2290afcb4664684c5b7030
parent84dd81c12622119e7f1d3eaf2047b910352b36bb
sha1_file: remove recursion in unpack_entry

Similar to the recursion in packed_object_info(), this leads to
problems on stack-space-constrained systems in the presence of long
delta chains.

We proceed in three phases:

1. Dig through the delta chain, saving each delta object's offsets and
   size on an ad-hoc stack.

2. Unpack the base object at the bottom.

3. Unpack and apply the deltas from the stack.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_file.c