diff --git a/server/char-device.c b/server/char-device.c index d3259320..16687d83 100644 --- a/server/char-device.c +++ b/server/char-device.c @@ -31,6 +31,9 @@ #define RED_CHAR_DEVICE_WAIT_TOKENS_TIMEOUT 30000 #define MAX_POOL_SIZE (10 * 64 * 1024) +struct RedCharDeviceWriteBufferPrivate { +}; + typedef struct RedCharDeviceClient RedCharDeviceClient; struct RedCharDeviceClient { RedCharDevice *dev; @@ -539,7 +542,13 @@ static RedCharDeviceWriteBuffer *__red_char_device_write_buffer_get( if (ret) { dev->priv->cur_pool_size -= ret->buf_size; } else { - ret = spice_new0(RedCharDeviceWriteBuffer, 1); + struct RedCharDeviceWriteBufferFull { + RedCharDeviceWriteBuffer buffer; + RedCharDeviceWriteBufferPrivate priv; + } *write_buf; + write_buf = spice_new0(struct RedCharDeviceWriteBufferFull, 1); + ret = &write_buf->buffer; + ret->priv = &write_buf->priv; } spice_assert(!ret->buf_used); diff --git a/server/char-device.h b/server/char-device.h index 7854086c..9bfd7c65 100644 --- a/server/char-device.h +++ b/server/char-device.h @@ -146,6 +146,7 @@ GType red_char_device_get_type(void) G_GNUC_CONST; * */ /* buffer that is used for writing to the device */ +typedef struct RedCharDeviceWriteBufferPrivate RedCharDeviceWriteBufferPrivate; typedef struct RedCharDeviceWriteBuffer { int origin; RedClient *client; /* The client that sent the message to the device. @@ -156,6 +157,8 @@ typedef struct RedCharDeviceWriteBuffer { uint32_t buf_used; uint32_t token_price; uint32_t refs; + + RedCharDeviceWriteBufferPrivate *priv; } RedCharDeviceWriteBuffer; void red_char_device_reset_dev_instance(RedCharDevice *dev,