/* 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);
}
