From: Junio C Hamano Date: Mon, 25 Feb 2008 08:02:15 GMT Subject: Re: [PATCH 1/4] add generic, type aware object chain walker 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"? >> 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.