Adding some checks on the bounds of values passed into some functions.
authorIsaac Dooley <idooley2@illinois.edu>
Tue, 9 Jun 2009 22:04:00 +0000 (22:04 +0000)
committerIsaac Dooley <idooley2@illinois.edu>
Tue, 9 Jun 2009 22:04:00 +0000 (22:04 +0000)
src/ck-cp/arrayRedistributor.C
src/ck-cp/arrayRedistributor.h

index 3813f0359eec2db1c536e87ee374ae568214455c..920eb6f6bf2e34e9b56397610cf30dee02c1f7a5 100644 (file)
@@ -66,15 +66,21 @@ int redistributor2D::right_neighbor(){
 } 
   
   
-/// the width of the non-ghost part of the local partition 
+/// the width (X dimension) of the non-ghost part of the local partition 
 int redistributor2D::mywidth(){ 
-  return right_data_idx() - left_data_idx() + 1; 
+  if(thisElemActive)
+    return right_data_idx() - left_data_idx() + 1; 
+  else
+    return 0;
 } 
    
    
-/// the height of the non-ghost part of the local partition 
+/// the height (Y dimension) of the non-ghost part of the local partition 
 int redistributor2D::myheight(){ 
-  return bottom_data_idx() - top_data_idx() + 1; 
+  if(thisElemActive)
+    return bottom_data_idx() - top_data_idx() + 1; 
+  else
+    return 0;
 } 
 
 
index 86d9e8e3faf3cb46a7251a05e70202a765868bcd..bd6dbb5ab432a352eadbe69de8a0f7fe6f33c282 100644 (file)
@@ -260,8 +260,10 @@ class redistributor2D: public CBase_redistributor2D {
 
 
   
-  // Convert a local column,row id (0 to mywidth-1, 0 to data_width-1) to the index in the padded array
+  // Convert a local column,row id (0 to mywidth()-1, 0 to myheight()-1) to the index in the padded array
   int local_to_padded(int x, int y){
+    CkAssert(thisElemActive);
+    CkAssert(x < (mywidth()+data_x_ghost) && x >= (0-data_x_ghost) && y < (myheight()+data_y_ghost) && y >= (0-data_y_ghost) );
     return (mywidth()+2*data_x_ghost)*(y+data_y_ghost)+x+data_x_ghost;
   }