(root)/
libredwg-0.13/
src/
myalloca.h
       1  /*****************************************************************************/
       2  /*  LibreDWG - free implementation of the DWG file format                    */
       3  /*                                                                           */
       4  /*  Copyright (C) 2019 Free Software Foundation, Inc.                        */
       5  /*                                                                           */
       6  /*  This library is free software, licensed under the terms of the GNU       */
       7  /*  General Public License as published by the Free Software Foundation,     */
       8  /*  either version 3 of the License, or (at your option) any later version.  */
       9  /*  You should have received a copy of the GNU General Public License        */
      10  /*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
      11  /*****************************************************************************/
      12  
      13  /*
      14   * myalloca.h: alloca checks and replacement, use with freea()
      15   * written by Reini Urban
      16   */
      17  
      18  #ifndef MYALLOCA_H
      19  #define MYALLOCA_H
      20  
      21  #include "config.h"
      22  #if defined HAVE_ALLOCA_H
      23  #  include <alloca.h>
      24  #elif defined __GNUC__
      25  #  undef alloca
      26  #  define alloca __builtin_alloca
      27  #elif defined _AIX
      28  #  undef alloca
      29  #  define alloca __alloca
      30  #elif defined _MSC_VER
      31  #  undef alloca
      32  #  include <malloc.h>
      33  #  define alloca _alloca
      34  #else
      35  #  include <stddef.h>
      36  #  ifdef __cplusplus
      37  extern "C"
      38  #  endif
      39      void *alloca (size_t);
      40  #endif
      41  
      42  #ifndef HAVE_ALLOCA
      43  static inline char *alloca (size_t size);
      44  static inline char *
      45  alloca (size_t size)
      46  {
      47    return malloc (size);
      48  }
      49  #  define freea(ptr) free (ptr)
      50  #else
      51  #  define freea(ptr)
      52  #endif
      53  
      54  #endif