Arnav Bhate <bhatearnav@xxxxxxxxx> writes: > There are multiple instances where ints have been initialized with > values of unsigned ints, and where negative values don't mean anything. > When such ints are compared with unsigned ints, it causes sign comparison > warnings. > > Also, some of these are used just as stand-ins for their initial > values, never being modified, thus obscuring the specific conditions > under which certain operations happen. > > Replace int with unsigned int for 2 variables, and replace the > intermediate variables with their initial values for 2 other variables. Nit: worthwhile to mention that we also remove the `DISABLE_SIGN_COMPARE_WARNINGS` macro as a result of this change. > > Signed-off-by: Arnav Bhate <bhatearnav@xxxxxxxxx> > --- > decorate.c | 15 +++++---------- > 1 file changed, 5 insertions(+), 10 deletions(-) > > diff --git a/decorate.c b/decorate.c > index e161e13772..9f24925263 100644 > --- a/decorate.c > +++ b/decorate.c > @@ -3,8 +3,6 @@ > * data. > */ > > -#define DISABLE_SIGN_COMPARE_WARNINGS > - > #include "git-compat-util.h" > #include "object.h" > #include "decorate.h" > @@ -16,9 +14,8 @@ static unsigned int hash_obj(const struct object *obj, unsigned int n) > > static void *insert_decoration(struct decoration *n, const struct object *base, void *decoration) > { > - int size = n->size; > struct decoration_entry *entries = n->entries; > - unsigned int j = hash_obj(base, size); > + unsigned int j = hash_obj(base, n->size); > > while (entries[j].base) { > if (entries[j].base == base) { > @@ -26,7 +23,7 @@ static void *insert_decoration(struct decoration *n, const struct object *base, > entries[j].decoration = decoration; > return old; > } > - if (++j >= size) > + if (++j >= n->size) > j = 0; > } > entries[j].base = base; > @@ -37,8 +34,8 @@ static void *insert_decoration(struct decoration *n, const struct object *base, > > static void grow_decoration(struct decoration *n) > { > - int i; > - int old_size = n->size; > + unsigned int i; > + unsigned int old_size = n->size; > struct decoration_entry *old_entries = n->entries; > I was wondering why we don't use `n->size` like the previous hunk. Seems like its because `n->size` is modified right after. Looking into the code, perhaps this code could be moved to using ALLOW_GROW. But that is totally outside this patch. > n->size = (old_size + 1000) * 3 / 2; > @@ -59,9 +56,7 @@ static void grow_decoration(struct decoration *n) > void *add_decoration(struct decoration *n, const struct object *obj, > void *decoration) > { > - int nr = n->nr + 1; > - > - if (nr > n->size * 2 / 3) > + if ((n->nr + 1) > n->size * 2 / 3) > grow_decoration(n); > return insert_decoration(n, obj, decoration); > } > -- > 2.48.1 The patch looks good! Thanks
Attachment:
signature.asc
Description: PGP signature