diff options
author | kan <kan@FreeBSD.org> | 2007-05-19 01:27:20 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2007-05-19 01:27:20 +0000 |
commit | 97ee9c3f29d2708e2a9383c5bfe5a3dd7dfe60dd (patch) | |
tree | e78bbacd6aa94e5c274d08bf2fa679b26cbf6b58 /contrib/gcclibs/libiberty/xmemdup.c | |
parent | 7d2f610e8aa1acfb76e67a4f7e95319fda7f50b6 (diff) | |
download | FreeBSD-src-97ee9c3f29d2708e2a9383c5bfe5a3dd7dfe60dd.zip FreeBSD-src-97ee9c3f29d2708e2a9383c5bfe5a3dd7dfe60dd.tar.gz |
GCC 4.2.0 release miscellaneous support libraries.
Diffstat (limited to 'contrib/gcclibs/libiberty/xmemdup.c')
-rw-r--r-- | contrib/gcclibs/libiberty/xmemdup.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/contrib/gcclibs/libiberty/xmemdup.c b/contrib/gcclibs/libiberty/xmemdup.c new file mode 100644 index 0000000..d483116 --- /dev/null +++ b/contrib/gcclibs/libiberty/xmemdup.c @@ -0,0 +1,38 @@ +/* xmemdup.c -- Duplicate a memory buffer, using xcalloc. + This trivial function is in the public domain. + Jeff Garzik, September 1999. */ + +/* + +@deftypefn Replacement void* xmemdup (void *@var{input}, size_t @var{copy_size}, size_t @var{alloc_size}) + +Duplicates a region of memory without fail. First, @var{alloc_size} bytes +are allocated, then @var{copy_size} bytes from @var{input} are copied into +it, and the new memory is returned. If fewer bytes are copied than were +allocated, the remaining memory is zeroed. + +@end deftypefn + +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "ansidecl.h" +#include "libiberty.h" + +#include <sys/types.h> /* For size_t. */ +#ifdef HAVE_STRING_H +#include <string.h> +#else +# ifdef HAVE_STRINGS_H +# include <strings.h> +# endif +#endif + +PTR +xmemdup (const PTR input, size_t copy_size, size_t alloc_size) +{ + PTR output = xcalloc (1, alloc_size); + return (PTR) memcpy (output, input, copy_size); +} |