1*38a75b98Sguenther /* $OpenBSD: wcsdup.c,v 1.3 2015/09/12 16:23:14 guenther Exp $ */ 22dcf140dSnicm /* $NetBSD: wcsdup.c,v 1.3 2008/05/26 13:17:48 haad Exp $ */ 32dcf140dSnicm 42dcf140dSnicm /* 52dcf140dSnicm * Copyright (C) 2006 Aleksey Cheusov 62dcf140dSnicm * 72dcf140dSnicm * This material is provided "as is", with absolutely no warranty expressed 82dcf140dSnicm * or implied. Any use is at your own risk. 92dcf140dSnicm * 102dcf140dSnicm * Permission to use or copy this software for any purpose is hereby granted 112dcf140dSnicm * without fee. Permission to modify the code and to distribute modified 122dcf140dSnicm * code is also granted without any restrictions. 132dcf140dSnicm */ 142dcf140dSnicm 152dcf140dSnicm #include <stdlib.h> 162dcf140dSnicm #include <wchar.h> 172dcf140dSnicm 182dcf140dSnicm wchar_t * wcsdup(const wchar_t * str)192dcf140dSnicmwcsdup(const wchar_t *str) 202dcf140dSnicm { 212dcf140dSnicm wchar_t *copy; 222dcf140dSnicm size_t len; 232dcf140dSnicm 242dcf140dSnicm len = wcslen(str) + 1; 2581469941Sderaadt copy = reallocarray(NULL, len, sizeof(wchar_t)); 262dcf140dSnicm 272dcf140dSnicm if (!copy) 282dcf140dSnicm return (NULL); 292dcf140dSnicm 302dcf140dSnicm return (wmemcpy(copy, str, len)); 312dcf140dSnicm } 32*38a75b98Sguenther DEF_WEAK(wcsdup); 33