Re: [PATCH 1/3] traverse_trees(): allow pruning with pathspec
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Oct 10, 2011, 04:42 UTC
- Message-ID
- <4E927799.6000604@alum.mit.edu>
- In-Reply-To
- <CACsJy8D9sJOtXj_jkVSyoAJ9TC4wmKNAD5YwsFXTYkpvM4e13w@mail.gmail.com>
On 10/09/2011 11:35 PM, Nguyen Thai Ngoc Duy wrote:
Show 23 quoted lines
> On Mon, Oct 10, 2011 at 2:39 AM, Michael Haggerty <mhagger@alum.mit.edu> wrote:
>> On 08/29/2011 11:33 PM, Junio C Hamano wrote:
>>> 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.
Show 6 quoted lines
>> 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/