xmalloc.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* xmalloc.c -- safe versions of malloc and realloc */
  2. /* Copyright (C) 1991 Free Software Foundation, Inc.
  3.    This file is part of GNU Readline, a library for reading lines
  4.    of text with interactive input and history editing.
  5.    Readline is free software; you can redistribute it and/or modify it
  6.    under the terms of the GNU General Public License as published by the
  7.    Free Software Foundation; either version 1, or (at your option) any
  8.    later version.
  9.    Readline is distributed in the hope that it will be useful, but
  10.    WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    General Public License for more details.
  13.    You should have received a copy of the GNU General Public License
  14.    along with Readline; see the file COPYING.  If not, write to the Free
  15.    Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
  16. #if defined (HAVE_CONFIG_H)
  17. #include <config.h>
  18. #endif
  19. #include <stdio.h>
  20. #if defined (HAVE_STDLIB_H)
  21. #  include <stdlib.h>
  22. #else
  23. #  include "ansi_stdlib.h"
  24. #endif /* HAVE_STDLIB_H */
  25. static void memory_error_and_abort ();
  26. /* **************************************************************** */
  27. /*     */
  28. /*    Memory Allocation and Deallocation.     */
  29. /*     */
  30. /* **************************************************************** */
  31. /* Return a pointer to free()able block of memory large enough
  32.    to hold BYTES number of bytes.  If the memory cannot be allocated,
  33.    print an error message and abort. */
  34. char *
  35. xmalloc (bytes)
  36.      int bytes;
  37. {
  38.   char *temp;
  39.   temp = (char *)malloc (bytes);
  40.   if (temp == 0)
  41.     memory_error_and_abort ("xmalloc");
  42.   return (temp);
  43. }
  44. char *
  45. xrealloc (pointer, bytes)
  46.      char *pointer;
  47.      int bytes;
  48. {
  49.   char *temp;
  50.   temp = pointer ? (char *)realloc (pointer, bytes) : (char *)malloc (bytes);
  51.   if (temp == 0)
  52.     memory_error_and_abort ("xrealloc");
  53.   return (temp);
  54. }
  55. static void
  56. memory_error_and_abort (fname)
  57.      char *fname;
  58. {
  59.   fprintf (stderr, "%s: out of virtual memoryn", fname);
  60.   exit (2);
  61. }
  62. /* Use this as the function to call when adding unwind protects so we
  63.    don't need to know what free() returns. */
  64. void
  65. xfree (string)
  66.      char *string;
  67. {
  68.   if (string)
  69.     free (string);
  70. }