From 670d3f481aca03bf7eb30586080decaa76517d52 Mon Sep 17 00:00:00 2001 From: jpr Date: Mon, 3 Oct 2005 16:08:07 +0000 Subject: [PATCH] Add some verbosity, to help tracking the trouble, when bugged header image... --- src/gdcmDocument.cxx | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/gdcmDocument.cxx b/src/gdcmDocument.cxx index 1af57e73..093dd0a3 100644 --- a/src/gdcmDocument.cxx +++ b/src/gdcmDocument.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocument.cxx,v $ Language: C++ - Date: $Date: 2005/09/22 14:41:24 $ - Version: $Revision: 1.284 $ + Date: $Date: 2005/10/03 16:08:07 $ + Version: $Revision: 1.285 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -966,7 +966,9 @@ void Document::ParseDES(DocEntrySet *set, long offset, bool used; // will be set to false when something wrong happens to an Entry. // (Entry will then be deleted) bool delim_mode_intern = delim_mode; - bool first = true; + bool first = true; + gdcmWarningMacro( "Enter in ParseDES, delim-mode " << delim_mode + << " at offset " << std::hex << offset ); while (true) { if ( !delim_mode && ((long)(Fp->tellg())-offset) >= l_max) @@ -1200,9 +1202,17 @@ void Document::ParseDES(DocEntrySet *set, long offset, if ( l != 0 ) { // Don't try to parse zero-length sequences + + gdcmWarningMacro( "Entry in ParseSQ, delim " << delim_mode_intern + << " at offset " << std::hex + << newDocEntry->GetOffset() ); + ParseSQ( newSeqEntry, newDocEntry->GetOffset(), l, delim_mode_intern); + + gdcmWarningMacro( "Exit from ParseSQ, delim " << delim_mode_intern); + } if ( !set->AddEntry( newSeqEntry ) ) { @@ -1227,6 +1237,7 @@ void Document::ParseDES(DocEntrySet *set, long offset, } first = false; } // end While + gdcmWarningMacro( "Exit from ParseDES, delim-mode " << delim_mode ); } /** @@ -2360,6 +2371,22 @@ void Document::HandleBrokenEndian(uint16_t &group, uint16_t &elem) reversedEndian--; SwitchByteSwapCode(); } + else if (group == 0xfeff && elem == 0xdde0) + { + // reversed Sequence Terminator found + // probabely a bug in the header ! + // Do what you want, it breaks ! + //reversedEndian--; + //SwitchByteSwapCode(); + gdcmWarningMacro( "Should never get here! reversed Sequence Terminator!" ); + // fix the tag + group = 0xfffe; + elem = 0xe0dd; + } + else if (group == 0xfffe && elem == 0xe0dd) + { + gdcmWarningMacro( "Straight Sequence Terminator." ); + } } /** -- 2.45.1