From 70f4df4cd8b51f7406914a38d268d0d431e8f55a Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Mon, 31 Aug 2015 20:00:31 +0200 Subject: fix dupa macros MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- include/string.h | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'include/string.h') diff --git a/include/string.h b/include/string.h index 6c5c80e..09bdc5e 100644 --- a/include/string.h +++ b/include/string.h @@ -655,9 +655,10 @@ void* memdup(const void*, size_t) */ # define strdupa(string) \ ({ \ - size_t n = strlen(string) + 1; \ - char* r = __builtin_alloca(n * sizeof(char)); \ - memcpy(r, string, n); \ + const char* __s = (string); \ + size_t __n = strlen(__s) + 1; \ + char* __r = __builtin_alloca(__n * sizeof(char)); \ + memcpy(__r, __s, __n); \ }) # endif @@ -676,9 +677,10 @@ void* memdup(const void*, size_t) */ # define strndupa(string, maxlen) \ ({ \ - size_t n = strnlen(string, maxlen) + 1; \ - char* r = __builtin_alloca(n * sizeof(char)); \ - memcpy(r, string, n); \ + const char* __s = (string); \ + size_t __n = strnlen(__s, (maxlen)) + 1; \ + char* __r = __builtin_alloca(__n * sizeof(char)); \ + memcpy(__r, __s, __n); \ }) # endif @@ -696,8 +698,9 @@ void* memdup(const void*, size_t) */ # define memdupa(segment, size) \ ({ \ - wchar_t* r = __builtin_alloca(size * sizeof(wchar_t)); \ - memcpy(r, segment, size); \ + size_t __n = (size); \ + wchar_t* __r = __builtin_alloca(__n * sizeof(wchar_t)); \ + memcpy(__r, (segment), __n); \ }) # endif # endif -- cgit v1.2.3-70-g09d2