vnc: fix segfault
authorGerd Hoffmann <kraxel@redhat.com>
Mon, 27 Apr 2009 15:24:51 +0000 (17:24 +0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 1 May 2009 14:44:10 +0000 (09:44 -0500)
Move down cmp_bytes initialization.  Must be after vga_hw_update()
call, because that one might change the screen depth.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

vnc.c

diff --git a/vnc.c b/vnc.c
index 34ae8b2..7b1c227 100644 (file)
--- a/vnc.c
+++ b/vnc.c
@@ -705,7 +705,7 @@ static void vnc_update_client(void *opaque)
         int y;
         uint8_t *guest_row;
         uint8_t *server_row;
-        int cmp_bytes = 16 * ds_get_bytes_per_pixel(vs->ds);
+        int cmp_bytes;
         uint32_t width_mask[VNC_DIRTY_WORDS];
         int n_rectangles;
         int saved_offset;
@@ -725,6 +725,7 @@ static void vnc_update_client(void *opaque)
          * Update server dirty map.
          */
         vnc_set_bits(width_mask, (ds_get_width(vs->ds) / 16), VNC_DIRTY_WORDS);
+        cmp_bytes = 16 * ds_get_bytes_per_pixel(vs->ds);
         guest_row  = vs->guest.ds->data;
         server_row = vs->server.ds->data;
         for (y = 0; y < vs->guest.ds->height; y++) {