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