1 /* $OpenBSD: wcsdup.c,v 1.3 2015/09/12 16:23:14 guenther Exp $ */ 2 /* $NetBSD: wcsdup.c,v 1.3 2008/05/26 13:17:48 haad Exp $ */ 3 4 /* 5 * Copyright (C) 2006 Aleksey Cheusov 6 * 7 * This material is provided "as is", with absolutely no warranty expressed 8 * or implied. Any use is at your own risk. 9 * 10 * Permission to use or copy this software for any purpose is hereby granted 11 * without fee. Permission to modify the code and to distribute modified 12 * code is also granted without any restrictions. 13 */ 14 15 #include <stdlib.h> 16 #include <wchar.h> 17 18 wchar_t * wcsdup(const wchar_t * str)19wcsdup(const wchar_t *str) 20 { 21 wchar_t *copy; 22 size_t len; 23 24 len = wcslen(str) + 1; 25 copy = reallocarray(NULL, len, sizeof(wchar_t)); 26 27 if (!copy) 28 return (NULL); 29 30 return (wmemcpy(copy, str, len)); 31 } 32 DEF_WEAK(wcsdup); 33