Building with gcc 8.0.1 from Fedora 28 gives the following error: FAILED: common/common@@spice-common@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@xxxxxxxxxx> --- 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 */ -- 2.14.3 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel