From 9c88e0dd266292b4dec7857f073b811137b6b30d Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 13 Sep 2018 12:30:30 +0200 Subject: [PATCH] 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. --- common/rfb/CMsgReader.cxx | 65 ++++++++++++++++++++------------------- vncviewer/UserDialog.cxx | 6 ++++ 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/common/rfb/CMsgReader.cxx b/common/rfb/CMsgReader.cxx index 0271936e..1d359d2c 100644 --- a/common/rfb/CMsgReader.cxx +++ b/common/rfb/CMsgReader.cxx @@ -210,18 +210,19 @@ void CMsgReader::readSetXCursor(int width, int height, const Point& hotspot) 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 @@ void CMsgReader::readSetXCursor(int width, int height, const Point& hotspot) 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; - - 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; + 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 (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 640f2a98..c3aa2f36 100644 --- a/vncviewer/UserDialog.cxx +++ b/vncviewer/UserDialog.cxx @@ -135,6 +135,12 @@ void UserDialog::getUserPasswd(bool secure, char** user, char** password) 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:"))) -- 2.39.5