50b009c5da
include/ChangeLog: * hashtab.h (HTAB_EMPTY_ENTRY): Use void * instead PTR. (HTAB_DELETED_ENTRY): Likewise. libiberty/ChangeLog: * alloca.c (C_alloca): Use void * instead PTR. * calloc.c (malloc): Likewise. (bzero): Likewise. (calloc): Likewise. * hashtab.c (find_empty_slot_for_expand): Likewise. (eq_pointer): Likewise. (htab_create_alloc_ex): Likewise. (htab_create_typed_alloc): Likewise. (htab_set_functions_ex): Likewise. (htab_delete): Likewise. (htab_empty): Likewise. (htab_expand): Likewise. (htab_find_with_hash): Likewise. (htab_find): Likewise. (htab_find_slot_with_hash): Likewise. (htab_find_slot): Likewise. (htab_remove_elt): Likewise. (htab_remove_elt_with_hash): Likewise. (htab_clear_slot): Likewise. (htab_traverse_noresize): Likewise. (htab_traverse): Likewise. (htab_hash_string): Likewise. (iterative_hash): Likewise. (hash_pointer): Likewise. * memchr.c (memchr): Likewise. * memcmp.c (memcmp): Likewise. * memcpy.c (memcpy): Likewise. * memmove.c (memmove): Likewise. * mempcpy.c (memcpy): Likewise. (mempcpy): Likewise. * memset.c (memset): Likewise. * objalloc.c (malloc): Likewise. (free): Likewise. (objalloc_create): Likewise. (_objalloc_alloc): Likewise. (objalloc_free_block): Likewise. * random.c (PTR): Likewise. (void): Likewise. (initstate): Likewise. (setstate): Likewise. * regex.c: Likewise. * spaces.c (malloc): Likewise. (free): Likewise. * stpcpy.c (memcpy): Likewise. * strdup.c (malloc): Likewise. (memcpy): Likewise. * strerror.c (malloc): Likewise. (memset): Likewise. * strndup.c (malloc): Likewise. (memcpy): Likewise. * strsignal.c (malloc): Likewise. (memset): Likewise. * vasprintf.c (malloc): Likewise. * vprintf-support.c: Likewise. * xatexit.c (malloc): Likewise. * xmalloc.c (xmalloc): Likewise. (xcalloc): Likewise. (xrealloc): Likewise. * xmemdup.c (xmemdup): Likewise.
42 lines
1.0 KiB
C
42 lines
1.0 KiB
C
/* xmemdup.c -- Duplicate a memory buffer, using xmalloc.
|
|
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
|
|
|
|
void *
|
|
xmemdup (const void *input, size_t copy_size, size_t alloc_size)
|
|
{
|
|
void *output = xmalloc (alloc_size);
|
|
if (alloc_size > copy_size)
|
|
memset ((char *) output + copy_size, 0, alloc_size - copy_size);
|
|
return (void *) memcpy (output, input, copy_size);
|
|
}
|