Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix broken doc
[simgrid.git] / src / xbt / dynar.c
index d9433a2..0519a4a 100644 (file)
@@ -441,7 +441,6 @@ xbt_dynar_replace(xbt_dynar_t dynar,
 {
   _dynar_lock(dynar);
   _sanity_check_dynar(dynar);
-  _sanity_check_idx(idx);
 
   if (idx < dynar->used && dynar->free_f) {
     void *const old_object = _xbt_dynar_elm(dynar, idx);
@@ -709,6 +708,7 @@ XBT_INLINE void xbt_dynar_cursor_unlock(xbt_dynar_t dynar)
 
 /** @brief Sorts a dynar according to the function <tt>compar_fn</tt>
  *
+ * \param dynar the dynar to sort
  * \param compar_fn comparison function of type (int (compar_fn*) (void*) (void*)).
  *
  * Remark: if the elements stored in the dynar are structures, the compar_fn
@@ -734,15 +734,28 @@ XBT_INLINE int xbt_dynar_compare(xbt_dynar_t d1, xbt_dynar_t d2,
        int i ;
        int size;
        if((!d1) && (!d2)) return 0;
-       if((!d1) || (!d2)) return 1;
-       if((d1->elmsize)!=(d2->elmsize)) return 1; // xbt_die
-       if(xbt_dynar_length(d1) != xbt_dynar_length(d2)) return 1;
+       if((!d1) || (!d2))
+       {
+               DEBUG2("NULL dynar d1=%p d2=%p",d1,d2);
+               return 1;
+       }
+       if((d1->elmsize)!=(d2->elmsize))
+       {
+               DEBUG2("Size of elmsize d1=%ld d2=%ld",d1->elmsize,d2->elmsize);
+               return 1; // xbt_die
+       }
+       if(xbt_dynar_length(d1) != xbt_dynar_length(d2))
+       {
+               DEBUG2("Size of dynar d1=%ld d2=%ld",xbt_dynar_length(d1),xbt_dynar_length(d2));
+               return 1;
+       }
 
        size = xbt_dynar_length(d1);
        for(i=0;i<size;i++)
        {
                void *data1 = xbt_dynar_get_as(d1, i, void *);
                void *data2 = xbt_dynar_get_as(d2, i, void *);
+               DEBUG3("link[%d] d1=%p d2=%p",i,data1,data2);
                if(compar(data1,data2)) return 1;
        }
        return 0;