[PATCH 1/2] config_odev_add*_attribute: Don't add the attribute to the list twice
Peter Hutterer
peter.hutterer at who-t.net
Sun Mar 9 23:12:21 PDT 2014
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 <hdegoede at redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
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
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list