diff options
author | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2010-01-11 17:30:50 +0000 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2010-01-12 13:24:52 -0600 |
commit | 83755c173f4608764e3ee92428247d1c5e962e6a (patch) | |
tree | 61c44752de9cb73c489d436e0aca7bafeb01b5f7 | |
parent | dbd483242c2e6dfaacb9fd3d20c333bbdad87243 (diff) | |
download | qemu-83755c173f4608764e3ee92428247d1c5e962e6a.zip qemu-83755c173f4608764e3ee92428247d1c5e962e6a.tar.gz qemu-83755c173f4608764e3ee92428247d1c5e962e6a.tar.bz2 |
vnc_refresh: return if vd->timer is NULL
Hi all,
calling vnc_update_client in vnc_refresh might have the unlikely side
effect of setting vd->timer = NULL, if the last vnc client disconnected.
In this case we have to return from vnc_refresh without updating the
timer, otherwise we cause a segfault.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | vnc.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -2305,6 +2305,10 @@ static void vnc_refresh(void *opaque) rects += vnc_update_client(vs, has_dirty); vs = vs->next; } + /* vd->timer could be NULL now if the last client disconnected, + * in this case don't update the timer */ + if (vd->timer == NULL) + return; if (has_dirty && rects) { vd->timer_interval /= 2; |