changeset 358c00c482f7 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=358c00c482f7
description:
CPU/Cache: Fix some errors exposed by valgrind
diffstat:
src/cpu/simple/timing.cc | 8 ++++----
src/mem/packet.hh | 3 ++-
2 files changed, 6 insertions(+), 5 deletions(-)
diffs (52 lines):
diff -r ae58aacfab8f -r 358c00c482f7 src/cpu/simple/timing.cc
--- a/src/cpu/simple/timing.cc Wed Sep 29 11:31:03 2010 -0700
+++ b/src/cpu/simple/timing.cc Thu Sep 30 09:35:19 2010 -0500
@@ -274,7 +274,7 @@
{
PacketPtr pkt;
buildPacket(pkt, req, read);
- pkt->dataDynamic<uint8_t>(data);
+ pkt->dataDynamicArray<uint8_t>(data);
if (req->getFlags().isSet(Request::NO_ACCESS)) {
assert(!dcache_pkt);
pkt->makeResponse();
@@ -402,7 +402,7 @@
PacketPtr pkt = new Packet(req, pkt1->cmd.responseCommand(),
Packet::Broadcast);
- pkt->dataDynamic<uint8_t>(data);
+ pkt->dataDynamicArray<uint8_t>(data);
pkt1->dataStatic<uint8_t>(data);
pkt2->dataStatic<uint8_t>(data + req1->getSize());
@@ -602,7 +602,7 @@
if (traceData) {
traceData->setData(data);
}
- T *dataP = new T;
+ T *dataP = (T*) new uint8_t[sizeof(T)];
*dataP = TheISA::htog(data);
return writeTheseBytes((uint8_t *)dataP, sizeof(T), addr, flags, res);
@@ -674,7 +674,7 @@
if (state->isPrefetch()) {
state->setNoFault();
}
- delete state->data;
+ delete [] state->data;
state->deleteReqs();
translationFault(state->getFault());
} else {
diff -r ae58aacfab8f -r 358c00c482f7 src/mem/packet.hh
--- a/src/mem/packet.hh Wed Sep 29 11:31:03 2010 -0700
+++ b/src/mem/packet.hh Thu Sep 30 09:35:19 2010 -0500
@@ -705,7 +705,8 @@
void
setData(uint8_t *p)
{
- std::memcpy(getPtr<uint8_t>(), p, getSize());
+ if (p != getPtr<uint8_t>())
+ std::memcpy(getPtr<uint8_t>(), p, getSize());
}
/**
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev