X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=ChangeLog;h=7d0707239e74fc99e9786a147bed9253657b0c8b;hb=57e3ee08a94dc1cd122a0b9c01f091e1b6913152;hp=37ca0b884335ecbcd0ce874e1e787c88cc88fefd;hpb=19c54f9be7d29dcdd8fbb56b6308e55ed230441d;p=gdcm.git diff --git a/ChangeLog b/ChangeLog index 37ca0b88..7d070723 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,176 @@ +2004-06-21 Eric Boix + * Test/TestWriteSimple.cxx: fix to gdcmHeader-gdcmHeaderHelper revamping. + The default constructor invoked by the line + gdcmHeader *f1 = new gdcmHeader( header ); + was gdcmHeader::gdcmHeader(bool) instead of the expected + gdcmHeader::gdcmHeader(std::string const &, bool = false, bool, bool). + Hence the parsing wasn't executed... See also below. + * src/gdcmHeader.h: the declaration of gdcmHeader::gdcmHeader(bool) + as explicit constructor didn't do the trick to fix the above problem. + Could anyone explain why ? + * src/gdcmBinEntry.cxx, gdcmValEntry.cxx: gdcmBinEntry::Print() now + properly calls gdcmValEntry::Print() (that was weed out from + code related to gdcmBinEntry). + +2004-06-20 Eric Boix + * In order to fix memory leaks: + - Test/TestWriteSimple.cxx: added cleaning of free store through + some delete calls. + - src/gdcmBinEntry.cxx: fix to avoid SegFault. + - src/gdcmDicomDir.[cxx|h]: fixed initialisation in constructor + gdcmDicomDir::gdcmDicomDir(bool) [either the constructor itself + (through the call to ::AddDicomDirMeta()) or the destructor + would crash when deleting uninitialized ::metaElems]. + - src/gdcmDictEntry.cxx: annotation of ununderstood memory leak. + - src/gdcmDocument.cxx: + -- ::~gdcmDocument() destructor now cleans up all dictionary entries + from dynamic stores. + -- ::ParseDES() misplaced deletion of temporary NewDocEntry + was causing memory leaks. + - src/gdcmSQItem.cxx: + -- ::~gdcmSQItem() dummy code cleaned (learned that deletion is + cleanly handled with polymophism: sorry but my milage is low). + -- ::SetEntryByNumber(string, guint16, guint16) now cleanly allocates + a gdcmValENtry, and makes no assumption on type (gdcmDocEntry, + gdcmSeqEntry vs gdcmValEntry) of existing entry (when present). + This avoids SegFaulting. + - src/gdcmSQItem.h: coding style. + * Conclusion: + - Test/TestWriteSimple still severely sucks. The output image content + (when $(GDCMDATA_HOME)/012345.002.050.dcm in input) is brain + damaged when displayed with vtkgdcmViewer. + - on memory leaks: TestWriteSimple leaks really less (see entry + of 2004-06-18 in Changelog file for the call to valgrind). + - on segfaults: ctest now passes all the tests but one (no more + segfaults). + * Erroneous leading white fix: + - src/gdcmDict.cxx: getline(from,xxx) doesn't remove the leading + white[s] (as opposed to from >> xxx, that removes it [them]. + - src/gdcmTS.cxx: ditto. + - gdcmPython/testSuite.py: dirty related kludge removed. + * src/*: remaining references to gdcmParser removed. + * src/*[cxx|h]: added copy[way]left header. + +2004-06-18 Eric Boix + * In order to fix writing of dicom files: + - Test/TestWriteSimple.cxx: a simpler example of writing. + - Test/CMakeLists.txt changed accordingly. + - src/gdcmDocument.cxx: + -- The destructor now recursilvely removes potential sequences. + -- Bug fix in ::IsJPEG2000() + -- ::ReplaceOrCreateByNumber(std::string, guint16, guint16) + now handles promotion of gdcmDocEntry to gdcmValEntry in a cleaner + manner. + -- ::GetValEntryByNumber(guint16, guint16) now defined (as opposed + to only declared) and build on top of + ::GetDocEntryByNumber(guint16, guint16). + -- ::SetEntryByNumber() now uses GetValEntryByNumber(group, element) + - src/gdcmElementSet.[h|cxx]: added ::RemoveEntry(gdcmDocEntry *) + for usage in destructor and treatement of promotion in + ::ReplaceOrCreateByNumber(). + - src/gdcmSQItem.cxx: destructor should better handle his job. + Test/TestWriteSimple now runs (or at least it DOES something). + * We can now start hutting memory links. A good starting point is: + valgrind -q --skin=memcheck --leak-check=yes --leak-resolution=high + --num-callers=100 --show-reachable=yes gdcmTests TestWriteSimple + $(GDCMDATA_HOME)/012345.002.050.dcm foo.dcm + +2004-06-18 Eric Boix + * Valgrind note: after Mathieu Malaterre teached me how to read + the valgrind FAQ ;-] (see http://valgrind.kde.org/faq.html), I + learned that: + Using gcc, you can force the STL to use malloc and to free memory as + soon as possible by globally disabling memory caching. + With 3.2.2 and later, you should export the environment variable + GLIBCPP_FORCE_NEW before running your program. + By setting GLIBCPP_FORCE_NEW, STL related memory leak messages of gdcm + simply vanish (it is still not clear to me, whether this means that + STL std::string leaks or if valgrind believes it leaks...). + * Fixing of SegFault of Test/makeDicomDir (as shown by ctest or by + running bin/gdcmTests makeDicomDir): + - src/gdcmDicomDir.cxx: dynamic casting used + clean up. + - Test/makeDicomDir.cxx now properly traps empty lists and returns + with 1. + NOW, makeDicomDir cleanly fails (in ctest terminology) instead of + SegFaulting (I drowned in DicomDir related code when trying to + understand why the list is empty...). + * src/gdcmDocument.h: first BSD license header try. + * Doc/License.txt added. + +2004-06-15 Eric Boix + * src/gdcmDocument.[h|cxx]: + - Clean up of the Transfer related predicates. They are now all based + on new method isGivenTransferSyntax, that (should) handle properly + the padding problem. + - general clean up, simplification, and coding style. + - Specific clean up of Parse7FE0() (umproperly named actually). + * gdcmPython/testSuite.py: an odd temporary kludge introduced. + +2004-06-14 Jean-Pierre Roux + * gdcmSeqEntry.cxx + - fix the display of Sequence Delimitor (SQDepthLevel pb) + - fix the display of SQItem ordinal number + - add the GetSQItemByOrdinalNumber method + - remove some useless never written private methods + +2004-06-14 Jean-Pierre Roux + * gdcmBinEntry.cxx + - adding a constructor taking a gdcmDocEntry as an input param + - ReplaceOrCreateByNumber now returns : + a gdcmBinEntry * if a Binary (void *) value is passed as a param + a gdcmValEntry * if a string value is passed as a param + * dcmDocument.cxx + - SetEntryByNumber now allows setting gdcmValEntry or gdcmBinEntry, + according to the param type (no longer sets a gdcmDocEntry) + - GetValEntryByNumber, GetBinEntryByNumber added + - NewValEntryByNumber and NewBinEntryByNumber added + * gdcmFile.cxx + - Pixel Data are now linked to the (7fe0,0010) elements, after reading + * gdcmSQItem.h + - GetSQItemNumber and SetSQItemNumber added, to provide + a (relative) Item identier inside a given Sequence + \warning : some pb remaining around this number + will be solved asap + - AddEntry now takes the Item Number as a param + * gdcmValEntry.cxx + - adding a constructor taking a gdcmDocEntry as an input param + +2004-06-14 Eric Boix + * Memory leak hunt with the following command: + valgrind --leak-check=yes --leak-resolution=high --num-callers=40 + --show-reachable=yes gdcmTests PrintDocument + It looks like many (all?) leaks are due to the STL (or a bad usage + of the STL. The lines producing the leaks now have a comment with + a "MEMORY LEAK" tag: you can retrieve them with + grep "MEMORY LEAK" src/* + Here are two typical examples which I can't help fixing: + ----- + #include + int main() { + std::string name; + char * test = "babo"; + name = test; //// <--- valgrind detects 960 bytes lost in + //// call to std::string::operator=(char const*) + name.clear(); //// Doesn't help ! + return 0; + } + ----- + #include + #include + int main() { + std::string line; + std::cout << "Type a bunch of characters followed by RETURN: "; + getline(std::cin, line); //// <--- valgrind dectects a loss + //// of 1320 bytes in call to + /// std::basic_istream<>& std::getline<> + return 0; + } + ----- + + 2004-06-10 Eric Boix * src/gdcmHeader.[cxx|h]: - - Predicates on the Transfer syntax (of the form Is[JPEF|RLE]*) + - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*) and related, moved away to gdcmDocument. - Accessors (on the form [Get|Set]Entry*) set up to expose publicly the corresponding protected accessors of inherited class @@ -13,7 +183,7 @@ * src/gdcmDocument.h: - gdcmFile is now a friend class (in order to take into account the changes to gdcmHeader.h). - - Predicates on the Transfer syntax (of the form Is[JPEF|RLE]*) added + - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*) added (see changes to gdcmHeader.h). - Accessors (reading on the form GetEntry*) are now public. - Clean up of undefined or unused methods. @@ -128,12 +298,12 @@ 2. Tests as mentionned smarter 3. Some clean up 4. Add a new method in gdcmDict that return the PubDict by name - this is interesting for 3rd party lib like ITK, - where we could set the institution name / patient name... + this is interesting for 3rd party lib like ITK, + where we could set the institution name / patient name... * ENH: 1. Now the test suite is working for real 2. All binaries are now output in the gdcm-bin directory - (this was not true before) + (this was not true before) 2004-04-28 Jean-Pierre Roux * ENH add the provisional gdcmHeader::SQDepthLevel to allow