sizeof with a pointer to dynamically allocated memory will return the size of the pointer, not the memory.

--HG--
extra : convert_revision : 04647d9fa0c464960d37797717f8171862cf48f8
This commit is contained in:
Gabe Black 2007-01-30 02:45:59 -05:00
parent a4a87daad1
commit 0cdcd207ac

View file

@ -632,6 +632,7 @@ BaseRemoteGDB::trap(int type)
size_t datalen, len;
char data[GDBPacketBufLen + 1];
char *buffer;
int bufferSize;
const char *p;
char command, subcmd;
string var;
@ -640,7 +641,8 @@ BaseRemoteGDB::trap(int type)
if (!attached)
return false;
buffer = (char*)malloc(gdbregs.bytes() * 2 + 256);
bufferSize = gdbregs.bytes() * 2 + 256;
buffer = (char*)malloc(bufferSize);
DPRINTF(GDBMisc, "trap: PC=%#x NPC=%#x\n",
context->readPC(), context->readNextPC());
@ -661,7 +663,7 @@ BaseRemoteGDB::trap(int type)
active = true;
else
// Tell remote host that an exception has occurred.
snprintf((char *)buffer, sizeof(buffer), "S%02x", type);
snprintf((char *)buffer, bufferSize, "S%02x", type);
send(buffer);
// Stick frame regs into our reg cache.
@ -679,13 +681,13 @@ BaseRemoteGDB::trap(int type)
// if this command came from a running gdb, answer it --
// the other guy has no way of knowing if we're in or out
// of this loop when he issues a "remote-signal".
snprintf((char *)buffer, sizeof(buffer),
snprintf((char *)buffer, bufferSize,
"S%02x", type);
send(buffer);
continue;
case GDBRegR:
if (2 * gdbregs.bytes() > sizeof(buffer))
if (2 * gdbregs.bytes() > bufferSize)
panic("buffer too small");
mem2hex(buffer, gdbregs.regs, gdbregs.bytes());
@ -732,7 +734,7 @@ BaseRemoteGDB::trap(int type)
send("E03");
continue;
}
if (len > sizeof(buffer)) {
if (len > bufferSize) {
send("E04");
continue;
}
@ -768,7 +770,7 @@ BaseRemoteGDB::trap(int type)
send("E08");
continue;
}
p = hex2mem(buffer, p, sizeof(buffer));
p = hex2mem(buffer, p, bufferSize);
if (p == NULL) {
send("E09");
continue;