1 | /*************************************** 2 | $Revision: 1.4 $ 3 | 4 | Utilities (ut). memwrap.c - memory allocation wrappers. 5 | Facilitate easy changing a memory allocation 6 | library and provide uniform error codes. 7 | 8 | Status: NOT REVUED, TESTED, 9 | 10 | Design and implementation by: Marek Bukowy 11 | 12 | ******************/ /****************** 13 | Copyright (c) 1999 RIPE NCC 14 | 15 | All Rights Reserved 16 | 17 | Permission to use, copy, modify, and distribute this software and its 18 | documentation for any purpose and without fee is hereby granted, 19 | provided that the above copyright notice appear in all copies and that 20 | both that copyright notice and this permission notice appear in 21 | supporting documentation, and that the name of the author not be 22 | used in advertising or publicity pertaining to distribution of the 23 | software without specific, written prior permission. 24 | 25 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 26 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL 27 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 28 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 29 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 30 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 31 | ***************************************/ 32 | 33 | #include <stdlib.h> 34 | #include <erroutines.h> 35 | #include <stubs.h> 36 | 37 | static void 38 | wr_alloc_log(void *ptr, int len, char* comment, int line) 39 | { 40 | /* fprintf(stderr,"allocated %7d bytes at address %p in %s/%d\n", 41 | len, ptr, comment, line); 42 | */ 43 | } 44 | 45 | static void 46 | wr_free_log(void *ptr, char* comment, int line) 47 | { 48 | /* 49 | fprintf(stderr,"freed some memory space at address %p in %s/%d\n", ptr, comment, line); 50 | */ 51 | } 52 | 53 | 54 | 55 | er_ret_t 56 | wr_real_malloc(void **ptr, size_t size, char* comment, int line) 57 | { 58 | if( (*ptr = malloc(size)) == NULL ) { 59 | /* die; */ /* this should return an appropriate error number */ 60 | return UT_OUTMEM; 61 | } 62 | else { 63 | wr_alloc_log(*ptr, size, comment, line); 64 | return UT_OK; 65 | } 66 | } 67 | 68 | er_ret_t 69 | wr_real_calloc(void **ptr, size_t num, size_t size, char* comment, int line) 70 | { 71 | void *newalloc; 72 | 73 | newalloc = calloc(num, size); 74 | 75 | if( newalloc == NULL ) { 76 | /*die; */ /* this should return an appropriate error number */ 77 | return UT_OUTMEM; 78 | } 79 | else { 80 | *ptr=newalloc; 81 | wr_alloc_log(*ptr, size*num, comment, line); 82 | return UT_OK; 83 | } 84 | } 85 | 86 | 87 | er_ret_t 88 | wr_real_realloc(void **ptr, void *oldptr, size_t size, char* comment, int line) 89 | { 90 | if( (*ptr = realloc(oldptr, size)) == NULL ) { 91 | /* die; */ /* this should return an appropriate error number */ 92 | return UT_OUTMEM; 93 | } 94 | else { 95 | wr_alloc_log(*ptr, size, comment, line); 96 | return UT_OK; 97 | } 98 | } 99 | 100 | er_ret_t 101 | wr_real_free(void *ptr, char* comment, int line) 102 | { 103 | if( ptr == NULL ) { 104 | die; 105 | } 106 | wr_free_log(ptr, comment, line); 107 | free(ptr); 108 | /* if we're tired of those dies, we can set the pointer to NULL after free */ 109 | return UT_OK; 110 | } 111 | 112 |