From: kramm Date: Mon, 24 Nov 2008 16:17:12 +0000 (+0000) Subject: added more type-checking X-Git-Tag: release-0-9-0~752 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=8495925885c6adaebada05f11e6f6b1a8b687e2c added more type-checking --- diff --git a/lib/q.c b/lib/q.c index a38a35e..543d579 100644 --- a/lib/q.c +++ b/lib/q.c @@ -331,6 +331,8 @@ unsigned int crc32_add_byte(unsigned int checksum, unsigned char b) } unsigned int crc32_add_string(unsigned int checksum, const char*s) { + if(!s) + return checksum; while(*s) { checksum = crc32_add_byte(checksum, *s); s++; @@ -523,19 +525,27 @@ void stringarray_destroy(stringarray_t*sa) char charptr_equals(const void*o1, const void*o2) { + if(!o1 || !o2) + return o1==o2; return !strcmp(o1,o2); } unsigned int charptr_hash(const void*o) { + if(!o) + return 0; return string_hash2(o); } void* charptr_dup(const void*o) { + if(!o) + return 0; return strdup(o); } void charptr_free(void*o) { - rfx_free(o); + if(o) { + rfx_free(o); + } } char stringstruct_equals(const void*o1, const void*o2) { @@ -965,7 +975,7 @@ typedef struct _commonlist { listinfo_t info[0]; } commonlist_t; -int list_length(void*_list) +int list_length_(void*_list) { commonlist_t*l = (commonlist_t*)_list; if(!l) diff --git a/lib/q.h b/lib/q.h index 52d6392..64d8fda 100644 --- a/lib/q.h +++ b/lib/q.h @@ -28,7 +28,7 @@ extern "C" { #endif -#define NEW(t,y) t*y = (t*)malloc(sizeof(t));memset(y, 0, sizeof(t)); +#define NEW(t,y) t*y = (t*)rfx_calloc(sizeof(t)); /* dynamically growing mem section */ typedef struct _mem_t { @@ -203,7 +203,7 @@ struct _##x##_list { \ struct _##x##_list*next; \ }; \ typedef struct _##x##_list x##_list_t; -int list_length(void*_list); +int list_length_(void*_list); void*list_clone_(void*_list); void list_append_(void*_list, void*entry); void list_free_(void*_list); @@ -211,6 +211,7 @@ void list_free_(void*_list); #define list_append(list, e) {sizeof((list)->next);list_append_(&(list),(e));} #define list_free(list) {sizeof((list)->next);list_free_(&(list));} #define list_clone(list) (sizeof((list)->next),list_clone_(&(list))) +#define list_length(list) (sizeof((list)->next),list_length_(list)) #ifdef __cplusplus }