From: srit <srit>
Date: Thu, 4 Nov 2010 18:22:44 +0000 (+0000)
Subject: Corrected erroneous free when a real RECTILINEAR field is detected
X-Git-Tag: v1.2.0~301
X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=f9ba8e0c066f58c8d9f2b10db4306f42470fe7a2;p=clitk.git

Corrected erroneous free when a real RECTILINEAR field is detected
---

diff --git a/common/clitkXdrImageIOReader.cxx b/common/clitkXdrImageIOReader.cxx
index bc3a24a..6f70244 100644
--- a/common/clitkXdrImageIOReader.cxx
+++ b/common/clitkXdrImageIOReader.cxx
@@ -683,6 +683,7 @@ int clitk::XdrImageIO::ReadImageInformationWithError()
       }
     }
 
+    float *p = points;
     switch (field) {
     case UNIFORM:
       for (i=0; i<GetNumberOfDimensions(); i++) {
@@ -695,21 +696,19 @@ int clitk::XdrImageIO::ReadImageInformationWithError()
       //Error if fails
       for (i=0; i<GetNumberOfDimensions(); i++) {
         //Compute mean spacing
-        SetSpacing(i,10*(points[GetDimensions(i)-1]-points[0])/(GetDimensions(i)-1));
-        SetOrigin(i,10*points[0]);
+        SetSpacing(i,10*(p[GetDimensions(i)-1]-p[0])/(GetDimensions(i)-1));
+        SetOrigin(i,10*p[0]);
 
         //Test if rectilinear image is actually uniform (tolerance 0.1 mm)
         for (j=0; j<GetDimensions(i)-1; j++) {
-          if (fabs((points[j+1]-points[j])*10-GetSpacing(i))>0.1) {
+          if (fabs((p[j+1]-p[j])*10-GetSpacing(i))>0.1) {
             free(points);
             fclose(fstream);
             return ER_NOT_HANDLED;
           }
         }
-        points += (int)GetDimensions(i);
+        p += (int)GetDimensions(i);
       }
-      for (i=0; i<GetNumberOfDimensions(); i++)
-        points -= GetDimensions(i);
       break;
     case IRREGULAR:
       free(points);