Annotation of embedaddon/libiconv/gnulib-local/lib/alloca.in.h, revision 1.1

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
        !            15:    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
        !            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>