/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
+#include "portable.h" /* SIZEOF_MAX */
#include "xbt/misc.h"
#include "xbt/sysdep.h"
#include "xbt/log.h"
#include "xbt/dynar.h"
#include <sys/types.h>
-
+#include "xbt/dynar_private.h" /* type definition, which we share with the
+ code in charge of sending this across the net */
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(dynar,xbt,"Dynamic arrays");
-typedef struct xbt_dynar_s {
- unsigned long size;
- unsigned long used;
- unsigned long elmsize;
- void *data;
- void_f_pvoid_t *free_f;
-} s_xbt_dynar_t;
#define __sanity_check_dynar(dynar) \
xbt_assert0(dynar, \
if (old_data) {
memcpy(new_data, old_data, used_length);
_xbt_clear_mem(old_data, old_length);
- xbt_free(old_data);
+ free(old_data);
}
_xbt_clear_mem(new_data + used_length, new_length - used_length);
if ((*dynar)->data) {
_xbt_clear_mem((*dynar)->data, (*dynar)->size);
- xbt_free((*dynar)->data);
+ free((*dynar)->data);
}
_xbt_clear_mem(*dynar, sizeof(s_xbt_dynar_t));
- xbt_free(*dynar);
+ free(*dynar);
*dynar=NULL;
}
}
}
if (dynar->data)
- xbt_free(dynar->data);
+ free(dynar->data);
dynar->size = 0;
dynar->used = 0;
__sanity_check_dynar(dynar);
{
- char elm[64];
+ char elm[SIZEOF_MAX];
const unsigned long used = dynar->used;
unsigned long i = 0;
dst=xbt_malloc(dynar->elmsize);
xbt_dynar_remove_at(dynar,(*cursor)--,dst);
(dynar->free_f)(dst);
- xbt_free(dst);
+ free(dst);
} else {
DEBUG0("Ok, we dont care about the element without free function");
xbt_dynar_remove_at(dynar,(*cursor)--,NULL);