]> Creatis software - gdcm.git/commitdiff
ENH: Handle the case where the element is empty, previous GetValueCount was reported...
authormalaterre <malaterre>
Fri, 21 Oct 2005 15:41:56 +0000 (15:41 +0000)
committermalaterre <malaterre>
Fri, 21 Oct 2005 15:41:56 +0000 (15:41 +0000)
src/gdcmDataEntry.cxx

index 6c59d8e90375b877be74e3ce9c660d08bcd3ff76..b9513cfae91527b1f572a3a71ae9398c88782526 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDataEntry.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/10/21 15:16:52 $
-  Version:   $Revision: 1.7 $
+  Date:      $Date: 2005/10/21 15:41:56 $
+  Version:   $Revision: 1.8 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -234,7 +234,11 @@ bool DataEntry::IsValueCountValid() const
     std::istringstream os;
     os.str( strVM );
     os >> vm;
-    valid = vm == GetValueCount();
+    uint32_t vc = GetValueCount();
+    // Two cases:
+    // vm respect the one from the dict
+    // vm is 0 (we need to check is this element is allowed to be empty) FIXME
+    valid = vc == vm || vc == 0;
     }
   return valid;
 }
@@ -252,6 +256,8 @@ uint32_t DataEntry::GetValueCount(void) const
       return GetLength()/sizeof(double);
    else if( Global::GetVR()->IsVROfStringRepresentable(vr) )
    {
+      // Some element in DICOM are allowed to be empty
+      if( !GetLength() ) return 0;
       // Don't use std::string to accelerate processing
       uint32_t count = 1;
       for(uint32_t i=0;i<GetLength();i++)