Thread (1 message) 1 message, 1 author, 2021-06-01

Re: [PATCH] builtin/fsck.c: don't conflate "int" and "enum" in callback

From: Junio C Hamano <hidden>
Date: 2021-06-01 21:04:38

Ævar Arnfjörð Bjarmason  [off-list ref] writes:
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.
As others already have pointed out, xlc is correct and these
warnings are perhaps useful.  I'd just remove the last sentence
while queuing, as "Enums are just ints in C" is only half a truth.

The constants like OBJ_COMMIT can be used as "int", but the type of
an enum itself may not be the same as "int"---it can be narrower.
Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---

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...
Thanks.
quoted hunk
 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;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help