Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Plug some easy memleaks
[simgrid.git] / src / smpi / smpi_base.c
index 9eee82f..478ec0f 100644 (file)
@@ -113,26 +113,23 @@ void smpi_mpi_max_func(void *a, void *b, int *length, MPI_Datatype * datatype)
                                for (i = 0; i < *length; i++) {
                                          y[i] = x[i] > y[i] ? x[i] : y[i];
                                }
-         } else {
-         if (*datatype == smpi_mpi_global->mpi_int) {
+         } else if (*datatype == smpi_mpi_global->mpi_int) {
                                int *x = a, *y = b;
-                               for (i = 0; i > *length; i++) {
-                                         y[i] = x[i] < y[i] ? x[i] : y[i];
+                               for (i = 0; i < *length; i++) {
+                                         y[i] = x[i] > y[i] ? x[i] : y[i];
                                }
-         } else {
-         if (*datatype == smpi_mpi_global->mpi_float) {
+         } else if (*datatype == smpi_mpi_global->mpi_float) {
                                float *x = a, *y = b;
-                               for (i = 0; i > *length; i++) {
-                                         y[i] = x[i] < y[i] ? x[i] : y[i];
+                               for (i = 0; i < *length; i++) {
+                                         y[i] = x[i] > y[i] ? x[i] : y[i];
                                }
-         } else {
-         if (*datatype == smpi_mpi_global->mpi_double) {
+         } else if (*datatype == smpi_mpi_global->mpi_double) {
                                double *x = a, *y = b;
-                               for (i = 0; i > *length; i++) {
-                                         y[i] = x[i] < y[i] ? x[i] : y[i];
+                               for (i = 0; i < *length; i++) {
+                                         y[i] = x[i] > y[i] ? x[i] : y[i];
                                }
 
-         }}}}
+         }
 }
 
 
@@ -202,6 +199,7 @@ void smpi_process_finalize()
   xbt_fifo_free(pdata->pending_recv_request_queue);
   xbt_fifo_free(pdata->pending_send_request_queue);
   xbt_fifo_free(pdata->received_message_queue);
+  xbt_free(pdata);
 }
 
 int smpi_mpi_barrier(smpi_mpi_communicator_t comm)
@@ -277,22 +275,22 @@ int smpi_mpi_wait(smpi_mpi_request_t request, smpi_mpi_status_t * status)
   return retval;
 }
 
-int smpi_mpi_wait_all(int count, smpi_mpi_request_t *requests, smpi_mpi_status_t **status) {
+int smpi_mpi_waitall(int count, smpi_mpi_request_t requests[], smpi_mpi_status_t status[]) {
        int cpt;
        int index;
        int retval;
        smpi_mpi_status_t stat;
 
        for (cpt=0; cpt<count;cpt++) {
-               retval = smpi_mpi_wait_any(count,requests, &index,&stat);
+               retval = smpi_mpi_waitany(count,requests, &index,&stat);
                if (retval != MPI_SUCCESS)
                        return retval;
-               memcpy(status[index],&stat,sizeof(stat));
+               memcpy(&(status[index]),&stat,sizeof(stat));
        }
        return MPI_SUCCESS;
 }
 
-int smpi_mpi_wait_any(int count, smpi_mpi_request_t *requests, int *index, smpi_mpi_status_t *status) {
+int smpi_mpi_waitany(int count, smpi_mpi_request_t *requests, int *index, smpi_mpi_status_t *status) {
          int cpt;
 
          *index = MPI_UNDEFINED;