Ticket #444: pespacket-leak.diff
File pespacket-leak.diff, 1.7 KB (added by , 18 years ago) |
---|
-
libs/libmythtv/mpeg/pespacket.h
old new 48 48 49 49 protected: 50 50 // does not create it's own data 51 PESPacket(const TSPacket* tspacket, bool )52 : _pesdata(0), _fullbuffer(0), _allocSize(0) 51 PESPacket(const TSPacket* tspacket, bool clone) 52 : _pesdata(0), _fullbuffer(0), _allocSize(0), _isClone(clone) 53 53 { 54 54 InitPESPacket(const_cast<TSPacket&>(*tspacket)); 55 55 _fullbuffer = const_cast<unsigned char*>(tspacket->data()); … … 61 61 // may be modified 62 62 PESPacket(const PESPacket& pkt) 63 63 { // clone 64 _isClone = true; 64 65 _allocSize = pkt._allocSize; 65 66 _fullbuffer = new unsigned char[_allocSize+188]; 66 67 memcpy(_fullbuffer, pkt._fullbuffer, _allocSize+188); … … 75 76 { // clone 76 77 InitPESPacket(const_cast<TSPacket&>(tspacket)); 77 78 79 _isClone = true; 78 80 int len = (4*1024) - 188; 79 81 int offset = _pesdata - tspacket.data(); 80 82 _allocSize=((len+offset)/188)*188+188; … … 99 101 static PESPacket View(TSPacket& tspacket) 100 102 { return PESPacket(&tspacket, false); } 101 103 102 bool IsClone() const { return bool(_allocSize); }104 bool IsClone() const { return _isClone; } 103 105 104 106 // return true if complete or broken 105 107 bool AddTSPacket(const TSPacket* tspacket); … … 178 180 unsigned int _cnt; 179 181 unsigned int _allocSize; 180 182 bool _badPacket; 183 bool _isClone; 181 184 }; 182 185 183 186 #endif // _PES_PACKET_H_