(linenum→info "unix/slp.c:2238")

coreutils/6.9/lib/calloc.c

    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: }
Syntax (Markdown)