Avoid compiler "use of uninitialised variable" warnings

The compiler isn't smart enough to figure all of these out, so
restructure things a bit to avoid warnings.
diff --git a/common/rfb/CMsgReader.cxx b/common/rfb/CMsgReader.cxx
index 0271936..1d359d2 100644
--- a/common/rfb/CMsgReader.cxx
+++ b/common/rfb/CMsgReader.cxx
@@ -210,18 +210,19 @@
   if (width > maxCursorSize || height > maxCursorSize)
     throw Exception("Too big cursor");
 
-  rdr::U8 pr, pg, pb;
-  rdr::U8 sr, sg, sb;
-  int data_len = ((width+7)/8) * height;
-  int mask_len = ((width+7)/8) * height;
-  rdr::U8Array data(data_len);
-  rdr::U8Array mask(mask_len);
-
-  int x, y;
   rdr::U8 buf[width*height*4];
-  rdr::U8* out;
 
   if (width * height > 0) {
+    rdr::U8 pr, pg, pb;
+    rdr::U8 sr, sg, sb;
+    int data_len = ((width+7)/8) * height;
+    int mask_len = ((width+7)/8) * height;
+    rdr::U8Array data(data_len);
+    rdr::U8Array mask(mask_len);
+
+    int x, y;
+    rdr::U8* out;
+
     pr = is->readU8();
     pg = is->readU8();
     pb = is->readU8();
@@ -232,31 +233,31 @@
 
     is->readBytes(data.buf, data_len);
     is->readBytes(mask.buf, mask_len);
-  }
 
-  int maskBytesPerRow = (width+7)/8;
-  out = buf;
-  for (y = 0;y < height;y++) {
-    for (x = 0;x < width;x++) {
-      int byte = y * maskBytesPerRow + x / 8;
-      int bit = 7 - x % 8;
+    int maskBytesPerRow = (width+7)/8;
+    out = buf;
+    for (y = 0;y < height;y++) {
+      for (x = 0;x < width;x++) {
+        int byte = y * maskBytesPerRow + x / 8;
+        int bit = 7 - x % 8;
 
-      if (data.buf[byte] & (1 << bit)) {
-        out[0] = pr;
-        out[1] = pg;
-        out[2] = pb;
-      } else {
-        out[0] = sr;
-        out[1] = sg;
-        out[2] = sb;
+        if (data.buf[byte] & (1 << bit)) {
+          out[0] = pr;
+          out[1] = pg;
+          out[2] = pb;
+        } else {
+          out[0] = sr;
+          out[1] = sg;
+          out[2] = sb;
+        }
+
+        if (mask.buf[byte] & (1 << bit))
+          out[3] = 255;
+        else
+          out[3] = 0;
+
+        out += 4;
       }
-
-      if (mask.buf[byte] & (1 << bit))
-        out[3] = 255;
-      else
-        out[3] = 0;
-
-      out += 4;
     }
   }
 
diff --git a/vncviewer/UserDialog.cxx b/vncviewer/UserDialog.cxx
index 640f2a9..c3aa2f3 100644
--- a/vncviewer/UserDialog.cxx
+++ b/vncviewer/UserDialog.cxx
@@ -135,6 +135,12 @@
     y += 20 + 5;
     username = new Fl_Input(70, y, win->w()-70-10, 25);
     y += 25 + 5;
+  } else {
+    /*
+     * Compiler is not bright enough to understand that
+     * username won't be used further down...
+     */
+    username = NULL;
   }
 
   (new Fl_Box(70, y, win->w()-70-10, 20, _("Password:")))