Added a memory write boundary protection in the ram watch window to prevent users from writing into ROM memory area.
This commit is contained in:
parent
c46d3e2a9d
commit
40379a32dc
|
@ -949,53 +949,56 @@ static void ramWatch_cell_edited_cb (GtkCellRendererText * cell,
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
writefunc wfunc;
|
if ( (rw->addr >= 0) && (rw->addr < 0x8000) )
|
||||||
|
|
||||||
if (rw->size == 2)
|
|
||||||
{
|
{
|
||||||
if (rw->type)
|
writefunc wfunc;
|
||||||
|
|
||||||
|
if (rw->size == 2)
|
||||||
{
|
{
|
||||||
rw->val.u16 =
|
if (rw->type)
|
||||||
strtol (new_text, NULL, 0);
|
{
|
||||||
|
rw->val.u16 =
|
||||||
|
strtol (new_text, NULL, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rw->val.i16 =
|
||||||
|
strtol (new_text, NULL, 0);
|
||||||
|
}
|
||||||
|
wfunc = GetWriteHandler (rw->addr);
|
||||||
|
|
||||||
|
if (wfunc)
|
||||||
|
{
|
||||||
|
wfunc ((uint32) rw->addr,
|
||||||
|
(uint8) (rw->val.u16 & 0x00ff));
|
||||||
|
}
|
||||||
|
|
||||||
|
wfunc = GetWriteHandler (rw->addr + 1);
|
||||||
|
|
||||||
|
if (wfunc)
|
||||||
|
{
|
||||||
|
wfunc ((uint32) rw->addr + 1,
|
||||||
|
(uint8) ((rw->val.
|
||||||
|
u16 & 0xff00) >> 8));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rw->val.i16 =
|
if (rw->type)
|
||||||
strtol (new_text, NULL, 0);
|
{
|
||||||
}
|
rw->val.u8 = strtol (new_text, NULL, 0);
|
||||||
wfunc = GetWriteHandler (rw->addr);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rw->val.i8 = strtol (new_text, NULL, 0);
|
||||||
|
}
|
||||||
|
wfunc = GetWriteHandler (rw->addr);
|
||||||
|
|
||||||
if (wfunc)
|
if (wfunc)
|
||||||
{
|
{
|
||||||
wfunc ((uint32) rw->addr,
|
wfunc ((uint32) rw->addr,
|
||||||
(uint8) (rw->val.u16 & 0x00ff));
|
(uint8) rw->val.u8);
|
||||||
}
|
}
|
||||||
|
|
||||||
wfunc = GetWriteHandler (rw->addr + 1);
|
|
||||||
|
|
||||||
if (wfunc)
|
|
||||||
{
|
|
||||||
wfunc ((uint32) rw->addr + 1,
|
|
||||||
(uint8) ((rw->val.
|
|
||||||
u16 & 0xff00) >> 8));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (rw->type)
|
|
||||||
{
|
|
||||||
rw->val.u8 = strtol (new_text, NULL, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rw->val.i8 = strtol (new_text, NULL, 0);
|
|
||||||
}
|
|
||||||
wfunc = GetWriteHandler (rw->addr);
|
|
||||||
|
|
||||||
if (wfunc)
|
|
||||||
{
|
|
||||||
wfunc ((uint32) rw->addr,
|
|
||||||
(uint8) rw->val.u8);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue