Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
correctly use clumsy xbt_dynar interface
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 15 Jun 2017 01:13:35 +0000 (03:13 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 15 Jun 2017 01:13:39 +0000 (03:13 +0200)
How can I be so stupid?

include/simgrid/s4u/Comm.hpp
src/msg/msg_gos.cpp
src/smpi/smpi_request.cpp

index 8bf6c8f..697f259 100644 (file)
@@ -32,7 +32,7 @@ public:
   {
     // Map to dynar<Synchro*>:
     xbt_dynar_t comms = xbt_dynar_new(sizeof(simgrid::kernel::activity::ActivityImpl*), [](void*ptr){
-      intrusive_ptr_release((simgrid::kernel::activity::ActivityImpl*)ptr);
+      intrusive_ptr_release(*(simgrid::kernel::activity::ActivityImpl**)ptr);
     });
     for (I iter = first; iter != last; iter++) {
       CommPtr comm = *iter;
@@ -59,7 +59,7 @@ public:
   {
     // Map to dynar<Synchro*>:
     xbt_dynar_t comms = xbt_dynar_new(sizeof(simgrid::kernel::activity::ActivityImpl*), [](void*ptr){
-      intrusive_ptr_release((simgrid::kernel::activity::ActivityImpl*)ptr);
+      intrusive_ptr_release(*(simgrid::kernel::activity::ActivityImpl**)ptr);
     });
     for (I iter = first; iter != last; iter++) {
       CommPtr comm = *iter;
index 98d5871..7f2e4b4 100644 (file)
@@ -635,7 +635,7 @@ int MSG_comm_waitany(xbt_dynar_t comms)
 
   /* create the equivalent dynar with SIMIX objects */
   xbt_dynar_t s_comms = xbt_dynar_new(sizeof(smx_activity_t), [](void*ptr){
-    intrusive_ptr_release((simgrid::kernel::activity::ActivityImpl*)ptr);
+    intrusive_ptr_release(*(simgrid::kernel::activity::ActivityImpl**)ptr);
   });
   msg_comm_t comm;
   unsigned int cursor;
index 6001f75..ebfc570 100644 (file)
@@ -763,7 +763,7 @@ int Request::waitany(int count, MPI_Request requests[], MPI_Status * status)
   if(count > 0) {
     // Wait for a request to complete
     xbt_dynar_init(&comms, sizeof(smx_activity_t), [](void*ptr){
-      intrusive_ptr_release((simgrid::kernel::activity::ActivityImpl*)ptr);
+      intrusive_ptr_release(*(simgrid::kernel::activity::ActivityImpl**)ptr);
     });
     int *map = xbt_new(int, count);
     XBT_DEBUG("Wait for one of %d", count);