~ubuntu-branches/ubuntu/wily/yiyantang/wily

« back to all changes in this revision

Viewing changes to .pc/misc-fixes.diff/src/xmalloc.c

  • Committer: Package Import Robot
  • Author(s): Andreas Beckmann
  • Date: 2013-07-31 11:05:56 UTC
  • Revision ID: package-import@ubuntu.com-20130731110556-jzmwl3o3fxokvwjm
Tags: 0.7.0-4
* QA upload.
* Set Maintainer to Debian QA Group.  (See #629017)
* Convert to 3.0 (quilt) package format.
* Bump Standards-Version to 3.9.4.
* Switch to debhelper 9 and minimal dh --with autotools_dev rules.
* Rebuilding with newer debhelper stops install-info usage.
  (Closes: #708502)
* d/copyright: Refer to GPL-2 and add missing copyright statement.
* Fix typo in manpage.
* Remove cruft from debian/.
* Fix lintian warnings.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* xmalloc.c -- malloc with out of memory checking
 
2
   Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 99 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 2, or (at your option)
 
7
   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, write to the Free Software Foundation,
 
16
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
17
 
 
18
#if HAVE_CONFIG_H
 
19
# include <config.h>
 
20
#endif
 
21
 
 
22
#if __STDC__
 
23
# define VOID void
 
24
#else
 
25
# define VOID char
 
26
#endif
 
27
 
 
28
#include <sys/types.h>
 
29
 
 
30
#if STDC_HEADERS
 
31
# include <stdlib.h>
 
32
#else
 
33
VOID *calloc ();
 
34
VOID *malloc ();
 
35
VOID *realloc ();
 
36
void free ();
 
37
#endif
 
38
 
 
39
#if ENABLE_NLS
 
40
# include <libintl.h>
 
41
# define _(Text) gettext (Text)
 
42
#else
 
43
# define textdomain(Domain)
 
44
# define _(Text) Text
 
45
#endif
 
46
 
 
47
#include "error.h"
 
48
 
 
49
#ifndef EXIT_FAILURE
 
50
# define EXIT_FAILURE 1
 
51
#endif
 
52
 
 
53
/* Prototypes for functions defined here.  */
 
54
#if defined (__STDC__) && __STDC__
 
55
static VOID *fixup_null_alloc (size_t n);
 
56
VOID *xmalloc (size_t n);
 
57
VOID *xcalloc (size_t n, size_t s);
 
58
VOID *xrealloc (VOID *p, size_t n);
 
59
char *xstrdup (char *p);
 
60
#endif
 
61
 
 
62
 
 
63
/* Exit value when the requested amount of memory is not available.
 
64
   The caller may set it to some other value.  */
 
65
int xmalloc_exit_failure = EXIT_FAILURE;
 
66
 
 
67
#if __STDC__ && (HAVE_VPRINTF || HAVE_DOPRNT)
 
68
void error (int, int, const char *, ...);
 
69
#else
 
70
void error ();
 
71
#endif
 
72
 
 
73
static VOID *
 
74
fixup_null_alloc (n)
 
75
     size_t n;
 
76
{
 
77
  VOID *p;
 
78
 
 
79
  p = 0;
 
80
  if (n == 0)
 
81
    p = malloc ((size_t) 1);
 
82
  if (p == 0)
 
83
    error (xmalloc_exit_failure, 0, _("Memory exhausted"));
 
84
  return p;
 
85
}
 
86
 
 
87
/* Allocate N bytes of memory dynamically, with error checking.  */
 
88
 
 
89
VOID *
 
90
xmalloc (n)
 
91
     size_t n;
 
92
{
 
93
  VOID *p;
 
94
 
 
95
  p = malloc (n);
 
96
  if (p == 0)
 
97
    p = fixup_null_alloc (n);
 
98
  return p;
 
99
}
 
100
 
 
101
/* Allocate memory for N elements of S bytes, with error checking.  */
 
102
 
 
103
VOID *
 
104
xcalloc (n, s)
 
105
     size_t n, s;
 
106
{
 
107
  VOID *p;
 
108
 
 
109
  p = calloc (n, s);
 
110
  if (p == 0)
 
111
    p = fixup_null_alloc (n);
 
112
  return p;
 
113
}
 
114
 
 
115
/* Change the size of an allocated block of memory P to N bytes,
 
116
   with error checking.
 
117
   If P is NULL, run xmalloc.  */
 
118
 
 
119
VOID *
 
120
xrealloc (p, n)
 
121
     VOID *p;
 
122
     size_t n;
 
123
{
 
124
  if (p == 0)
 
125
    return xmalloc (n);
 
126
  p = realloc (p, n);
 
127
  if (p == 0)
 
128
    p = fixup_null_alloc (n);
 
129
  return p;
 
130
}
 
131
 
 
132
/* Make a copy of a string in a newly allocated block of memory. */
 
133
 
 
134
char *
 
135
xstrdup (str)
 
136
     char *str;
 
137
{
 
138
  VOID *p;
 
139
 
 
140
  p = xmalloc (strlen (str) + 1);
 
141
  strcpy (p, str);
 
142
  return p;
 
143
}