On 10/09/2011 11:35 PM, Nguyen Thai Ngoc Duy wrote:
On Mon, Oct 10, 2011 at 2:39 AM, Michael Haggerty [off-list ref] wrote:
quoted
On 08/29/2011 11:33 PM, Junio C Hamano wrote:
quoted
diff --git a/tree-walk.c b/tree-walk.c
index 33f749e..808bb55 100644
--- a/tree-walk.c
+++ b/tree-walk.c
[...]
@@ -376,16 +396,22 @@ int traverse_trees(int n, struct tree_desc *t, struct traverse_info *info)
mask |= 1ul << i;
if (S_ISDIR(entry[i].mode))
dirmask |= 1ul << i;
+ e = &entry[i];
}
if (!mask)
break;
- ret = info->fn(n, mask, dirmask, entry, info);
- if (ret < 0) {
- error = ret;
- if (!info->show_all_errors)
- break;
+ interesting = prune_traversal(e, info, &base, interesting);
According to gcc 4.2.4 (though, strangely, not gcc 4.4.3):
I checked this a bit more carefully. gcc 4.2.4 emits a warning when the
-O1 or -O2 optimization levels are used, but not with -O0. gcc 4.4.3
does not emit a warning regardless of optimization level.
quoted
tree-walk.c: In function ‘traverse_trees’:
tree-walk.c:347: warning: ‘e’ may be used uninitialized in this function
False alarm. If e is not initialized in the for loop, mask would be
zero and therefore prune_traversal(e, info, &base, interesting), which
would use uninitialized "e", would never be called.
That's good to know. Still, it might be worthwhile to initialize the
variable explicitly to avoid future confusion.
Michael
--
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/