]> Creatis software - gdcm.git/commitdiff
gdcmHeader::gdcmHeader(const char *InFilename, bool exception_on_error)
authorjpr <jpr>
Wed, 15 Oct 2003 15:01:15 +0000 (15:01 +0000)
committerjpr <jpr>
Wed, 15 Oct 2003 15:01:15 +0000 (15:01 +0000)
no longer seg faults when file is not found

DEVELOPPER
src/gdcmFile.cxx
src/gdcmHeader.cxx

index 3465ece92f6e3d0c59ca44f1af40dc5edf684164..dfcfe0334d8d0b337cdb584374884981fcacb170 100644 (file)
@@ -30,7 +30,7 @@ The following comments are intended for core gdcm developpers.
     the final user by gdcmPython/__init__.py.
   - the second python wrappers uses the vtk (http://public.kitware.com/VTK/)
     native wrappers i.e. the binary vtkWrapPython. But it should be noticed
-    that the purpous is here a bit different than the one of the Swig
+    that the purpose is here a bit different than the one of the Swig
     generated Python wrappers. When using vtkWrapPython the goal is to
     wrap a single vtk class namely vtkGdcmReader as defined in files
     vtk/vtkGdcmReader.h and vtk/vtkGdcmReader.cxx (and of course those
index 6689c01f437ef8e70898c5f717af19ecc64b898c..7274df46ab47f06e7da21d26b168fca987aa7f2f 100644 (file)
 gdcmFile::gdcmFile(std::string & filename) 
        :gdcmHeader(filename.c_str())   
 {
-   SetPixelDataSizeFromHeader();
+      if (IsReadable())
+         SetPixelDataSizeFromHeader();
 }
 
 gdcmFile::gdcmFile(const char * filename) 
        :gdcmHeader(filename)   
 {
-   SetPixelDataSizeFromHeader();
+   if (IsReadable())
+      SetPixelDataSizeFromHeader();
 }
 
 /**
index 43f6f549002e6f80eb7a1a3e87b438c35c1783f8..13da756dc1bde8eecaabd7bc93872e5051b7e24e 100644 (file)
@@ -1,4 +1,4 @@
-// $Header: /cvs/public/gdcm/src/Attic/gdcmHeader.cxx,v 1.100 2003/10/14 11:53:16 jpr Exp $
+// $Header: /cvs/public/gdcm/src/Attic/gdcmHeader.cxx,v 1.101 2003/10/15 15:01:16 jpr Exp $
 
 #include "gdcmHeader.h"
 
@@ -44,7 +44,6 @@ gdcmHeader::gdcmHeader(const char *InFilename, bool exception_on_error) {
    Initialise();
    if ( !OpenFile(exception_on_error))
       return;
-
    ParseHeader();
    LoadElements();
    CloseFile();
@@ -73,10 +72,11 @@ gdcmHeader::gdcmHeader(bool exception_on_error) {
     if(!fp)
       throw gdcmFileError("gdcmHeader::gdcmHeader(const char *, bool)");
   }
-//  char *testEntete = new char[204];
-  guint16 zero;
-  fread(&zero,  (size_t)2, (size_t)1, fp);
+
   if ( fp ) {
+     guint16 zero;
+     fread(&zero,  (size_t)2, (size_t)1, fp);
+
     //ACR -- or DICOM with no Preamble
     if( zero == 0x0008 || zero == 0x0800 || zero == 0x0002 || zero == 0x0200)
        return true;
@@ -84,7 +84,7 @@ gdcmHeader::gdcmHeader(bool exception_on_error) {
     fseek(fp, 126L, SEEK_CUR);
     char dicm[4];
     fread(dicm,  (size_t)4, (size_t)1, fp);
-    if( strncmp(dicm, "DICM", 4) == 0 )
+    if( memcmp(dicm, "DICM", 4) == 0 )
        return true;
     fclose(fp);
     dbg.Verbose(0, "gdcmHeader::gdcmHeader not DICOM/ACR", filename.c_str());