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

Reply via email to