/*
** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
** Distributed under the terms of the MIT License.
*/

#include <stdlib.h>
#include <string.h>

#include <errno_private.h>
#include <wchar_private.h>


wchar_t*
__wcsdup(const wchar_t* wcs)
{
	if (wcs == NULL)
		return NULL;

	{
		size_t bufferSize = (wcslen(wcs) + 1) * sizeof(wchar_t);
		wchar_t* dest = malloc(bufferSize);
		if (dest == NULL) {
			__set_errno(ENOMEM);
			return NULL;
		}

		memcpy(dest, wcs, bufferSize);

		return dest;
	}
}


B_DEFINE_WEAK_ALIAS(__wcsdup, wcsdup);