On Wed, 14 Apr 2010 15:35:33 +0200, Nikola Pajkovsky wrote:
+darray_t* darray_new()
darray.c:26: warning: function declaration isn’t a prototype
+void darray_add(darray_t* da, void* item) +{
- if (da->size == da->last)
- {
darray_grow(da);
- }
- da->data[da->last++] = item;
- da->data[da->last] = NULL;
+}
==6022== Invalid write of size 8 ==6022== at 0x4006E5: darray_add (darray.c:55) ==6022== Address 0x4c32190 is 0 bytes after a block of size 256 alloc'd ==6022== at 0x4A0515D: malloc (vg_replace_malloc.c:195) ==6022== by 0x4005D7: darray_new (darray.c:31)
+void darray_destroy(darray_t* da) +{
- if (!da)
return;
- int ii;
- for (ii = 0; ii < da->size; ii++)
free(da->data[ii]);
- free(da->data);
+}
darray_destroy leaks the `sizeof (darray_t)' memory of `da' itself.
+#include <stdio.h> +#include <stdlib.h> +#include "xfuncs.h"
These include files are required by "darray.c", not by "darray.h".
+extern darray_t* darray_new();
darray.h:38: warning: function declaration isn’t a prototype
Regards, Jan