Re: Horrible re-packing?
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Jun 5, 2006, 18:44 UTC
- Message-ID
- <Pine.LNX.4.64.0606051140530.5498@g5.osdl.org>
- In-Reply-To
- <Pine.LNX.4.64.0606050951120.5498@g5.osdl.org>
On Mon, 5 Jun 2006, Linus Torvalds wrote:
Show 6 quoted lines
> > Whaah! That nice 6.33MB pack-file exploded to 14.5MB! > > And it's possibly broken by the fact that we've been renaming things > lately (ie the "rev-list.c" -> "builtin-rev-list.c" thing ends up not > finding things)
No, it's even simpler.
The breakage is entirely mine, and due to the tree-walking conversion of the "process_tree()" function.
In that function, we used to have a local "const char *name" that _shadowed_ the incoming _argument_ with the same type, and the tree-walking conversion did not notice that the inner "name" should have been converted to "entry.path" - so it used the outer-level "name".
Gaah. We should probably use -Wshadow or something, which would hopefully have warned about the re-use of the same variable name in two different scopes.
Regardless, this fixes it.
Linus ---
diff --git a/builtin-rev-list.c b/builtin-rev-list.c index 17c04b9..e885624 100644 --- a/builtin-rev-list.c +++ b/builtin-rev-list.c @@ -135,9 +135,9 @@ static struct object_list **process_tree while (tree_entry(&desc, &entry)) { if (S_ISDIR(entry.mode)) - p = process_tree(lookup_tree(entry.sha1), p, &me, name); + p = process_tree(lookup_tree(entry.sha1), p, &me, entry.path); else - p = process_blob(lookup_blob(entry.sha1), p, &me, name); + p = process_blob(lookup_blob(entry.sha1), p, &me, entry.path); } free(tree->buffer); tree->buffer = NULL;