Orion Poplawski f133519
From 965eb0af7a532740637c96ac31f7fc5d022d1953 Mon Sep 17 00:00:00 2001
Orion Poplawski f133519
From: Gilles Duvert <gilles-duvert@users.sourceforge.net>
Orion Poplawski f133519
Date: Tue, 24 Jan 2017 10:05:41 +0000
Orion Poplawski f133519
Subject: [PATCH] reverted to previous version since correction of bug#709 was
Orion Poplawski f133519
 making a mess with array dimensions.
Orion Poplawski f133519
Orion Poplawski f133519
---
Orion Poplawski f133519
 src/accessdesc.hpp |  3 ++-
Orion Poplawski f133519
 src/dimension.hpp  | 16 +++++++++-------
Orion Poplawski f133519
 2 files changed, 11 insertions(+), 8 deletions(-)
Orion Poplawski f133519
Orion Poplawski f133519
diff --git a/src/accessdesc.hpp b/src/accessdesc.hpp
Orion Poplawski f133519
index 0309d11..b4d78a9 100644
Orion Poplawski f133519
--- a/src/accessdesc.hpp
Orion Poplawski f133519
+++ b/src/accessdesc.hpp
Orion Poplawski f133519
@@ -317,7 +317,8 @@ class DotAccessDescT
Orion Poplawski f133519
    // 	dim >> topDim;
Orion Poplawski f133519
    dim >> ix[d]->GetDim();
Orion Poplawski f133519
   }
Orion Poplawski f133519
-  dim.Purge();
Orion Poplawski f133519
+// Was added to solve bug 709 but may have side effects.
Orion Poplawski f133519
+//  dim.Purge();
Orion Poplawski f133519
  }
Orion Poplawski f133519
   
Orion Poplawski f133519
 private:
Orion Poplawski f133519
diff --git a/src/dimension.hpp b/src/dimension.hpp
Orion Poplawski f133519
index 6469648..1345ff5 100644
Orion Poplawski f133519
--- a/src/dimension.hpp
Orion Poplawski f133519
+++ b/src/dimension.hpp
Orion Poplawski f133519
@@ -378,13 +378,15 @@ class dimension
Orion Poplawski f133519
   // throw away unused ranks (ie. ranks == 1)
Orion Poplawski f133519
   void Purge()
Orion Poplawski f133519
   {
Orion Poplawski f133519
-   //old version: produce bug #709
Orion Poplawski f133519
-//    for(; rank>1 && dim[rank-1] <= 1; --rank);
Orion Poplawski f133519
-   int m=rank-1;
Orion Poplawski f133519
-   for (; m>0; --m) if (dim[m]<=1) {
Orion Poplawski f133519
-    for (int j=m; j
Orion Poplawski f133519
-    rank--;
Orion Poplawski f133519
-   }
Orion Poplawski f133519
+   //The following line produces bug #709
Orion Poplawski f133519
+    for(; rank>1 && dim[rank-1] <= 1; --rank);
Orion Poplawski f133519
+// However those following lines are too strict: test=fltarr(1, 1, 114) & help,test 
Orion Poplawski f133519
+// gives: TEST FLOAT = Array[1, 114] instead of good answer TEST FLOAT = Array[1, 1, 114]
Orion Poplawski f133519
+//   int m=rank-1;
Orion Poplawski f133519
+//   for (; m>0; --m) if (dim[m]<=1) {
Orion Poplawski f133519
+//    for (int j=m; j
Orion Poplawski f133519
+//    rank--;
Orion Poplawski f133519
+//   }
Orion Poplawski f133519
   }
Orion Poplawski f133519
 
Orion Poplawski f133519
   // set the rank to r (pads 1s) if it is smaller than r