glibc/locale/programs/xmalloc.c

116 lines
2.4 KiB
C
Raw Normal View History

/* xmalloc.c -- malloc with out of memory checking
update from main archive 961008 Wed Oct 9 00:30:33 1996 Ulrich Drepper <drepper@cygnus.com> * inet/getnetgrent_r.c: Correct netgroup implementation. A specification of a netgroup can also name another netgroup. * nss/nss_files/files-netgrp.c: Likewise. * inet/netgroup.h: Add fields to hold additional information. Tue Oct 8 21:51:14 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us> * posix/getopt.c: Implement POSIX -W option handling. When the option string contains "W;" -W foo is handled like --foo. Tue Oct 8 12:27:26 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/clone.S: Define _ERRNO_H before inclusing <errnos.h> so we really get error symbols defined. * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise. * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. * sunrpc/auth_unix.c (authunix_create_default): Don't use fixed size array for getgroups call. Instead get maximal number via sysconf. But discard list to NGRPS elements before calling XDR function since Sun's code cannot handle longer lists. Based on a patch by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>. * sysdeps/stub/e_j0l.c: Define y0l as well. * sysdeps/stub/e_j1l.c: Define y1l as well. * sysdeps/stub/e_jnl.c: Define ynl as well. * posix/unistd.h: Correct prototype for execlp. * sysdeps/unix/sysv/linux/posix_opt.h: Define _POSIX_NO_TRUNC. Mon Oct 7 22:18:03 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig (sysdep-library-path): New variable. (built-program-cmd): Use it here to properly build a colon separated library path. Mon Oct 7 22:11:55 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * crypt/md5-crypt.c (md5_crypt_r): Add missing parens around & within comparison. Fix comments. (md5_crypt): Fix comment. Tue Oct 8 05:10:49 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/errnos.h: Only include <linux/errnos.h> when _ERRNO_H is defined. [!_ERRNO_H && __need_Emath]: Define value for EDOM and ERANGE. Should there ever be a Linux port where the numeric values are not 33 and 34 this file must change. Mon Oct 7 13:54:04 1996 Ulrich Drepper <drepper@cygnus.com> * libio/iofgets.c (_IO_fgets): Use _IO_flockfile instead of __flockfile. Mon Oct 7 11:01:45 1996 Andreas Jaeger <aj@arthur.pfalz.de> * string/tst-strlen.c (main): Provide prototype. * malloc/mallocbug.c: Likewise. * io/test-utime.c: Likewise. * sysdeps/generic/crypt-entry.c: Correct typo. Mon Oct 7 13:42:20 1996 Ulrich Drepper <drepper@cygnus.com> * elf/dl-open.c (_dl_open): Check against _dl_sysdep_start to test for libc.a. Checking _DYNAMIC is of no worth here. Suggested by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. * nss/nss_files/files-parse.c: Define LOOKUP_NAME even if EXTERN_PARSER is defined. Sat Oct 5 17:05:36 1996 Andreas Jaeger <aj@arthur.pfalz.de> * Rules (dep-dummy-lib): Correct prototype for __dummy__. * crypt/md5-crypt.c: Fix typos in comments. * gmon/gmon.c: Provide prototypes. * db/makedb.c: Likewise. * locale/programs/xmalloc.c: Likewise. * stdio-common/bug11.c (main): Likewise. * stdio-common/bug7.c (main): Likewise. * stdio-common/bug8.c (main): Likewise. * stdio-common/bug9.c (main): Likewise. * stdio-common/scanf1.c (main): Likewise. * stdio-common/scanf2.c (main): Likewise. * stdio-common/scanf5.c (main): Likewise. * stdio-common/scanf6.c (main): Likewise. * stdio-common/scanf7.c (main): Likewise. * stdio-common/scanf8.c (main): Likewise. * stdio-common/temptest.c (main): Likewise. * stdio-common/test-fwrite.c (main): Likewise. * stdio-common/tst-printf.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * stdio-common/tstgetln.c (main): Likewise. * stdlib/testmb.c (main): Likewise. * stdio-common/scanf4.c (main): Correct prototype, remove unused variable n. * stdio-common/scanf3.c (main): Correct prototype, change declaration of s to reduce warnings. * stdio-common/bug10.c (main): Likewise. * stdio-common/tfformat.c: Provide prototype, remove unused reference to dump_stats, add braces in sprint_doubles. * stdio-common/tiformat.c: Likewise. * stdio-common/test_rdwr.c (main): Parameter `where' is long in printf call. Mon Oct 7 14:04:26 1996 NIIBE Yutaka <gniibe@mri.co.jp> * sysdeps/unix/sysv/linux/sys/soundcard.h: Fix typo. * shadow/putspent.c: Don't write colon after flag field. * sysdeps/unix/sysv/linux/net/if_ppp.h: New file. Wrapper around kernel header. * sysdeps/unix/sysv/linux/net/ppp-comp.h: Likewise. * sysdeps/unix/sysv/linux/net/ppp_defs.h: Likewise. * sysdeps/unix/sysv/linux/Dist: Mention new files. Mon Oct 7 00:58:19 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/i586/strchr.S: Correct handling of first bytes to get pointer aligned. Reported by Matthias Urlichs <smurf@noris.de>. * sysdeps/posix/euidaccess.c [_LIBC]: Avoid calling get?id functions by using __libc_enable_secure variable. * sysdeps/libm-i387/s_copysignl.S: Correct loading of return value.
1996-10-08 23:39:20 +00:00
Copyright (C) 1990, 91, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#if __STDC__
#define VOID void
#else
#define VOID char
#endif
#include <sys/types.h>
#if STDC_HEADERS || _LIBC
#include <stdlib.h>
update from main archive 961008 Wed Oct 9 00:30:33 1996 Ulrich Drepper <drepper@cygnus.com> * inet/getnetgrent_r.c: Correct netgroup implementation. A specification of a netgroup can also name another netgroup. * nss/nss_files/files-netgrp.c: Likewise. * inet/netgroup.h: Add fields to hold additional information. Tue Oct 8 21:51:14 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us> * posix/getopt.c: Implement POSIX -W option handling. When the option string contains "W;" -W foo is handled like --foo. Tue Oct 8 12:27:26 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/clone.S: Define _ERRNO_H before inclusing <errnos.h> so we really get error symbols defined. * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise. * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise. * sunrpc/auth_unix.c (authunix_create_default): Don't use fixed size array for getgroups call. Instead get maximal number via sysconf. But discard list to NGRPS elements before calling XDR function since Sun's code cannot handle longer lists. Based on a patch by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>. * sysdeps/stub/e_j0l.c: Define y0l as well. * sysdeps/stub/e_j1l.c: Define y1l as well. * sysdeps/stub/e_jnl.c: Define ynl as well. * posix/unistd.h: Correct prototype for execlp. * sysdeps/unix/sysv/linux/posix_opt.h: Define _POSIX_NO_TRUNC. Mon Oct 7 22:18:03 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makeconfig (sysdep-library-path): New variable. (built-program-cmd): Use it here to properly build a colon separated library path. Mon Oct 7 22:11:55 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * crypt/md5-crypt.c (md5_crypt_r): Add missing parens around & within comparison. Fix comments. (md5_crypt): Fix comment. Tue Oct 8 05:10:49 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/errnos.h: Only include <linux/errnos.h> when _ERRNO_H is defined. [!_ERRNO_H && __need_Emath]: Define value for EDOM and ERANGE. Should there ever be a Linux port where the numeric values are not 33 and 34 this file must change. Mon Oct 7 13:54:04 1996 Ulrich Drepper <drepper@cygnus.com> * libio/iofgets.c (_IO_fgets): Use _IO_flockfile instead of __flockfile. Mon Oct 7 11:01:45 1996 Andreas Jaeger <aj@arthur.pfalz.de> * string/tst-strlen.c (main): Provide prototype. * malloc/mallocbug.c: Likewise. * io/test-utime.c: Likewise. * sysdeps/generic/crypt-entry.c: Correct typo. Mon Oct 7 13:42:20 1996 Ulrich Drepper <drepper@cygnus.com> * elf/dl-open.c (_dl_open): Check against _dl_sysdep_start to test for libc.a. Checking _DYNAMIC is of no worth here. Suggested by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>. * nss/nss_files/files-parse.c: Define LOOKUP_NAME even if EXTERN_PARSER is defined. Sat Oct 5 17:05:36 1996 Andreas Jaeger <aj@arthur.pfalz.de> * Rules (dep-dummy-lib): Correct prototype for __dummy__. * crypt/md5-crypt.c: Fix typos in comments. * gmon/gmon.c: Provide prototypes. * db/makedb.c: Likewise. * locale/programs/xmalloc.c: Likewise. * stdio-common/bug11.c (main): Likewise. * stdio-common/bug7.c (main): Likewise. * stdio-common/bug8.c (main): Likewise. * stdio-common/bug9.c (main): Likewise. * stdio-common/scanf1.c (main): Likewise. * stdio-common/scanf2.c (main): Likewise. * stdio-common/scanf5.c (main): Likewise. * stdio-common/scanf6.c (main): Likewise. * stdio-common/scanf7.c (main): Likewise. * stdio-common/scanf8.c (main): Likewise. * stdio-common/temptest.c (main): Likewise. * stdio-common/test-fwrite.c (main): Likewise. * stdio-common/tst-printf.c: Likewise. * stdio-common/tstdiomisc.c: Likewise. * stdio-common/tstgetln.c (main): Likewise. * stdlib/testmb.c (main): Likewise. * stdio-common/scanf4.c (main): Correct prototype, remove unused variable n. * stdio-common/scanf3.c (main): Correct prototype, change declaration of s to reduce warnings. * stdio-common/bug10.c (main): Likewise. * stdio-common/tfformat.c: Provide prototype, remove unused reference to dump_stats, add braces in sprint_doubles. * stdio-common/tiformat.c: Likewise. * stdio-common/test_rdwr.c (main): Parameter `where' is long in printf call. Mon Oct 7 14:04:26 1996 NIIBE Yutaka <gniibe@mri.co.jp> * sysdeps/unix/sysv/linux/sys/soundcard.h: Fix typo. * shadow/putspent.c: Don't write colon after flag field. * sysdeps/unix/sysv/linux/net/if_ppp.h: New file. Wrapper around kernel header. * sysdeps/unix/sysv/linux/net/ppp-comp.h: Likewise. * sysdeps/unix/sysv/linux/net/ppp_defs.h: Likewise. * sysdeps/unix/sysv/linux/Dist: Mention new files. Mon Oct 7 00:58:19 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/i586/strchr.S: Correct handling of first bytes to get pointer aligned. Reported by Matthias Urlichs <smurf@noris.de>. * sysdeps/posix/euidaccess.c [_LIBC]: Avoid calling get?id functions by using __libc_enable_secure variable. * sysdeps/libm-i387/s_copysignl.S: Correct loading of return value.
1996-10-08 23:39:20 +00:00
static VOID *fixup_null_alloc __P ((size_t n));
update from main archvie 961013 Sun Oct 13 22:52:56 1996 Ulrich Drepper <drepper@cygnus.com> * shlib-versions: Add version number/name for ld.so. * Makeconfig: Move definition of rtld-installed-name after inclusion of soversions.mk. Don't add . before version number from shlib-versions file when when name does not start with digit. This is needed for ld.so. Sat Oct 12 20:31:58 1996 Richard Henderson <rth@tamu.edu> * libio/iogets.c: Warn when gets used. * stdio/gets.c: Strengthen the warning. Sat Oct 12 23:10:43 1996 Ulrich Drepper <drepper@cygnus.com> * libio/Makefile [_LIBC_REENTRANT] (routines): Add peekc. * libio/libio.h: Add prototypes for _IO_getc, _IO_putc, _IO_feof, _IO_ferror, _IO_peekc_locked, and _IO_ftrylockfile. Remove prototypes for _IO_getc_locked and _IO_putc_locked. [_IO_MTSAFE_IO]: Add weak aliases for _IO_flockfile and _IO_funlockfile. [! _IO_MTSAFE_IO]: Define _IO_ftrylockfile as empty. Define _IO_getc, _IO_peekc, _IO_putc, _IO_feof, _IO_ferror to appropriate values according to __USE_REENTRANT. * libio/stdio.h: Add prototype for ftrylockfile. [!_LIBC]: Define getc_locked, getchar_locked, putchar_locked, getc, getchar, putc, and putchar using _IO_* names. * libio/feof.c: Rename to _IO_feof and make feof weak alias. * libio/ferror.c: Rename to _IO_ferror and make ferror weak alias. * libio/getc.c: Rename to _IO_getc and make getc weak alias. * libio/putc.c: Rename to _IO_putc and make putc weak alias. * libio/putc_u.c: Don't define alias _IO_putc_unlocked. * libio/peekc.c: New file. * stdio-common/vfprintf.c (vfprintf): Unconditionally call __flockfile. * sysdeps/stub/locfile.c [USE_IN_LIBIO]: Also define _IO_* names. * crypt/Makefile (tests): Add md5test and md5c-test. * crypt/md5-crypt.c: Correct various error. Now md5_process_bytes is called, the buffer limit is honoured and a loop in a inner loop is corrected. * crypt/md5.h (struct md5_ctx): Add new fields. Add prototypes for new functions. * crypt/md5.c (md5_init_ctx): Initialize new fields. (md5_finish_ctx): New function. Like md5_read_ctx but before perform correct finalization. (md5_process_bytes): New function. Similar to md5_proces_block, but does not require input size to be multiple of 64. (md5_stream): Rewrite using md5_process_bytes and md5_finish_ctx. (md5_buffer): Likewise. (md5_process_block): Count number of bytes. * crypt/md5test.c: New file. Test program for MD5 functions. * crypt/md5c-test.c: New file: Test program for MD5 crypt function. * po/fr.po: Update. * time/strptime.c: Recognize %s, %u, %g, and %G format. * posix/getopt.c: Add some more casts and initializations to prevent warnings. Sat Oct 12 16:15:29 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/speed.c (speeds): Removed. We provide an extra function to provide this functionality. (cfgetospeed): Simply return masked value. (cfsetospeed): Don't use speeds array and so we can simply test the value of SPEED for illegal values. * termios/cfsetspeed.c: Rewrite. We convert here between the real values and the B* constants. Changes suggested by Uwe Ohse <uwe@tirka.gun.de>. Fri Oct 11 21:45:34 1996 Andreas Jaeger <aj@arthur.pfalz.de> * locale/programs/xstrdup.c: Define prototypes. * locale/programs/xmalloc.c: Likewise. * stdio-common/xbug.c (main): Change definition to avoid warning. Fri Oct 11 23:36:31 1996 Miles Bader <miles@gnu.ai.mit.edu> * db/hash/hash.c (__hash_open): Correctly test for a read-write db.
1996-10-13 21:35:39 +00:00
VOID *xmalloc __P ((size_t n));
VOID *xcalloc __P ((size_t n, size_t s));
VOID *xrealloc __P ((VOID *p, size_t n));
#else
VOID *calloc ();
VOID *malloc ();
VOID *realloc ();
void free ();
#endif
#include <libintl.h>
#include "error.h"
#ifndef _
# define _(str) gettext (str)
#endif
#ifndef EXIT_FAILURE
#define EXIT_FAILURE 4
#endif
/* Exit value when the requested amount of memory is not available.
The caller may set it to some other value. */
int xmalloc_exit_failure = EXIT_FAILURE;
static VOID *
fixup_null_alloc (n)
size_t n;
{
VOID *p;
p = 0;
if (n == 0)
p = malloc ((size_t) 1);
if (p == 0)
error (xmalloc_exit_failure, 0, _("memory exhausted"));
return p;
}
/* Allocate N bytes of memory dynamically, with error checking. */
VOID *
xmalloc (n)
size_t n;
{
VOID *p;
p = malloc (n);
if (p == 0)
p = fixup_null_alloc (n);
return p;
}
/* Allocate memory for N elements of S bytes, with error checking. */
VOID *
xcalloc (n, s)
size_t n, s;
{
VOID *p;
p = calloc (n, s);
if (p == 0)
p = fixup_null_alloc (n);
return p;
}
/* Change the size of an allocated block of memory P to N bytes,
with error checking.
If P is NULL, run xmalloc. */
VOID *
xrealloc (p, n)
VOID *p;
size_t n;
{
if (p == 0)
return xmalloc (n);
p = realloc (p, n);
if (p == 0)
p = fixup_null_alloc (n);
return p;
}