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

Frediano Ziglio fziglio at redhat.com
Fri May 18 08:42:23 UTC 2018


> 
> On 17/05/18 18:15, Jonathon Jongsma wrote:
> > Fine with me.
> > 
> 
> Thanks, I fixed a typo in header before pushing.
> 
> s/spice_marshalller_intem_free_func/spice_marshaller_item_free_func
> 

Can I send a follow up to remove the initial underscore?
Looks like some Python naming...

Frediano

> 
> > 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