[haiku-commits] r38409 - in haiku/trunk/src: add-ons/kernel/drivers/common system/kernel/debug

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 27 Aug 2010 23:36:07 +0200 (CEST)

Author: axeld
Date: 2010-08-27 23:36:07 +0200 (Fri, 27 Aug 2010)
New Revision: 38409
Changeset: http://dev.haiku-os.org/changeset/38409

Modified:
   haiku/trunk/src/add-ons/kernel/drivers/common/console.cpp
   haiku/trunk/src/system/kernel/debug/blue_screen.cpp
Log:
* Fixed CID 566 that was duplicated in blue_screen.cpp as well (but was not
  discovered by Coverity for some reason): commands without arguments would
  overwrite memory (in this case the sConsole::arg_count only, though).
* Travis's copyright was missing in blue_screen.cpp.
* Minor cleanup.


Modified: haiku/trunk/src/add-ons/kernel/drivers/common/console.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/common/console.cpp   2010-08-27 
21:10:14 UTC (rev 38408)
+++ haiku/trunk/src/add-ons/kernel/drivers/common/console.cpp   2010-08-27 
21:36:07 UTC (rev 38409)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx All rights reserved.
+ * Copyright 2005-2010, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx
  * Distributed under the terms of the MIT License.
  *
  * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
@@ -87,19 +87,19 @@
 
 
 static void
-gotoxy(struct console_desc *console, int new_x, int new_y)
+gotoxy(struct console_desc *console, int newX, int newY)
 {
-       if (new_x >= console->columns)
-               new_x = console->columns - 1;
-       if (new_x < 0)
-               new_x = 0;
-       if (new_y >= console->lines)
-               new_y = console->lines - 1;
-       if (new_y < 0)
-               new_y = 0;
+       if (newX >= console->columns)
+               newX = console->columns - 1;
+       if (newX < 0)
+               newX = 0;
+       if (newY >= console->lines)
+               newY = console->lines - 1;
+       if (newY < 0)
+               newY = 0;
 
-       console->x = new_x;
-       console->y = new_y;
+       console->x = newX;
+       console->y = newY;
 }
 
 
@@ -114,8 +114,8 @@
 }
 
 
-/** scroll from the cursor line up to the top of the scroll region up one line 
*/
-
+/*!    Scroll from the cursor line up to the top of the scroll region up one 
line.
+*/
 static void
 scrup(struct console_desc *console)
 {
@@ -130,12 +130,14 @@
        }
 
        // clear the bottom line
-       console->module->fill_glyph(0, console->y, console->columns, 1, ' ', 
console->attr);
+       console->module->fill_glyph(0, console->y, console->columns, 1, ' ',
+               console->attr);
 }
 
 
-/** scroll from the cursor line down to the bottom of the scroll region down 
one line */
-
+/*!    Scroll from the cursor line down to the bottom of the scroll region down
+       one line.
+*/
 static void
 scrdown(struct console_desc *console)
 {
@@ -150,7 +152,8 @@
        }
 
        // clear the top line
-       console->module->fill_glyph(0, console->y, console->columns, 1, ' ', 
console->attr);
+       console->module->fill_glyph(0, console->y, console->columns, 1, ' ',
+               console->attr);
 }
 
 
@@ -211,10 +214,12 @@
 {
        switch (mode) {
                case LINE_ERASE_WHOLE:
-                       console->module->fill_glyph(0, console->y, 
console->columns, 1, ' ', console->attr);
+                       console->module->fill_glyph(0, console->y, 
console->columns, 1, ' ',
+                               console->attr);
                        break;
                case LINE_ERASE_LEFT:
-                       console->module->fill_glyph(0, console->y, 
console->x+1, 1, ' ', console->attr);
+                       console->module->fill_glyph(0, console->y, console->x + 
1, 1, ' ',
+                               console->attr);
                        break;
                case LINE_ERASE_RIGHT:
                        console->module->fill_glyph(console->x, console->y,
@@ -234,11 +239,12 @@
                        console->module->clear(console->attr);
                        break;
                case SCREEN_ERASE_UP:
-                       console->module->fill_glyph(0, 0, console->columns, 
console->y + 1, ' ', console->attr);
+                       console->module->fill_glyph(0, 0, console->columns, 
console->y + 1,
+                               ' ', console->attr);
                        break;
                case SCREEN_ERASE_DOWN:
-                       console->module->fill_glyph(console->y, 0,
-                               console->columns, console->lines - console->y, 
' ', console->attr);
+                       console->module->fill_glyph(console->y, 0, 
console->columns,
+                               console->lines - console->y, ' ', 
console->attr);
                        break;
                default:
                        return;
@@ -247,21 +253,23 @@
 
 
 static void
-save_cur(struct console_desc *console, bool save_attrs)
+save_cur(struct console_desc *console, bool saveAttrs)
 {
        console->saved_x = console->x;
        console->saved_y = console->y;
-       if (save_attrs)
+
+       if (saveAttrs)
                console->saved_attr = console->attr;
 }
 
 
 static void
-restore_cur(struct console_desc *console, bool restore_attrs)
+restore_cur(struct console_desc *console, bool restoreAttrs)
 {
        console->x = console->saved_x;
        console->y = console->saved_y;
-       if (restore_attrs)
+
+       if (restoreAttrs)
                console->attr = console->saved_attr;
 }
 
@@ -273,7 +281,7 @@
                cr(console);
                lf(console);
        }
-       console->module->put_glyph(console->x-1, console->y, c, console->attr);
+       console->module->put_glyph(console->x - 1, console->y, c, 
console->attr);
        return c;
 }
 
@@ -336,7 +344,8 @@
                                break;
                        case 7: // reverse
                                console->reverse_attr = true;
-                               console->attr = ((console->attr & BMASK) >> 4) 
| ((console->attr & FMASK) << 4);
+                               console->attr = ((console->attr & BMASK) >> 4)
+                                       | ((console->attr & FMASK) << 4);
                                if (console->bright_attr)
                                        console->attr |= 0x08;
                                break;
@@ -378,8 +387,9 @@
 
        if (seenBracket) {
                switch(c) {
-                       case 'H': /* set cursor position */
-                       case 'f': {
+                       case 'H': // set cursor position
+                       case 'f':
+                       {
                                int32 row = argCount > 0 ? args[0] : 1;
                                int32 col = argCount > 1 ? args[1] : 1;
                                if (row > 0)
@@ -389,65 +399,73 @@
                                gotoxy(console, col, row);
                                break;
                        }
-                       case 'A': { /* move up */
-                               int32 deltay = argCount > 0 ? -args[0] : -1;
-                               if (deltay == 0)
-                                       deltay = -1;
-                               gotoxy(console, console->x, console->y + 
deltay);
+                       case 'A':       // move up
+                       {
+                               int32 deltaY = argCount > 0 ? -args[0] : -1;
+                               if (deltaY == 0)
+                                       deltaY = -1;
+                               gotoxy(console, console->x, console->y + 
deltaY);
                                break;
                        }
                        case 'e':
-                       case 'B': { /* move down */
-                               int32 deltay = argCount > 0 ? args[0] : 1;
-                               if (deltay == 0)
-                                       deltay = 1;
-                               gotoxy(console, console->x, console->y + 
deltay);
+                       case 'B':       // move down
+                       {
+                               int32 deltaY = argCount > 0 ? args[0] : 1;
+                               if (deltaY == 0)
+                                       deltaY = 1;
+                               gotoxy(console, console->x, console->y + 
deltaY);
                                break;
                        }
-                       case 'D': { /* move left */
-                               int32 deltax = argCount > 0 ? -args[0] : -1;
-                               if (deltax == 0)
-                                       deltax = -1;
-                               gotoxy(console, console->x + deltax, 
console->y);
+                       case 'D':       // move left
+                       {
+                               int32 deltaX = argCount > 0 ? -args[0] : -1;
+                               if (deltaX == 0)
+                                       deltaX = -1;
+                               gotoxy(console, console->x + deltaX, 
console->y);
                                break;
                        }
                        case 'a':
-                       case 'C': { /* move right */
-                               int32 deltax = argCount > 0 ? args[0] : 1;
-                               if (deltax == 0)
-                                       deltax = 1;
-                               gotoxy(console, console->x + deltax, 
console->y);
+                       case 'C':       // move right
+                       {
+                               int32 deltaX = argCount > 0 ? args[0] : 1;
+                               if (deltaX == 0)
+                                       deltaX = 1;
+                               gotoxy(console, console->x + deltaX, 
console->y);
                                break;
                        }
                        case '`':
-                       case 'G': { /* set X position */
-                               int32 newx = argCount > 0 ? args[0] : 1;
-                               if (newx > 0)
-                                       newx--;
-                               gotoxy(console, newx, console->y);
+                       case 'G':       // set X position
+                       {
+                               int32 newX = argCount > 0 ? args[0] : 1;
+                               if (newX > 0)
+                                       newX--;
+                               gotoxy(console, newX, console->y);
                                break;
                        }
-                       case 'd': { /* set y position */
-                               int32 newy = argCount > 0 ? args[0] : 1;
-                               if (newy > 0)
-                                       newy--;
-                               gotoxy(console, console->x, newy);
+                       case 'd':       // set y position
+                       {
+                               int32 newY = argCount > 0 ? args[0] : 1;
+                               if (newY > 0)
+                                       newY--;
+                               gotoxy(console, console->x, newY);
                                break;
                        }
-                       case 's': /* save current cursor */
+                       case 's':       // save current cursor
                                save_cur(console, false);
                                break;
-                       case 'u': /* restore cursor */
+                       case 'u':       // restore cursor
                                restore_cur(console, false);
                                break;
-                       case 'r': { /* set scroll region */
+                       case 'r':       // set scroll region
+                       {
                                int32 low = argCount > 0 ? args[0] : 1;
                                int32 high = argCount > 1 ? args[1] : 
console->lines;
                                if (low <= high)
                                        set_scroll_region(console, low - 1, 
high - 1);
                                break;
                        }
-                       case 'L': { /* scroll virtual down at cursor */
+                       case 'L':       // scroll virtual down at cursor
+                       {
                                int32 lines = argCount > 0 ? args[0] : 1;
                                while (lines > 0) {
                                        scrdown(console);
@@ -455,7 +473,8 @@
                                }
                                break;
                        }
-                       case 'M': { /* scroll virtual up at cursor */
+                       case 'M':       // scroll virtual up at cursor
+                       {
                                int32 lines = argCount > 0 ? args[0] : 1;
                                while (lines > 0) {
                                        scrup(console);
@@ -519,13 +538,13 @@
 
 
 static ssize_t
-_console_write(struct console_desc *console, const void *buf, size_t len)
+_console_write(struct console_desc *console, const void *buffer, size_t length)
 {
        const char *c;
        size_t pos = 0;
 
-       while (pos < len) {
-               c = &((const char *)buf)[pos++];
+       while (pos < length) {
+               c = &((const char *)buffer)[pos++];
 
                switch (console->state) {
                        case CONSOLE_STATE_NORMAL:
@@ -551,7 +570,7 @@
                                                break;
                                        case 0x1b:
                                                // escape character
-                                               console->arg_count = -1;
+                                               console->arg_count = 0;
                                                console->state = 
CONSOLE_STATE_GOT_ESCAPE;
                                                break;
                                        default:
@@ -559,15 +578,18 @@
                                }
                                break;
                        case CONSOLE_STATE_GOT_ESCAPE:
-                               // look for either commands with no argument, 
or the '[' character
+                               // Look for either commands with no argument, 
or the '['
+                               // character
                                switch (*c) {
                                        case '[':
                                                console->state = 
CONSOLE_STATE_SEEN_BRACKET;
                                                break;
                                        default:
-                                               
console->args[console->arg_count] = 0;
-                                               process_vt100_command(console, 
*c, false, console->args, console->arg_count + 1);
+                                               console->args[0] = 0;
+                                               process_vt100_command(console, 
*c, false, console->args,
+                                                       0);
                                                console->state = 
CONSOLE_STATE_NORMAL;
+                                               break;
                                }
                                break;
                        case CONSOLE_STATE_SEEN_BRACKET:
@@ -578,12 +600,16 @@
                                                console->state = 
CONSOLE_STATE_PARSING_ARG;
                                                break;
                                        case '?':
-                                               // private DEC mode parameter 
follows - we ignore those anyway
-                                               // ToDo: check if it was really 
used in combination with a mode command
+                                               // Private DEC mode parameter 
follows - we ignore those
+                                               // anyway
+                                               // TODO: check if it was really 
used in combination with
+                                               // a mode command
                                                break;
                                        default:
-                                               process_vt100_command(console, 
*c, true, console->args, console->arg_count + 1);
+                                               process_vt100_command(console, 
*c, true, console->args,
+                                                       console->arg_count + 1);
                                                console->state = 
CONSOLE_STATE_NORMAL;
+                                               break;
                                }
                                break;
                        case CONSOLE_STATE_NEW_ARG:
@@ -598,8 +624,10 @@
                                                console->state = 
CONSOLE_STATE_PARSING_ARG;
                                                break;
                                        default:
-                                               process_vt100_command(console, 
*c, true, console->args, console->arg_count + 1);
+                                               process_vt100_command(console, 
*c, true, console->args,
+                                                       console->arg_count + 1);
                                                console->state = 
CONSOLE_STATE_NORMAL;
+                                               break;
                                }
                                break;
                        case CONSOLE_STATE_PARSING_ARG:
@@ -613,8 +641,10 @@
                                                console->state = 
CONSOLE_STATE_NEW_ARG;
                                                break;
                                        default:
-                                               process_vt100_command(console, 
*c, true, console->args, console->arg_count + 1);
+                                               process_vt100_command(console, 
*c, true, console->args,
+                                                       console->arg_count + 1);
                                                console->state = 
CONSOLE_STATE_NORMAL;
+                                               break;
                                }
                }
        }
@@ -767,7 +797,7 @@
 publish_devices(void)
 {
        static const char *devices[] = {
-               DEVICE_NAME, 
+               DEVICE_NAME,
                NULL
        };
 

Modified: haiku/trunk/src/system/kernel/debug/blue_screen.cpp
===================================================================
--- haiku/trunk/src/system/kernel/debug/blue_screen.cpp 2010-08-27 21:10:14 UTC 
(rev 38408)
+++ haiku/trunk/src/system/kernel/debug/blue_screen.cpp 2010-08-27 21:36:07 UTC 
(rev 38409)
@@ -1,6 +1,9 @@
 /*
- * Copyright 2005-2008, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx All rights 
reserved.
+ * Copyright 2005-2010, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx
  * Distributed under the terms of the MIT License.
+ *
+ * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
+ * Distributed under the terms of the NewOS License.
  */
 
 
@@ -298,7 +301,8 @@
 
 
 static bool
-process_vt100_command(const char c, bool seenBracket, int32 *args, int32 
argCount)
+process_vt100_command(const char c, bool seenBracket, int32 *args,
+       int32 argCount)
 {
        bool ret = true;
 
@@ -307,8 +311,9 @@
 
        if (seenBracket) {
                switch (c) {
-                       case 'H': /* set cursor position */
-                       case 'f': {
+                       case 'H':       // set cursor position
+                       case 'f':
+                       {
                                int32 row = argCount > 0 ? args[0] : 1;
                                int32 col = argCount > 1 ? args[1] : 1;
                                if (row > 0)
@@ -318,66 +323,74 @@
                                move_cursor(col, row);
                                break;
                        }
-                       case 'A': { /* move up */
-                               int32 deltay = argCount > 0 ? -args[0] : -1;
-                               if (deltay == 0)
-                                       deltay = -1;
-                               move_cursor(sScreen.x, sScreen.y + deltay);
+                       case 'A':       // move up
+                       {
+                               int32 deltaY = argCount > 0 ? -args[0] : -1;
+                               if (deltaY == 0)
+                                       deltaY = -1;
+                               move_cursor(sScreen.x, sScreen.y + deltaY);
                                break;
                        }
                        case 'e':
-                       case 'B': { /* move down */
-                               int32 deltay = argCount > 0 ? args[0] : 1;
-                               if (deltay == 0)
-                                       deltay = 1;
-                               move_cursor(sScreen.x, sScreen.y + deltay);
+                       case 'B':       // move down
+                       {
+                               int32 deltaY = argCount > 0 ? args[0] : 1;
+                               if (deltaY == 0)
+                                       deltaY = 1;
+                               move_cursor(sScreen.x, sScreen.y + deltaY);
                                break;
                        }
-                       case 'D': { /* move left */
-                               int32 deltax = argCount > 0 ? -args[0] : -1;
-                               if (deltax == 0)
-                                       deltax = -1;
-                               move_cursor(sScreen.x + deltax, sScreen.y);
+                       case 'D':       // move left
+                       {
+                               int32 deltaX = argCount > 0 ? -args[0] : -1;
+                               if (deltaX == 0)
+                                       deltaX = -1;
+                               move_cursor(sScreen.x + deltaX, sScreen.y);
                                break;
                        }
                        case 'a':
-                       case 'C': { /* move right */
-                               int32 deltax = argCount > 0 ? args[0] : 1;
-                               if (deltax == 0)
-                                       deltax = 1;
-                               move_cursor(sScreen.x + deltax, sScreen.y);
+                       case 'C':       // move right
+                       {
+                               int32 deltaX = argCount > 0 ? args[0] : 1;
+                               if (deltaX == 0)
+                                       deltaX = 1;
+                               move_cursor(sScreen.x + deltaX, sScreen.y);
                                break;
                        }
                        case '`':
-                       case 'G': { /* set X position */
-                               int32 newx = argCount > 0 ? args[0] : 1;
-                               if (newx > 0)
-                                       newx--;
-                               move_cursor(newx, sScreen.y);
+                       case 'G':       // set X position
+                       {
+                               int32 newX = argCount > 0 ? args[0] : 1;
+                               if (newX > 0)
+                                       newX--;
+                               move_cursor(newX, sScreen.y);
                                break;
                        }
-                       case 'd': { /* set y position */
-                               int32 newy = argCount > 0 ? args[0] : 1;
-                               if (newy > 0)
-                                       newy--;
-                               move_cursor(sScreen.x, newy);
+                       case 'd':       // set y position
+                       {
+                               int32 newY = argCount > 0 ? args[0] : 1;
+                               if (newY > 0)
+                                       newY--;
+                               move_cursor(sScreen.x, newY);
                                break;
                        }
 #if 0
-                       case 's': /* save current cursor */
+                       case 's':       // save current cursor
                                save_cur(console, false);
                                break;
-                       case 'u': /* restore cursor */
+                       case 'u':       // restore cursor
                                restore_cur(console, false);
                                break;
-                       case 'r': { /* set scroll region */
+                       case 'r':       // set scroll region
+                       {
                                int32 low = argCount > 0 ? args[0] : 1;
                                int32 high = argCount > 1 ? args[1] : 
sScreen.lines;
                                if (low <= high)
                                        set_scroll_region(console, low - 1, 
high - 1);
                                break;
                        }
-                       case 'L': { /* scroll virtual down at cursor */
+                       case 'L':       // scroll virtual down at cursor
+                       {
                                int32 lines = argCount > 0 ? args[0] : 1;
                                while (lines > 0) {
                                        scrdown(console);
@@ -385,7 +398,8 @@
                                }
                                break;
                        }
-                       case 'M': { /* scroll virtual up at cursor */
+                       case 'M':       // scroll virtual up at cursor
+                       {
                                int32 lines = argCount > 0 ? args[0] : 1;
                                while (lines > 0) {
                                        scrup(console);
@@ -467,7 +481,7 @@
                                        back_space();
                                        break;
                                case '\t':
-                                       // ToDo: real tab...
+                                       // TODO: real tab...
                                        sScreen.x = (sScreen.x + 8) & ~7;
                                        if (sScreen.x >= sScreen.columns)
                                                next_line();
@@ -480,7 +494,7 @@
 
                                case 0x1b:
                                        // escape character
-                                       sScreen.arg_count = -1;
+                                       sScreen.arg_count = 0;
                                        sScreen.state = 
CONSOLE_STATE_GOT_ESCAPE;
                                        break;
                                default:
@@ -494,9 +508,8 @@
                                        sScreen.state = 
CONSOLE_STATE_SEEN_BRACKET;
                                        break;
                                default:
-                                       sScreen.args[sScreen.arg_count] = 0;
-                                       process_vt100_command(c, false, 
sScreen.args,
-                                               sScreen.arg_count + 1);
+                                       sScreen.args[0] = 0;
+                                       process_vt100_command(c, false, 
sScreen.args, 0);
                                        sScreen.state = CONSOLE_STATE_NORMAL;
                        }
                        break;
@@ -504,7 +517,7 @@
                        switch (c) {
                                case '0'...'9':
                                        sScreen.arg_count = 0;
-                                       sScreen.args[sScreen.arg_count] = c - 
'0';
+                                       sScreen.args[0] = c - '0';
                                        sScreen.state = 
CONSOLE_STATE_PARSING_ARG;
                                        break;
                                case '?':
@@ -515,13 +528,13 @@
                                        process_vt100_command(c, true, 
sScreen.args,
                                                sScreen.arg_count + 1);
                                        sScreen.state = CONSOLE_STATE_NORMAL;
+                                       break;
                        }
                        break;
                case CONSOLE_STATE_NEW_ARG:
                        switch (c) {
                                case '0'...'9':
-                                       sScreen.arg_count++;
-                                       if (sScreen.arg_count == MAX_ARGS) {
+                                       if (++sScreen.arg_count == MAX_ARGS) {
                                                sScreen.state = 
CONSOLE_STATE_NORMAL;
                                                break;
                                        }
@@ -532,6 +545,7 @@
                                        process_vt100_command(c, true, 
sScreen.args,
                                                sScreen.arg_count + 1);
                                        sScreen.state = CONSOLE_STATE_NORMAL;
+                                       break;
                        }
                        break;
                case CONSOLE_STATE_PARSING_ARG:
@@ -548,6 +562,7 @@
                                        process_vt100_command(c, true, 
sScreen.args,
                                                sScreen.arg_count + 1);
                                        sScreen.state = CONSOLE_STATE_NORMAL;
+                                       break;
                        }
        }
 }


Other related posts:

  • » [haiku-commits] r38409 - in haiku/trunk/src: add-ons/kernel/drivers/common system/kernel/debug - axeld