static int
virFDStreamMsgQueuePush(virFDStreamDataPtr fdst,
- virFDStreamMsgPtr msg,
+ virFDStreamMsgPtr *msg,
int fd,
const char *fdname)
{
while (*tmp)
tmp = &(*tmp)->next;
- *tmp = msg;
+ *tmp = g_steal_pointer(msg);
virCondSignal(&fdst->threadCond);
if (safewrite(fd, &c, sizeof(c)) != sizeof(c)) {
*dataLen -= got;
}
- virFDStreamMsgQueuePush(fdst, msg, fdout, fdoutname);
- msg = NULL;
+ virFDStreamMsgQueuePush(fdst, &msg, fdout, fdoutname);
return got;
msg->stream.data.buf = buf;
msg->stream.data.len = nbytes;
- virFDStreamMsgQueuePush(fdst, msg, fdst->fd, "pipe");
- msg = NULL;
+ virFDStreamMsgQueuePush(fdst, &msg, fdst->fd, "pipe");
ret = nbytes;
} else {
retry:
msg->type = VIR_FDSTREAM_MSG_TYPE_HOLE;
msg->stream.hole.len = length;
- virFDStreamMsgQueuePush(fdst, msg, fdst->fd, "pipe");
- msg = NULL;
+ virFDStreamMsgQueuePush(fdst, &msg, fdst->fd, "pipe");
}
} else {
off = lseek(fdst->fd, length, SEEK_CUR);