/* * Copyright © 2008 by Eric Bishop * * This work ‘as-is’ we provide. * No warranty, express or implied. * We’ve done our best, * to debug and test. * Liability for damages denied. * * Permission is granted hereby, * to copy, share, and modify. * Use as is fit, * free or for profit. * On this notice these rights rely. * * * * Note that unlike other portions of Gargoyle this code * does not fall under the GPL, but the rather whimsical * 'Poetic License' above. * * Basically, this library contains a bunch of utilities * that I find useful. I'm sure other libraries exist * that are just as good or better, but I like these tools * because I personally wrote them, so I know their quirks. * (i.e. I know where the bodies are buried). I want to * make sure that I can re-use these utilities for whatever * code I may want to write in the future be it * proprietary or open-source, so I've put them under * a very, very permissive license. * * If you find this code useful, use it. If not, don't. * I really don't care. * */ #include "erics_tools.h" void *safe_malloc(size_t size) { void* val = malloc(size); if(val == NULL) { fprintf(stderr, "ERROR: MALLOC FAILURE!\n"); exit(1); } return val; } char* safe_strdup(const char* str) { char* new_str = NULL; if(str != NULL) { new_str = strdup(str); if(new_str == NULL) { fprintf(stderr, "ERROR: MALLOC FAILURE!\n"); exit(1); } } return new_str; } void free_if_not_null(void* p) { if(p != NULL) { free(p); } } void free_and_set_null(void** p) { if(*p != NULL) { free(*p); *p = NULL; } }