"Fossies" - the Fresh Open Source Software Archive

Member "gcal-4.1/lib/realloc.c" (22 Jan 2017, 2104 Bytes) of package /linux/misc/gcal-4.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "realloc.c" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 4_vs_4.1.

    1 /* realloc() function that is glibc compatible.
    2 
    3    Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2017 Free Software
    4    Foundation, Inc.
    5 
    6    This program is free software: you can redistribute it and/or modify
    7    it under the terms of the GNU General Public License as published by
    8    the Free Software Foundation; either version 3 of the License, or
    9    (at your option) any later version.
   10 
   11    This program is distributed in the hope that it will be useful,
   12    but WITHOUT ANY WARRANTY; without even the implied warranty of
   13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14    GNU General Public License for more details.
   15 
   16    You should have received a copy of the GNU General Public License
   17    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
   18 
   19 /* written by Jim Meyering and Bruno Haible */
   20 
   21 #define _GL_USE_STDLIB_ALLOC 1
   22 #include <config.h>
   23 
   24 /* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h.  */
   25 #ifdef realloc
   26 # define NEED_REALLOC_GNU 1
   27 /* Whereas the gnulib module 'realloc-gnu' defines HAVE_REALLOC_GNU.  */
   28 #elif GNULIB_REALLOC_GNU && !HAVE_REALLOC_GNU
   29 # define NEED_REALLOC_GNU 1
   30 #endif
   31 
   32 /* Infer the properties of the system's malloc function.
   33    The gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU.  */
   34 #if GNULIB_MALLOC_GNU && HAVE_MALLOC_GNU
   35 # define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1
   36 #endif
   37 
   38 #include <stdlib.h>
   39 
   40 #include <errno.h>
   41 
   42 /* Change the size of an allocated block of memory P to N bytes,
   43    with error checking.  If N is zero, change it to 1.  If P is NULL,
   44    use malloc.  */
   45 
   46 void *
   47 rpl_realloc (void *p, size_t n)
   48 {
   49   void *result;
   50 
   51 #if NEED_REALLOC_GNU
   52   if (n == 0)
   53     {
   54       n = 1;
   55 
   56       /* In theory realloc might fail, so don't rely on it to free.  */
   57       free (p);
   58       p = NULL;
   59     }
   60 #endif
   61 
   62   if (p == NULL)
   63     {
   64 #if GNULIB_REALLOC_GNU && !NEED_REALLOC_GNU && !SYSTEM_MALLOC_GLIBC_COMPATIBLE
   65       if (n == 0)
   66         n = 1;
   67 #endif
   68       result = malloc (n);
   69     }
   70   else
   71     result = realloc (p, n);
   72 
   73 #if !HAVE_REALLOC_POSIX
   74   if (result == NULL)
   75     errno = ENOMEM;
   76 #endif
   77 
   78   return result;
   79 }