From: Steve Reinhardt Date: Sat, 14 Jul 2007 20:14:53 +0000 (-0700) Subject: Fix bug in copying packet with static data pointer. X-Git-Tag: m5_2.0_beta4~195^2~50^2~8 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3b4ff759398371ac14b7d694de1c87af245f7d42;p=gem5.git Fix bug in copying packet with static data pointer. --HG-- extra : convert_revision : 2fcf99f050d73e007433c1db2475f2893c5961a0 --- diff --git a/src/mem/packet.hh b/src/mem/packet.hh index 16bc6f458..c90842dee 100644 --- a/src/mem/packet.hh +++ b/src/mem/packet.hh @@ -368,14 +368,15 @@ class Packet : public FastAlloc } /** Alternate constructor for copying a packet. Copy all fields - * *except* set data allocation as static... even if the original - * packet's data was dynamic, we don't want to free it when the - * new packet is deallocated. Note that if original packet used - * dynamic data, user must guarantee that the new packet's - * lifetime is less than that of the original packet. */ + * *except* if the original packet's data was dynamic, don't copy + * that, as we can't guarantee that the new packet's lifetime is + * less than that of the original packet. In this case the new + * packet should allocate its own data. */ Packet(Packet *origPkt) : cmd(origPkt->cmd), req(origPkt->req), - data(NULL), staticData(false), dynamicData(false), arrayData(false), + data(origPkt->staticData ? origPkt->data : NULL), + staticData(origPkt->staticData), + dynamicData(false), arrayData(false), addr(origPkt->addr), size(origPkt->size), src(origPkt->src), dest(origPkt->dest), addrSizeValid(origPkt->addrSizeValid),