Re: [PATCH 1/4] add generic, type aware object chain walker
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 25, 2008, 08:02 UTC
- Message-ID
- <7vmyppmpko.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20080225075242.GD15761@auto.tuwien.ac.at>
mkoegler@auto.tuwien.ac.at (Martin Koegler) writes:
> What about > #define OBJ_BAD -2
You mean "#define OBJ_ANY -2"?
Show 18 quoted lines
>> After all, if the walker callback was told with
>> OBJ_ANY that any type of object is Ok, it should still say
>> "oops" if the given object said it actually is of type OBJ_BAD.
>> E.g. in your [2/4] patch:
>>
>> +static int mark_object(struct object *obj, int type, void *data)
>> +{
>> + ...
>> + if (type != OBJ_ANY && obj->type != type) {
>> + objerror(parent, "wrong object type in link");
>> + }
>>
>> if you use the above #define, a tagged object that has a bad
>> type will pass this check unnoticed, won't it?
>
> No, it wouldn't, as object->type is never initialized to OBJ_BAD:
> $ grep "OBJ_BAD" *.c *.h
> cache.h: OBJ_BAD = -1,Don't you think that is too subtle? Don't you want to future proof your code?
Using the OBJ_ANY (which I'd agree is a good name) that is different from anything else that is already defined would be a good idea for that, I would think.