
1: /* calloc() function that is glibc compatible. 2: This wrapper function is required at least on Tru64 UNIX 5.1. 3: Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. 4: 5: This program is free software; you can redistribute it and/or modify 6: it under the terms of the GNU General Public License as published by 7: the Free Software Foundation; either version 2, or (at your option) 8: any later version. 9: 10: This program is distributed in the hope that it will be useful, 11: but WITHOUT ANY WARRANTY; without even the implied warranty of 12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13: GNU General Public License for more details. 14: 15: You should have received a copy of the GNU General Public License 16: along with this program; if not, write to the Free Software Foundation, 17: Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ 18: 19: /* written by Jim Meyering */ 20: 21: #include <config.h> 22: #undef calloc 23: 24: #include <stdlib.h> 25: 26: /* Allocate and zero-fill an NxS-byte block of memory from the heap. 27: If N or S is zero, allocate and zero-fill a 1-byte block. */ 28: 29: void * 30: rpl_calloc (size_t n, size_t s) 31: { 32: size_t bytes; 33: 34: if (n == 0 || s == 0) 35: return calloc (1, 1); 36: 37: /* Defend against buggy calloc implementations that mishandle 38: size_t overflow. */ 39: bytes = n * s; 40: if (bytes / s != n) 41: return NULL; 42: 43: return calloc (n, s); 44: }