diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2016-01-21 11:56:26 +0000 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2016-02-02 14:05:07 +0100 |
commit | 919e11f3735c524e23d049512d3306ea1cc63fba (patch) | |
tree | 7e028299056ff66593504778e271cc8be457fbed /ui/gtk.c | |
parent | 10ae9d76388e3f4a31f6a1475b5e2d1f28404a10 (diff) | |
download | qemu-919e11f3735c524e23d049512d3306ea1cc63fba.zip qemu-919e11f3735c524e23d049512d3306ea1cc63fba.tar.gz qemu-919e11f3735c524e23d049512d3306ea1cc63fba.tar.bz2 |
gtk: use qemu_chr_alloc() to allocate CharDriverState
The gd_vc_handler() callback is using g_malloc0() to
allocate the CharDriverState struct. As a result the
logfd field is getting initialized to 0, instead of
-1 when no logfile is requested.
The result is that when running
$ qemu-system-i386 -nodefaults -chardev vc,id=mon0 -mon chardev=mon0
qemu duplicates all monitor output to stdout as well
as the GTK window.
Not using qemu_chr_alloc() was already a bug, but harmless
until this commit
commit d0d7708ba29cbcc343364a46bff981e0ff88366f
Author: Daniel P. Berrange <berrange@redhat.com>
Date: Mon Jan 11 12:44:41 2016 +0000
qemu-char: add logfile facility to all chardev backends
which exposed the problem as a behaviour regression
Reported-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Tested-by: Hervé Poussineau <hpoussin@reactos.org>
Message-id: 1453377386-10190-1-git-send-email-berrange@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui/gtk.c')
-rw-r--r-- | ui/gtk.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -1598,11 +1598,16 @@ static void gd_vc_chr_set_echo(CharDriverState *chr, bool echo) static int nb_vcs; static CharDriverState *vcs[MAX_VCS]; -static CharDriverState *gd_vc_handler(ChardevVC *unused, Error **errp) +static CharDriverState *gd_vc_handler(ChardevVC *vc, Error **errp) { + ChardevCommon *common = qapi_ChardevVC_base(vc); CharDriverState *chr; - chr = g_malloc0(sizeof(*chr)); + chr = qemu_chr_alloc(common, errp); + if (!chr) { + return NULL; + } + chr->chr_write = gd_vc_chr_write; chr->chr_set_echo = gd_vc_chr_set_echo; |