瀏覽代碼

free cache_sent array after it is used by _starpu_mpi_cache_flush_nolock

Samuel Thibault 7 年之前
父節點
當前提交
5aaba07f4e
共有 1 個文件被更改,包括 12 次插入12 次删除
  1. 12 12
      mpi/src/starpu_mpi_cache.c

+ 12 - 12
mpi/src/starpu_mpi_cache.c

@@ -106,19 +106,19 @@ void _starpu_mpi_cache_data_clear(starpu_data_handle_t data_handle)
 	struct _starpu_mpi_data *mpi_data = data_handle->mpi_data;
 	struct _starpu_data_entry *entry;
 
-	free(mpi_data->cache_sent);
-
-	if (_starpu_cache_enabled == 0) return;
-
-	STARPU_PTHREAD_MUTEX_LOCK(&_cache_mutex);
-	_starpu_mpi_cache_flush_nolock(data_handle);
-	HASH_FIND_PTR(_cache_data, &data_handle, entry);
-	if (entry != NULL)
-	{
-		HASH_DEL(_cache_data, entry);
-		free(entry);
+	if (_starpu_cache_enabled == 1) {
+		STARPU_PTHREAD_MUTEX_LOCK(&_cache_mutex);
+		_starpu_mpi_cache_flush_nolock(data_handle);
+		HASH_FIND_PTR(_cache_data, &data_handle, entry);
+		if (entry != NULL)
+		{
+			HASH_DEL(_cache_data, entry);
+			free(entry);
+		}
+		STARPU_PTHREAD_MUTEX_UNLOCK(&_cache_mutex);
 	}
-	STARPU_PTHREAD_MUTEX_UNLOCK(&_cache_mutex);
+
+	free(mpi_data->cache_sent);
 }
 
 void _starpu_mpi_cache_data_init(starpu_data_handle_t data_handle)