Annotation of embedaddon/libiconv/srclib/alloca.in.h, revision 1.1.1.2

1.1       misho       1: /* Memory allocation on the stack.
                      2:    Copyright (C) 1995, 1999, 2001-2007 Free Software Foundation, Inc.
                      3: 
                      4:    This program is free software: you can redistribute it and/or modify
                      5:    it under the terms of the GNU General Public License as published by
                      6:    the Free Software Foundation; either version 3 of the License, or
                      7:    (at your option) any later version.
                      8: 
                      9:    This program is distributed in the hope that it will be useful,
                     10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     12:    GNU General Public License for more details.
                     13: 
                     14:    You should have received a copy of the GNU General Public License
1.1.1.2 ! misho      15:    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
1.1       misho      16: 
                     17: /* When this file is included, it may be preceded only by preprocessor
                     18:    declarations.  Thanks to AIX.  Therefore we include it right after
                     19:    "config.h", not later.  */
                     20: 
                     21: /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
                     22:    means there is a real alloca function.  */
                     23: #ifndef _GL_ALLOCA_H
                     24: #define _GL_ALLOCA_H
                     25: 
                     26: /* alloca(N) returns a pointer (void* or char*) to N bytes of memory
                     27:    allocated on the stack, and which will last until the function returns.
                     28:    Use of alloca should be avoided:
                     29:      - inside arguments of function calls - undefined behaviour,
                     30:      - in inline functions - the allocation may actually last until the
                     31:        calling function returns,
                     32:      - for huge N (say, N >= 65536) - you never know how large (or small)
                     33:        the stack is, and when the stack cannot fulfill the memory allocation
                     34:        request, the program just crashes.
                     35:  */
                     36: 
                     37: #ifndef alloca
                     38: # ifdef __GNUC__
                     39: #   define alloca __builtin_alloca
                     40: # else
                     41: #  ifdef _MSC_VER
                     42: #   include <malloc.h>
                     43: #   define alloca _alloca
                     44: #  else
                     45: #   if HAVE_ALLOCA_H
                     46: #    include <alloca.h>
                     47: #   else
                     48: #    ifdef _AIX
                     49:  #pragma alloca
                     50: #    else
                     51: #     ifdef __hpux /* This section must match that of bison generated files. */
                     52: #      ifdef __cplusplus
                     53: extern "C" void *alloca (unsigned int);
                     54: #      else /* not __cplusplus */
                     55: extern void *alloca ();
                     56: #      endif /* not __cplusplus */
                     57: #     else /* not __hpux */
                     58: #      ifndef alloca
                     59: extern char *alloca ();
                     60: #      endif
                     61: #     endif /* __hpux */
                     62: #    endif
                     63: #   endif
                     64: #  endif
                     65: # endif
                     66: #endif
                     67: 
                     68: #endif /* _GL_ALLOCA_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>