[Spice-devel] [PATCH spice-common] Fix cast to spice_marshalller_intem_free_func function

Jonathon Jongsma jjongsma at redhat.com
Thu May 17 21:15:54 UTC 2018


Fine with me.

Acked-by: Jonathon Jongsma <jjongsma at redhat.com>


On Thu, 2018-05-17 at 12:56 -0300, Eduardo Lima (Etrunko) wrote:
> Building with gcc 8.0.1 from Fedora 28 gives the following error:
> 
> FAILED: common/common@@spice-common at sta/marshaller.c.o
> ../common/marshaller.c: In function 'spice_marshaller_reserve_space':
> ../common/marshaller.c:311:27: error: cast between incompatible
> function types from 'void (*)(void *)' to 'void (*)(uint8_t *, void
> *)' {aka 'void (*)(unsigned char *, void *)'} [-Werror=cast-function-
> type]
>          item->free_data = (spice_marshaller_item_free_func)free;
>                            ^
> cc1: all warnings being treated as errors
> 
> Which can be easily fixed by creating a new function with the correct
> signature and calling free() from it.
> 
> Signed-off-by: Eduardo Lima (Etrunko) <etrunko at redhat.com>
> ---
>  common/marshaller.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/common/marshaller.c b/common/marshaller.c
> index adfb8cd..80cedb7 100644
> --- a/common/marshaller.c
> +++ b/common/marshaller.c
> @@ -270,6 +270,11 @@ static size_t
> remaining_buffer_size(SpiceMarshallerData *d)
>      return MARSHALLER_BUFFER_SIZE - d->current_buffer_position;
>  }
>  
> +static void _reserve_space_free_data(uint8_t *data,
> SPICE_GNUC_UNUSED void *opaque)
> +{
> +    free(data);
> +}
> +
>  uint8_t *spice_marshaller_reserve_space(SpiceMarshaller *m, size_t
> size)
>  {
>      MarshallerItem *item;
> @@ -308,7 +313,7 @@ uint8_t
> *spice_marshaller_reserve_space(SpiceMarshaller *m, size_t size)
>          /* Large item, allocate by itself */
>          item->data = (uint8_t *)spice_malloc(size);
>          item->len = size;
> -        item->free_data = (spice_marshaller_item_free_func)free;
> +        item->free_data = _reserve_space_free_data;
>          item->opaque = NULL;
>      } else {
>          /* Use next buffer */


More information about the Spice-devel mailing list