Browse Source

src/datawizard/filters.c: fix previous commit 'fix bug when using unpartitioned data initially registered with NULL pointer'

Nathalie Furmento 6 years ago
parent
commit
fba2accd92
1 changed files with 9 additions and 9 deletions
  1. 9 9
      src/datawizard/filters.c

+ 9 - 9
src/datawizard/filters.c

@@ -542,30 +542,30 @@ void starpu_data_unpartition(starpu_data_handle_t root_handle, unsigned gatherin
 		root_handle->per_node[node].state = still_valid[node]?newstate:STARPU_INVALID;
 	}
 
-	root_handle->initialized=1;
 	for (child = 0; child < root_handle->nchildren; child++)
 	{
 		starpu_data_handle_t child_handle = starpu_data_get_child(root_handle, child);
-		if (!child_handle->initialized) root_handle->initialized=0;
 		_starpu_data_free_interfaces(child_handle);
 		_starpu_spin_unlock(&child_handle->header_lock);
 		_starpu_spin_destroy(&child_handle->header_lock);
 	}
 
+	/* Set the initialized state */
+	starpu_data_handle_t first_child = starpu_data_get_child(root_handle, 0);
+	root_handle->initialized = first_child->initialized;
+	for (child = 1; child < root_handle->nchildren; child++)
+	{
+		starpu_data_handle_t child_handle = starpu_data_get_child(root_handle, child);
+		STARPU_ASSERT_MSG(child_handle->initialized == root_handle->initialized, "Inconsistent state between children initialization");
+	}
 	if (root_handle->initialized)
 	{
-		starpu_data_handle_t child = &root_handle->children[0];
 		for (node = 0; node < STARPU_MAXNODES; node++)
 		{
 			struct _starpu_data_replicate *root_replicate;
-			struct _starpu_data_replicate *child_replicate;
 
 			root_replicate = &root_handle->per_node[node];
-			child_replicate = &child->per_node[node];
-
-			root_replicate->state = child_replicate->state;
-			root_replicate->allocated = child_replicate->allocated;
-			root_replicate->initialized = child_replicate->initialized;
+			root_replicate->initialized = still_valid[node];
 		}
 	}