Changeset 1532


Ignore:
Timestamp:
01/08/12 02:29:03 (17 months ago)
Author:
philmoz
Message:

Update to memory browser to prevent crash if invalid memory address selected.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/release-1_0/core/gui_debug.c

    r1024 r1532  
    1414static char debug_cont_update; 
    1515static char buf[32]; 
    16 static long dummy=0; 
     16static char *bad_address = "Invalid Address               "; 
    1717static unsigned int step; 
    1818 
     
    3030    int i; 
    3131 
    32     if (!(addr<=(void*)MAXRAMADDR || addr>=(void*)ROMBASEADDR)) { addr = &dummy; }; 
     32    if ((addr<=(void*)MAXRAMADDR || addr>=(void*)ROMBASEADDR)) 
     33    { 
     34        sprintf(buf, "0x%08X (%10u)", *((unsigned int*)addr), *((unsigned int*)addr)); 
     35        draw_txt_string(10, y, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    3336 
    34     sprintf(buf, "0x%08X (%10u)", *((unsigned int*)addr), *((unsigned int*)addr)); 
    35     draw_txt_string(10, y, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
     37        sprintf(buf, "0x%04X     (     %5hu)", *((unsigned short*)addr), *((unsigned short*)addr)); 
     38        draw_txt_string(10, y+1, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    3639 
    37     sprintf(buf, "0x%04X (%5hu)", *((unsigned short*)addr), *((unsigned short*)addr)); 
    38     draw_txt_string(10, y+1, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
     40        sprintf(buf, "0x%02X       (       %3hu)", *((unsigned char*)addr), *((unsigned char*)addr)); 
     41        draw_txt_string(10, y+2, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    3942 
    40     sprintf(buf, "0x%02X (%3hu)", *((unsigned char*)addr), *((unsigned char*)addr)); 
    41     draw_txt_string(10, y+2, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
     43        //sprintf(buf, "0x%lf", *((double*)addr)); 
     44        //draw_txt_string(10, y+3, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    4245 
    43     //sprintf(buf, "0x%lf", *((double*)addr)); 
    44     //draw_txt_string(10, y+3, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
    45  
    46     for (i=0; i<30; ++i) { 
    47         if (*((char*)(addr+i))) buf[i]=*((char*)(addr+i)); 
    48         else break; 
     46        for (i=0; i<30; ++i) { 
     47            if (*((char*)(addr+i))) buf[i]=*((char*)(addr+i)); 
     48            else break; 
     49        } 
     50        while (i<30) { 
     51            buf[i++]=' '; 
     52        } 
     53        buf[i]=0; 
     54        draw_txt_string(10, y+4, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    4955    } 
    50     while (i<30) { 
    51         buf[i++]=' '; 
     56    else 
     57    { 
     58        draw_txt_string(10, y, bad_address, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
     59        draw_txt_string(10, y+1, bad_address, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
     60        draw_txt_string(10, y+2, bad_address, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
     61        //draw_txt_string(10, y+3, bad_address, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
     62        draw_txt_string(10, y+4, bad_address, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    5263    } 
    53     buf[i]=0; 
    54     draw_txt_string(10, y+4, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
    5564} 
    5665 
     
    8089        case 2: 
    8190            sprintf(buf, "0x%08X", addr); 
    82             draw_txt_string(10, 0, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
     91            draw_txt_string(10, 0, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    8392            sprintf(buf, "0x%08X", step); 
    84             draw_txt_string(28, 0, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
     93            draw_txt_string(28, 0, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    8594            sprintf(buf,"%0d",debug_cont_update); 
    86             draw_txt_string(44, 0, buf, MAKE_COLOR(COLOR_BLACK, COLOR_WHITE)); 
     95            draw_txt_string(44, 0, buf, MAKE_COLOR(SCREEN_COLOR, COLOR_WHITE)); 
    8796            gui_debug_draw_values(2, addr); 
    88             gui_debug_draw_values(8, *((void**)addr)); 
     97            if ((addr<=(void*)MAXRAMADDR || addr>=(void*)ROMBASEADDR)) 
     98                gui_debug_draw_values(8, *((void**)addr)); 
     99            else 
     100                gui_debug_draw_values(8, addr); 
    89101            conf.mem_view_addr_init = (long)addr; 
    90102 
Note: See TracChangeset for help on using the changeset viewer.