1/* 2** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved. 3** Distributed under the terms of the MIT License. 4*/ 5 6#include <stdlib.h> 7#include <string.h> 8 9#include <errno_private.h> 10#include <wchar_private.h> 11 12 13wchar_t* 14__wcsdup(const wchar_t* wcs) 15{ 16 if (wcs == NULL) 17 return NULL; 18 19 { 20 size_t bufferSize = (wcslen(wcs) + 1) * sizeof(wchar_t); 21 wchar_t* dest = malloc(bufferSize); 22 if (dest == NULL) { 23 __set_errno(ENOMEM); 24 return NULL; 25 } 26 27 memcpy(dest, wcs, bufferSize); 28 29 return dest; 30 } 31} 32 33 34B_DEFINE_WEAK_ALIAS(__wcsdup, wcsdup); 35