diff --git a/libs/xmlrpc-c/lib/abyss/src/data.c b/libs/xmlrpc-c/lib/abyss/src/data.c index a9225a3588..f0097da7d3 100644 --- a/libs/xmlrpc-c/lib/abyss/src/data.c +++ b/libs/xmlrpc-c/lib/abyss/src/data.c @@ -42,6 +42,7 @@ #include "token.h" +#define safe_free(it) if (it) {free(it);it=NULL;} /********************************************************************* ** List *********************************************************************/ @@ -69,10 +70,10 @@ ListFree(TList * const sl) { if (sl->autofree) { unsigned int i; for (i = sl->size; i > 0; --i) - free(sl->item[i-1]); + safe_free(sl->item[i-1]); } - free(sl->item); + safe_free(sl->item); } sl->item = NULL; sl->size = 0; @@ -87,7 +88,7 @@ ListFreeItems(TList * const sl) { if (sl->item) { unsigned int i; for (i = sl->size; i > 0; --i) - free(sl->item[i-1]); + safe_free(sl->item[i-1]); } } @@ -215,7 +216,7 @@ void BufferFree(TBuffer *buf) /* ************** Implement the static buffers ***/ } else - free(buf->data); + safe_free(buf->data); buf->size=0; buf->staticid=0; @@ -348,11 +349,11 @@ void TableFree(TTable *t) if (t->size) for (i=t->size;i>0;i--) { - free(t->item[i-1].name); - free(t->item[i-1].value); + safe_free(t->item[i-1].name); + safe_free(t->item[i-1].value); }; - free(t->item); + safe_free(t->item); } TableInit(t); @@ -382,12 +383,12 @@ abyss_bool TableAddReplace(TTable *t,char *name,char *value) if (TableFindIndex(t,name,&i)) { - free(t->item[i].value); + safe_free(t->item[i].value); if (value) t->item[i].value=strdup(value); else { - free(t->item[i].name); + safe_free(t->item[i].name); if (--t->size>0) t->item[i]=t->item[t->size]; }; @@ -521,7 +522,7 @@ void PoolFree(TPool *p) while (pz) { npz=pz->next; - free(pz); + safe_free(pz); pz=npz; }; }