]> Creatis software - gdcm.git/blobdiff - src/gdcmDocEntrySet.cxx
* Remove memory leaks
[gdcm.git] / src / gdcmDocEntrySet.cxx
index b3cfe401bd19af2ab6a7e46bc9f8a6e73a96e90f..500dadf5c484c7fc24abfdc69f9041e04323adf6 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDocEntrySet.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/10/21 10:48:16 $
-  Version:   $Revision: 1.64 $
+  Date:      $Date: 2005/10/25 09:22:15 $
+  Version:   $Revision: 1.66 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -286,10 +286,10 @@ DataEntry *DocEntrySet::InsertEntryString(std::string const &value,
       if ( !AddEntry(dataEntry) )
       {
          gdcmWarningMacro("AddEntry failed although this is a creation.");
-
-         delete dataEntry;
+         dataEntry->Delete();
          return NULL;
       }
+      dataEntry->Delete();
    }
 
    // Set the dataEntry value
@@ -345,10 +345,10 @@ DataEntry *DocEntrySet::InsertEntryBinArea(uint8_t *binArea, int lgth,
       if ( !AddEntry(dataEntry) )
       {
          gdcmWarningMacro( "AddEntry failed although this is a creation.");
-
-         delete dataEntry;
+         dataEntry->Delete();
          return NULL;
       }
+      dataEntry->Delete();
    }
 
    // Set the dataEntry value
@@ -414,10 +414,10 @@ SeqEntry *DocEntrySet::InsertSeqEntry(uint16_t group, uint16_t elem)
       if ( !AddEntry(seqEntry) )
       {
          gdcmWarningMacro( "AddEntry failed although this is a creation.");
-
-         delete seqEntry;
+         seqEntry->Delete();
          return NULL;
       }
+      seqEntry->Delete();
    }
 
    // TODO : Find a trick to insert a SequenceDelimitationItem 
@@ -443,13 +443,14 @@ bool DocEntrySet::CheckIfEntryExist(uint16_t group, uint16_t elem )
  * @param   group Group number   of the new Entry
  * @param   elem  Element number of the new Entry
  * @param   vr    V(alue) R(epresentation) of the new Entry 
+ * \remarks The user of this method must destroy the DataEntry when unused
  */
 DataEntry *DocEntrySet::NewDataEntry(uint16_t group,uint16_t elem,
                                      VRKey const &vr) 
 {
    DictEntry *dictEntry = GetDictEntry(group, elem, vr);
 
-   DataEntry *newEntry = new DataEntry(dictEntry);
+   DataEntry *newEntry = DataEntry::New(dictEntry);
    dictEntry->Unregister(); // GetDictEntry register it
    if (!newEntry) 
    {
@@ -465,12 +466,13 @@ DataEntry *DocEntrySet::NewDataEntry(uint16_t group,uint16_t elem,
  *          a default one when absent.
  * @param   group Group   number of the new Entry
  * @param   elem  Element number of the new Entry
+ * \remarks The user of this method must destroy the SeqEntry when unused
  */
 SeqEntry* DocEntrySet::NewSeqEntry(uint16_t group, uint16_t elem) 
 {
    DictEntry *dictEntry = GetDictEntry(group, elem, "SQ");
 
-   SeqEntry *newEntry = new SeqEntry( dictEntry );
+   SeqEntry *newEntry = SeqEntry::New( dictEntry );
    dictEntry->Unregister(); // GetDictEntry register it
    if (!newEntry)
    {