Am 01.06.21 um 02:05 schrieb Ævar Arnfjörð Bjarmason: > Fix a warning on AIX's xlc compiler that's been emitted since my > a1aad71601a (fsck.h: use "enum object_type" instead of "int", > 2021-03-28): > > "builtin/fsck.c", line 805.32: 1506-068 (W) Operation between > types "int(*)(struct object*,enum object_type,void*,struct > fsck_options*)" and "int(*)(struct object*,int,void*,struct > fsck_options*)" is not allowed. > > I.e. it complains about us assigning a function with a prototype "int" > where we're expecting "enum object_type". Enums are just ints in C, > but it seems xlc is more picky than some about conflating them at the > source level. Is that true? I thought compilers were allowed to use whatever data type is sufficient to represent all enumeration values. For this reason, you sometimes see enum X { A, B, X_MAX = 0x7fffffff }; that ensures that an int must be used for representation of enum X. So, AFAICS, your patch is an actual fix, not just cosmetic. > > Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> > --- > > This is new in v2.32.0, so sending this during the rc phase, just a > warning though, so unless you're using fatal warnings on that > OS/platform it won't impact anything, and even then it's just a minor > annoyance... > > builtin/fsck.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/builtin/fsck.c b/builtin/fsck.c > index 87a99b0108..b42b6fe21f 100644 > --- a/builtin/fsck.c > +++ b/builtin/fsck.c > @@ -109,7 +109,8 @@ static int fsck_error_func(struct fsck_options *o, > > static struct object_array pending; > > -static int mark_object(struct object *obj, int type, void *data, struct fsck_options *options) > +static int mark_object(struct object *obj, enum object_type type, > + void *data, struct fsck_options *options) > { > struct object *parent = data; > >