[commit] r7827 - in freeswitch/trunk/libs/sofia-sip: libsofia-sip-ua/su m4
Author: mikej Date: Fri Mar 7 12:50:32 2008 New Revision: 7827 Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c freeswitch/trunk/libs/sofia-sip/m4/sac-su2.m4 Log: Fri Mar 7 12:24:05 EST 2008 Pekka.Pessi@nokia.com * su_alloc.c: using safe free Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c ============================================================================== --- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c (original) +++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c Fri Mar 7 12:50:32 2008 @@ -203,6 +203,12 @@ void (*_su_home_destroy_mutexes)(void *mutex); +#if HAVE_FREE_NULL +#define safefree(x) free((x)) +#else +su_inline void safefree(void *b) { b ? free(b) : (void)0; } +#endif + #define MEMLOCK(h) \ ((void)((h) && (h)->suh_lock ? _su_home_locker((h)->suh_lock) : 0), (h)->suh_blocks) #define UNLOCK(h) ((void)((h) && (h)->suh_lock ? _su_home_unlocker((h)->suh_lock) : 0), NULL) @@ -457,7 +463,7 @@ home->suh_blocks = b2; if (sub && !sub->sub_auto) - free(sub); + safefree(sub); sub = b2; } @@ -500,7 +506,7 @@ subhome->suh_blocks = su_hash_alloc(SUB_N); if (!subhome->suh_blocks) - return (void)free(data), NULL; + return (void)safefree(data), NULL; subhome->suh_size = (unsigned)size; subhome->suh_blocks->sub_parent = home; @@ -555,7 +561,7 @@ if (home->suh_blocks) home->suh_blocks->sub_hauto = 0; else - free(home), home = NULL; + safefree(home), home = NULL; } return home; @@ -670,7 +676,7 @@ int hauto = sub->sub_hauto; _su_home_deinit(home); if (!hauto) - free(home); + safefree(home); /* UNLOCK(home); */ return 1; } @@ -827,7 +833,7 @@ UNLOCK(home); } - free(data); + safefree(data); } /** Check home consistency. @@ -977,8 +983,8 @@ } else if (su_is_preloaded(b, b->sub_nodes[i].sua_data)) continue; - safe_free(b->sub_nodes[i].sua_data); - + + safefree(b->sub_nodes[i].sua_data); } } Modified: freeswitch/trunk/libs/sofia-sip/m4/sac-su2.m4 ============================================================================== --- freeswitch/trunk/libs/sofia-sip/m4/sac-su2.m4 (original) +++ freeswitch/trunk/libs/sofia-sip/m4/sac-su2.m4 Fri Mar 7 12:50:32 2008 @@ -202,6 +202,28 @@ Define this as 1 if your compiler puts the variable argument list nicely in memory]) fi +### ====================================================================== +### Test if free(0) fails +### + +AC_CACHE_CHECK([for graceful free(0)],[ac_cv_free_null],[ +ac_cv_free_null=no + +AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include <stdlib.h> + +int main(int avc, char **av) +{ + free(0); + return 0; +} +]])],[ac_cv_free_null=yes],[ac_cv_free_null=no],[ac_cv_free_null=no])]) + +if test $ac_cv_free_null = yes ; then +AC_DEFINE([HAVE_FREE_NULL], 1, [ +Define this as 1 if your c library does not crash with free(0)]) +fi + dnl ====================================================================== dnl Socket features
participants (1)
-
Freeswitch SVN