Changeset 20235

Show
Ignore:
Timestamp:
05/21/07 14:33:00 (1 year ago)
Author:
aronb
Message:

Fix memory leak in header serialization.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • juggler/trunk/modules/gadgeteer/cluster/Packets/Header.cpp

    r20199 r20235  
    3535 
    3636Header::Header() 
    37    : mPacketReader(NULL) 
    38    , mPacketWriter(NULL) 
    3937{;} 
    4038 
    4139Header::Header( const vpr::Uint16 code, const vpr::Uint16 type, 
    4240                const vpr::Uint32 length, const vpr::Uint32 frame ) 
    43    : mPacketReader(NULL) 
    44    , mPacketWriter(NULL) 
    45    , mRIMCode(code) 
     41   : mRIMCode(code) 
    4642   , mPacketType(type) 
    4743   , mPacketLength(length) 
     
    117113      } 
    118114       
    119       mPacketReader = new vpr::BufferObjectReader( &mData ); 
    120115      parseHeader(); 
    121116   } 
     
    124119void Header::serializeHeader() 
    125120 
    126    mPacketWriter = new vpr::BufferObjectWriter(&mData); 
    127    mPacketWriter->getData()->clear(); 
    128    mPacketWriter->setCurPos( 0 ); 
     121   vpr::BufferObjectWriter writer(&mData); 
     122   writer.getData()->clear(); 
     123   writer.setCurPos( 0 ); 
    129124 
    130125   // -Write all packet header information to the base Header class 
    131126 
    132127       
    133 //   std::cout << "Head Starting at Position: " << mPacketWriter->getCurPos() << std::endl; 
    134    mPacketWriter->writeUint16( mRIMCode ); 
     128//   std::cout << "Head Starting at Position: " << writer.getCurPos() << std::endl; 
     129   writer.writeUint16( mRIMCode ); 
    135130//   std::cout << "Write RIMCode: " << mRIMCode << std::endl; 
    136 //   std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl; 
    137  
    138    mPacketWriter->writeUint16( mPacketType ); 
     131//   std::cout << "Current Position: " << writer.getCurPos() << std::endl; 
     132 
     133   writer.writeUint16( mPacketType ); 
    139134//   std::cout << "Write PacketType: " << mPacketType << std::endl; 
    140 //   std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl; 
    141  
    142    mPacketWriter->writeUint32( mFrame ); 
     135//   std::cout << "Current Position: " << writer.getCurPos() << std::endl; 
     136 
     137   writer.writeUint32( mFrame ); 
    143138//   std::cout << "Write Frame: " << mFrame << std::endl; 
    144 //   std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl; 
    145  
    146    mPacketWriter->writeUint32( mPacketLength ); 
     139//   std::cout << "Current Position: " << writer.getCurPos() << std::endl; 
     140 
     141   writer.writeUint32( mPacketLength ); 
    147142//   std::cout << "Write Packet Length: " << mPacketLength << std::endl; 
    148 //   std::cout << "Current Position: " << mPacketWriter->getCurPos() << std::endl; 
     143//   std::cout << "Current Position: " << writer.getCurPos() << std::endl; 
    149144} 
    150145 
     
    158153   //  -If not exit immediately 
    159154       
    160    //std::cout << "Head Starting at Position: " << mPacketReader->getCurPos() << std::endl; 
     155   vpr::BufferObjectReader reader( &mData ); 
     156   //std::cout << "Head Starting at Position: " << reader.getCurPos() << std::endl; 
    161157    
    162    mRIMCode = mPacketReader->readUint16(); 
     158   mRIMCode = reader.readUint16(); 
    163159//   std::cout << "Read RIMCode: " << mRIMCode << std::endl; 
    164 //   std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl; 
    165    mPacketType = mPacketReader->readUint16(); 
     160//   std::cout << "Current Position: " << reader.getCurPos() << std::endl; 
     161   mPacketType = reader.readUint16(); 
    166162//   std::cout << "Read PacketType: " << mPacketType << std::endl; 
    167 //   std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl; 
    168    mFrame = mPacketReader->readUint32(); 
     163//   std::cout << "Current Position: " << reader.getCurPos() << std::endl; 
     164   mFrame = reader.readUint32(); 
    169165//   std::cout << "Read Frame#: " << mFrame << std::endl; 
    170 //   std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl; 
    171    mPacketLength = mPacketReader->readUint32(); 
     166//   std::cout << "Current Position: " << reader.getCurPos() << std::endl; 
     167   mPacketLength = reader.readUint32(); 
    172168//   std::cout << "Read Packet Length: " << mPacketLength << std::endl; 
    173 //   std::cout << "Current Position: " << mPacketReader->getCurPos() << std::endl; 
     169//   std::cout << "Current Position: " << reader.getCurPos() << std::endl; 
    174170 
    175171   if ( RIM_PACKET != mRIMCode ) 
  • juggler/trunk/modules/gadgeteer/cluster/Packets/Header.h

    r20199 r20235  
    8181                           const vpr::Uint32 length, const vpr::Uint32 frame); 
    8282   virtual ~Header() 
    83    { 
    84       if ( NULL != mPacketReader ) 
    85       { 
    86          delete mPacketReader; 
    87          mPacketReader = NULL; 
    88       } 
    89       if ( NULL != mPacketWriter ) 
    90       { 
    91          delete mPacketWriter; 
    92          mPacketWriter = NULL; 
    93       } 
    94    } 
     83   {;} 
    9584 
    9685   /** 
     
    156145   virtual void printData( const int debug_level ); 
    157146protected: 
    158    vpr::BufferObjectReader* mPacketReader; 
    159    vpr::BufferObjectWriter* mPacketWriter; 
    160147   std::vector<vpr::Uint8> mData; 
    161148