[PATCH 3/7] input: un-constify InputAttributes
Hans de Goede
hdegoede at redhat.com
Thu Jan 30 00:43:37 PST 2014
Hi,
On 01/30/2014 12:51 AM, Peter Hutterer wrote:
> Introduced in fecc7eb1cf66db64728ee2d68cd9443df7e70879 and reverts most of
> that but it's helpfully mixed with other stuff.
>
> InputAttributes are not const, they're strdup'd everywhere but the test code
> and freed properly. Revert the const char changes and fix the test up instead.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
Please use XNFstrdup instead of strdup (or add explicit error checking)
with that changed:
Reviewed By: Hans de Goede <hdegoede at redhat.com>
Regards,
Hans
> ---
> config/udev.c | 14 +++++++-------
> dix/inpututils.c | 16 ++++++++--------
> include/input.h | 12 ++++++------
> test/input.c | 17 +++++++++--------
> 4 files changed, 30 insertions(+), 29 deletions(-)
>
> diff --git a/config/udev.c b/config/udev.c
> index 436b8f0..68ed348 100644
> --- a/config/udev.c
> +++ b/config/udev.c
> @@ -242,16 +242,16 @@ device_added(struct udev_device *udev_device)
> free(config_info);
> input_option_free_list(&input_options);
>
> - free((void *) attrs.usb_id);
> - free((void *) attrs.pnp_id);
> - free((void *) attrs.product);
> - free((void *) attrs.device);
> - free((void *) attrs.vendor);
> + free(attrs.usb_id);
> + free(attrs.pnp_id);
> + free(attrs.product);
> + free(attrs.device);
> + free(attrs.vendor);
> if (attrs.tags) {
> - const char **tag = attrs.tags;
> + char **tag = attrs.tags;
>
> while (*tag) {
> - free((void *) *tag);
> + free(*tag);
> tag++;
> }
> free(attrs.tags);
> diff --git a/dix/inpututils.c b/dix/inpututils.c
> index 3e1d75f..a10a7c7 100644
> --- a/dix/inpututils.c
> +++ b/dix/inpututils.c
> @@ -351,7 +351,7 @@ DuplicateInputAttributes(InputAttributes * attrs)
> {
> InputAttributes *new_attr;
> int ntags = 0;
> - const char **tags, **new_tags;
> + char **tags, **new_tags;
>
> if (!attrs)
> return NULL;
> @@ -403,20 +403,20 @@ DuplicateInputAttributes(InputAttributes * attrs)
> void
> FreeInputAttributes(InputAttributes * attrs)
> {
> - const char **tags;
> + char **tags;
>
> if (!attrs)
> return;
>
> - free((void *) attrs->product);
> - free((void *) attrs->vendor);
> - free((void *) attrs->device);
> - free((void *) attrs->pnp_id);
> - free((void *) attrs->usb_id);
> + free(attrs->product);
> + free(attrs->vendor);
> + free(attrs->device);
> + free(attrs->pnp_id);
> + free(attrs->usb_id);
>
> if ((tags = attrs->tags))
> while (*tags)
> - free((void *) *tags++);
> + free(*tags++);
>
> free(attrs->tags);
> free(attrs);
> diff --git a/include/input.h b/include/input.h
> index 455963f..6f047ee 100644
> --- a/include/input.h
> +++ b/include/input.h
> @@ -221,12 +221,12 @@ typedef struct _InputOption InputOption;
> typedef struct _XI2Mask XI2Mask;
>
> typedef struct _InputAttributes {
> - const char *product;
> - const char *vendor;
> - const char *device;
> - const char *pnp_id;
> - const char *usb_id;
> - const char **tags; /* null-terminated */
> + char *product;
> + char *vendor;
> + char *device;
> + char *pnp_id;
> + char *usb_id;
> + char **tags; /* null-terminated */
> uint32_t flags;
> } InputAttributes;
>
> diff --git a/test/input.c b/test/input.c
> index aaa7a69..458714f 100644
> --- a/test/input.c
> +++ b/test/input.c
> @@ -1101,7 +1101,7 @@ xi_unregister_handlers(void)
> static void
> cmp_attr_fields(InputAttributes * attr1, InputAttributes * attr2)
> {
> - const char **tags1, **tags2;
> + char **tags1, **tags2;
>
> assert(attr1 && attr2);
> assert(attr1 != attr2);
> @@ -1182,7 +1182,6 @@ dix_input_attributes(void)
> {
> InputAttributes orig = { 0 };
> InputAttributes *new;
> - const char *tags[4] = { "tag1", "tag2", "tag2", NULL };
>
> new = DuplicateInputAttributes(NULL);
> assert(!new);
> @@ -1190,27 +1189,27 @@ dix_input_attributes(void)
> new = DuplicateInputAttributes(&orig);
> assert(memcmp(&orig, new, sizeof(InputAttributes)) == 0);
>
> - orig.product = "product name";
> + orig.product = strdup("product name");
> new = DuplicateInputAttributes(&orig);
> cmp_attr_fields(&orig, new);
> FreeInputAttributes(new);
>
> - orig.vendor = "vendor name";
> + orig.vendor = strdup("vendor name");
> new = DuplicateInputAttributes(&orig);
> cmp_attr_fields(&orig, new);
> FreeInputAttributes(new);
>
> - orig.device = "device path";
> + orig.device = strdup("device path");
> new = DuplicateInputAttributes(&orig);
> cmp_attr_fields(&orig, new);
> FreeInputAttributes(new);
>
> - orig.pnp_id = "PnPID";
> + orig.pnp_id = strdup("PnPID");
> new = DuplicateInputAttributes(&orig);
> cmp_attr_fields(&orig, new);
> FreeInputAttributes(new);
>
> - orig.usb_id = "USBID";
> + orig.usb_id = strdup("USBID");
> new = DuplicateInputAttributes(&orig);
> cmp_attr_fields(&orig, new);
> FreeInputAttributes(new);
> @@ -1220,10 +1219,12 @@ dix_input_attributes(void)
> cmp_attr_fields(&orig, new);
> FreeInputAttributes(new);
>
> - orig.tags = tags;
> + orig.tags = xstrtokenize("tag1 tag2 tag3", " ");
> new = DuplicateInputAttributes(&orig);
> cmp_attr_fields(&orig, new);
> FreeInputAttributes(new);
> +
> + FreeInputAttributes(&orig);
> }
>
> static void
>
More information about the xorg-devel
mailing list