On Fri, Mar 07, 2014 at 11:22:33AM +0100, Hans de Goede wrote: > Don't do the xorg_list_append a 2nd time when updating existing attributes, > while at it add a helper function for this to avoid code duplication. > > Signed-off-by: Hans de Goede <[email protected]>
Reviewed-by: Peter Hutterer <[email protected]> Cheers, Peter > --- > config/config.c | 31 +++++++++++++++++++++---------- > 1 file changed, 21 insertions(+), 10 deletions(-) > > diff --git a/config/config.c b/config/config.c > index 7971b87..530f21d 100644 > --- a/config/config.c > +++ b/config/config.c > @@ -159,23 +159,38 @@ config_odev_find_attribute(struct OdevAttributes > *attribs, int attrib_id) > return NULL; > } > > +static struct OdevAttribute * > +config_odev_find_or_add_attribute(struct OdevAttributes *attribs, int attrib) > +{ > + struct OdevAttribute *oa; > + > + oa = config_odev_find_attribute(attribs, attrib); > + if (oa) > + return oa; > + > + oa = calloc(1, sizeof(struct OdevAttribute)); > + if (!oa) > + return oa; > + > + oa->attrib_id = attrib; > + xorg_list_append(&oa->member, &attribs->list); > + > + return oa; > +} > + > Bool > config_odev_add_attribute(struct OdevAttributes *attribs, int attrib, > const char *attrib_name) > { > struct OdevAttribute *oa; > > - oa = config_odev_find_attribute(attribs, attrib); > - if (!oa) > - oa = calloc(1, sizeof(struct OdevAttribute)); > + oa = config_odev_find_or_add_attribute(attribs, attrib); > if (!oa) > return FALSE; > > - oa->attrib_id = attrib; > free(oa->attrib_name); > oa->attrib_name = strdup(attrib_name); > oa->attrib_type = ODEV_ATTRIB_STRING; > - xorg_list_append(&oa->member, &attribs->list); > return TRUE; > } > > @@ -185,16 +200,12 @@ config_odev_add_int_attribute(struct OdevAttributes > *attribs, int attrib, > { > struct OdevAttribute *oa; > > - oa = config_odev_find_attribute(attribs, attrib); > - if (!oa) > - oa = calloc(1, sizeof(struct OdevAttribute)); > + oa = config_odev_find_or_add_attribute(attribs, attrib); > if (!oa) > return FALSE; > > - oa->attrib_id = attrib; > oa->attrib_value = attrib_value; > oa->attrib_type = ODEV_ATTRIB_INT; > - xorg_list_append(&oa->member, &attribs->list); > return TRUE; > } > > -- > 1.9.0 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
