Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge context_start into context_new to simplify the soup
[simgrid.git] / src / simix / smx_network.c
index 113c21b..36ec03c 100644 (file)
@@ -294,6 +294,7 @@ static inline void SIMIX_communication_wait_for_completion(smx_comm_t comm, doub
     SIMIX_communication_destroy(comm);
     THROW0(network_error, 0, "Link failure");
   }
+  SIMIX_communication_destroy(comm);
 }
 
 /**
@@ -325,7 +326,7 @@ void SIMIX_network_set_copy_data_callback(void (*callback)(smx_comm_t, size_t))
 }
 
 void SIMIX_network_copy_pointer_callback(smx_comm_t comm, size_t buff_size) {
-  xbt_assert1((buff_size == sizeof(void*)), "Cannot copy %d bytes: must be sizeof(void*)",buff_size);
+  xbt_assert1((buff_size == sizeof(void*)), "Cannot copy %zu bytes: must be sizeof(void*)",buff_size);
   *(void**)(comm->dst_buff) = comm->src_buff;
 }
 
@@ -473,8 +474,6 @@ smx_comm_t SIMIX_network_irecv(smx_rdv_t rdv, void *dst_buff, size_t *dst_buff_s
 XBT_INLINE void SIMIX_network_wait(smx_comm_t comm, double timeout) {
   /* Wait for communication completion */
   SIMIX_communication_wait_for_completion(comm, timeout);
-
-  SIMIX_communication_destroy(comm);
 }
 
 /** @Returns whether the (asynchronous) communication is done yet or not */
@@ -517,6 +516,7 @@ unsigned int SIMIX_network_waitany(xbt_dynar_t comms) {
     SIMIX_communication_destroy(comm_finished);
     THROW0(network_error, 0, "Link failure");
   }
+  SIMIX_communication_destroy(comm_finished);
 
   return found_comm;
 }