Mercurial > hg > octave-lyh > gnulib-hg
changeset 4926:4132e2ba0a9c
New module 'xallocsa'.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Tue, 20 Jan 2004 14:07:25 +0000 |
parents | 62d6cb4f9bfb |
children | bc5f62830252 |
files | ChangeLog MODULES.html.sh lib/ChangeLog lib/xallocsa.c lib/xallocsa.h modules/xallocsa |
diffstat | 6 files changed, 111 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-01-20 Bruno Haible <bruno@clisp.org> + + * modules/xallocsa: New file. + * MODULES.html.sh (func_all_modules): Add xallocsa. + 2004-01-20 Bruno Haible <bruno@clisp.org> * modules/allocsa: New file.
--- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -1461,6 +1461,7 @@ func_module xalloc func_module alloca func_module allocsa + func_module xallocsa func_end_table element="Integer arithmetic functions <stdlib.h>"
--- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2003-11-24 Bruno Haible <bruno@clisp.org> + + * xallocsa.h: New file, from GNU gettext. + * xallocsa.c: New file, from GNU gettext. + 2003-11-24 Bruno Haible <bruno@clisp.org> * allocsa.h: New file, from GNU gettext.
new file mode 100644 --- /dev/null +++ b/lib/xallocsa.c @@ -0,0 +1,37 @@ +/* Safe automatic memory allocation with out of memory checking. + Copyright (C) 2003 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2003. + + 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 + +/* Specification. */ +#include "xallocsa.h" + +#include "xalloc.h" + +void * +xmallocsa (size_t n) +{ + void *p; + + p = mallocsa (n); + if (p == NULL) + xalloc_die (); + return p; +}
new file mode 100644 --- /dev/null +++ b/lib/xallocsa.h @@ -0,0 +1,42 @@ +/* Safe automatic memory allocation with out of memory checking. + Copyright (C) 2003 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2003. + + 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. */ + +#ifndef _XALLOCSA_H +#define _XALLOCSA_H + +#include "allocsa.h" + +/* xallocsa(N) is a checking safe variant of alloca(N). It allocates N bytes + of memory allocated on the stack, that must be freed using freesa() before + the function returns. Upon failure, it exits with an error message. */ +#if HAVE_ALLOCA +# define xallocsa(N) \ + ((N) < 4032 - sa_increment \ + ? (void *) ((char *) alloca ((N) + sa_increment) + sa_increment) \ + : xmallocsa (N)) +extern void * xmallocsa (size_t n); +#else +# define xallocsa(N) \ + xmalloc (N) +#endif + +/* Maybe we should also define a variant + xnallocsa (size_t n, size_t s) - behaves like xallocsa (n * s) + If this would be useful in your application. please speak up. */ + +#endif /* _XALLOCSA_H */
new file mode 100644 --- /dev/null +++ b/modules/xallocsa @@ -0,0 +1,21 @@ +Description: +Safe automatic memory allocation with out of memory checking. + +Files: +lib/xallocsa.h +lib/xallocsa.c + +Depends-on: +allocsa +xalloc + +configure.ac: + +Makefile.am: +lib_SOURCES += xallocsa.h xallocsa.c + +Include: +#include "xallocsa.h" + +Maintainer: +Bruno Haible