> > On Fri, Oct 28, 2016 at 11:59:54AM +0100, Frediano Ziglio wrote: > > These fields need just channel to be set to be initialized. > > Move their initialization to constructor to make sure > > they are initialized as soon as possible. > > Why? > Read previous reply to "red-channel-client: Init pipe field during init". To sum up current code could lead to use of not initialized fields due to order changes introduced. > Not related to this patch, but I'm not sure initializing pos and size to > 0 is required, 'priv' will be memset to 0 upon creation. > > Christophe > I just moved the code. I think would be better to remove with another patch if you like to. Frediano > > > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > > --- > > server/dummy-channel-client.c | 2 -- > > server/red-channel-client.c | 18 +++++++++--------- > > 2 files changed, 9 insertions(+), 11 deletions(-) > > > > diff --git a/server/dummy-channel-client.c b/server/dummy-channel-client.c > > index b7fee6f..a242d51 100644 > > --- a/server/dummy-channel-client.c > > +++ b/server/dummy-channel-client.c > > @@ -70,8 +70,6 @@ static gboolean > > dummy_channel_client_initable_init(GInitable *initable, > > goto cleanup; > > } > > > > - rcc->incoming.header.data = rcc->incoming.header_buf; > > - > > red_channel_add_client(channel, rcc); > > red_client_add_channel(client, rcc); > > > > diff --git a/server/red-channel-client.c b/server/red-channel-client.c > > index 3b2c24c..6c78237 100644 > > --- a/server/red-channel-client.c > > +++ b/server/red-channel-client.c > > @@ -269,6 +269,14 @@ static void red_channel_client_constructed(GObject > > *object) > > { > > RedChannelClient *self = RED_CHANNEL_CLIENT(object); > > > > + self->incoming.opaque = self; > > + self->incoming.cb = > > red_channel_get_incoming_handler(self->priv->channel); > > + > > + self->priv->outgoing.opaque = self; > > + self->priv->outgoing.cb = > > red_channel_get_outgoing_handler(self->priv->channel); > > + self->priv->outgoing.pos = 0; > > + self->priv->outgoing.size = 0; > > + > > if (red_channel_client_test_remote_common_cap(self, > > SPICE_COMMON_CAP_MINI_HEADER)) { > > self->incoming.header = mini_header_wrapper; > > self->priv->send_data.header = mini_header_wrapper; > > @@ -278,6 +286,7 @@ static void red_channel_client_constructed(GObject > > *object) > > self->priv->send_data.header = full_header_wrapper; > > self->priv->is_mini_header = FALSE; > > } > > + self->incoming.header.data = self->incoming.header_buf; > > } > > > > static void red_channel_client_class_init(RedChannelClientClass *klass) > > @@ -900,15 +909,6 @@ static gboolean > > red_channel_client_initable_init(GInitable *initable, > > self->priv->latency_monitor.roundtrip = -1; > > } > > > > - self->incoming.opaque = self; > > - self->incoming.cb = > > red_channel_get_incoming_handler(self->priv->channel); > > - self->incoming.header.data = self->incoming.header_buf; > > - > > - self->priv->outgoing.opaque = self; > > - self->priv->outgoing.cb = > > red_channel_get_outgoing_handler(self->priv->channel); > > - self->priv->outgoing.pos = 0; > > - self->priv->outgoing.size = 0; > > - > > if (self->priv->stream) > > self->priv->stream->watch = > > core->watch_add(core, self->priv->stream->socket, _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel