diff --git a/Code/IO/otbImageFileReader.txx b/Code/IO/otbImageFileReader.txx index f8b80ce373f44a99085f4feacef0222f17f8d8a3..7fc06d715d4c3a34e6e3ca8d56b4270ea1735baf 100644 --- a/Code/IO/otbImageFileReader.txx +++ b/Code/IO/otbImageFileReader.txx @@ -380,6 +380,7 @@ ImageFileReader<TOutputImage> if (projection) { hasMetaData = projection->saveState(geom_kwl); + delete projection; } } // Free memory diff --git a/Utilities/otbossimplugins/ossim/EnvisatAsar/EnvisatAsarRecord.h b/Utilities/otbossimplugins/ossim/EnvisatAsar/EnvisatAsarRecord.h index e653bb85894f43b35557e94c403993dc54c43f9e..5edc646999fcffdf5868bf4cd790b2a967c41c11 100644 --- a/Utilities/otbossimplugins/ossim/EnvisatAsar/EnvisatAsarRecord.h +++ b/Utilities/otbossimplugins/ossim/EnvisatAsar/EnvisatAsarRecord.h @@ -97,6 +97,9 @@ protected: res[nb_octets-1-i] = buffer[i]; } memcpy(&value,res,nb_octets); + + free(buffer); + free(res); } } diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Data/Data.cpp b/Utilities/otbossimplugins/ossim/RadarSat/Data/Data.cpp index d942d483074bccacb1d196f5a14f23ede59eb586..86aabd5fbcdfb09c734044080a20cd1286e46cd1 100644 --- a/Utilities/otbossimplugins/ossim/RadarSat/Data/Data.cpp +++ b/Utilities/otbossimplugins/ossim/RadarSat/Data/Data.cpp @@ -68,7 +68,7 @@ std::istream& operator>>(std::istream& is, Data& data) else { if (header.get_rec_seq() == 1) { // ImageOptionsFileDescriptor - RadarSatRecord* record = factory.Instanciate(header.get_rec_seq()); + RadarSatRecord* record = factory.Instanciate(header.get_rec_seq()); if (record != NULL) { record->Read(is); @@ -80,12 +80,13 @@ std::istream& operator>>(std::istream& is, Data& data) { char* buff = new char[header.get_length()-12]; is.read(buff, header.get_length()-12); - delete buff; + delete[] buff; } } else if ((header.get_rec_seq() == 2)) { // First line ProcessedDataRecord - RadarSatRecord* record = factory.Instanciate(2); + lineLength = header.get_length() ; + RadarSatRecord* record = factory.Instanciate(2); if (record != NULL) { record->Read(is); @@ -93,28 +94,31 @@ std::istream& operator>>(std::istream& is, Data& data) char* buff = new char[header.get_length()-192]; is.read(buff, header.get_length()-192); // Reads the rest of the line + delete[] buff; } else { char* buff = new char[header.get_length()-12]; is.read(buff, header.get_length()-12); - delete buff; + delete[] buff; } } else if ((header.get_rec_seq() == (1+nbLin))) { // Last line ProcessedDataRecord - RadarSatRecord* record = factory.Instanciate(2); + RadarSatRecord* record = factory.Instanciate(2); if (record != NULL) { record->Read(is); data._records[Data::LastProcessedDataRecordID] = record; + char* buff = new char[header.get_length()-192]; is.read(buff, header.get_length()-192); // Reads the rest of the line + delete[] buff; } else { char* buff = new char[header.get_length()-12]; is.read(buff, header.get_length()-12); - delete buff; + delete[] buff; } } else diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Data/DataFactory.cpp b/Utilities/otbossimplugins/ossim/RadarSat/Data/DataFactory.cpp index 94de79938a725df886be7e2742b6226e42b51c71..9889547dfdb5512ab319fe60bb7e53632901bfec 100644 --- a/Utilities/otbossimplugins/ossim/RadarSat/Data/DataFactory.cpp +++ b/Utilities/otbossimplugins/ossim/RadarSat/Data/DataFactory.cpp @@ -25,6 +25,17 @@ DataFactory::DataFactory() DataFactory::~DataFactory() { + std::map<int, RadarSatRecord*>::iterator i = _availableRecords.begin(); + while (i != _availableRecords.end()) + { + if ( (*i).second ) + { + delete (*i).second; + (*i).second = 0; + } + ++i; + } + _availableRecords.clear(); } } diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Data/ProcessedDataRecord.h b/Utilities/otbossimplugins/ossim/RadarSat/Data/ProcessedDataRecord.h index c1fbb8492cb82687ba504cd419b9cd3c33666102..0ac120eeff854c447199e4241a210eb6fc48480e 100644 --- a/Utilities/otbossimplugins/ossim/RadarSat/Data/ProcessedDataRecord.h +++ b/Utilities/otbossimplugins/ossim/RadarSat/Data/ProcessedDataRecord.h @@ -412,6 +412,9 @@ private: res[nb_octets-1-i] = buffer[i]; } memcpy(&value,res,nb_octets); + + free(buffer); + free(res); } } }; diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Leader/Leader.cpp b/Utilities/otbossimplugins/ossim/RadarSat/Leader/Leader.cpp index 309c0c15bcadf04bd82488b0a40661b92ce5aace..9313d5e867d190d7983a93f9f159c2591408a6f4 100644 --- a/Utilities/otbossimplugins/ossim/RadarSat/Leader/Leader.cpp +++ b/Utilities/otbossimplugins/ossim/RadarSat/Leader/Leader.cpp @@ -86,7 +86,7 @@ std::istream& operator>>(std::istream& is, Leader& data) { char* buff = new char[header.get_length()-12]; is.read(buff, header.get_length()-12); - delete buff; + delete[] buff; } } } diff --git a/Utilities/otbossimplugins/ossim/RadarSat/Leader/LeaderFactory.cpp b/Utilities/otbossimplugins/ossim/RadarSat/Leader/LeaderFactory.cpp index c2cbf1888fb16efba99c81a5e6ee79f6dc6d3600..3b5bd1cded3c2b8dd9f4071d25f53d354b7deba9 100644 --- a/Utilities/otbossimplugins/ossim/RadarSat/Leader/LeaderFactory.cpp +++ b/Utilities/otbossimplugins/ossim/RadarSat/Leader/LeaderFactory.cpp @@ -41,5 +41,18 @@ LeaderFactory::LeaderFactory() LeaderFactory::~LeaderFactory() { + std::map<int, RadarSatRecord*>::iterator i = _availableRecords.begin(); + + while (i != _availableRecords.end()) + { + if ( (*i).second ) + { + delete (*i).second; + (*i).second = 0; + } + ++i; + } + _availableRecords.clear(); + } } diff --git a/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp b/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp index 19b24dd7d03757cc6271b72f9a45015f141ae8e4..9287177efa8b3f0972cf70c2d0906bcc08cde2b1 100644 --- a/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp +++ b/Utilities/otbossimplugins/ossim/ossimRadarSat2Model.cpp @@ -502,7 +502,8 @@ bool ossimRadarSat2Model::InitRefPoint(const ossimKeywordlist &kwl, date->set_second((int) floor(time)) ; date->set_decimal(time - floor(time)) ; } - + delete date;//FIXME to confirm + if(_platformPosition != 0) { Ephemeris * ephemeris = _platformPosition->Interpolate((JSDDateTime)*date); diff --git a/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp b/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp index cd57925598ddaafb68153e1aa9b690dc2b240cde..fb09615bceb959d2d55ed3b6a2a0545e3f19ea9e 100644 --- a/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp +++ b/Utilities/otbossimplugins/ossim/ossimRadarSatModel.cpp @@ -53,6 +53,16 @@ ossimRadarSatModel::ossimRadarSatModel(): ossimRadarSatModel::~ossimRadarSatModel() { + if (_data != 0) + { + delete _data; + } + + if (_leader != 0) + { + delete _leader; + } + } ossimObject* ossimRadarSatModel::dup() const @@ -623,9 +633,12 @@ bool ossimRadarSatModel::InitPlatformPosition(const ossimKeywordlist &kwl, const ephemeris[i] = eph; delete tmpEphemeris; + delete greenwich_mha; } + delete greenwich_mha_ref2000; + /* * Antenna position interpolator creation */