ubsan: nds32: left shift cannot be represented in type 'int'
[deliverable/binutils-gdb.git] / libiberty / xstrndup.c
index 68c5f453c7d508a099dbea793ceb8e5b69a8ba7f..bb0b512dce58ccd8c1f8c4ff163cba2b9212d37a 100644 (file)
@@ -1,5 +1,5 @@
 /* Implement the xstrndup function.
-   Copyright (C) 2005 Free Software Foundation, Inc.
+   Copyright (C) 2005-2019 Free Software Foundation, Inc.
    Written by Kaveh R. Ghazi <ghazi@caip.rutgers.edu>.
 
 This file is part of the libiberty library.
@@ -48,13 +48,10 @@ char *
 xstrndup (const char *s, size_t n)
 {
   char *result;
-  size_t len = strlen (s);
+  size_t len = strnlen (s, n);
 
-  if (n < len)
-    len = n;
-
-  result = xmalloc (len + 1);
+  result = XNEWVEC (char, len + 1);
 
   result[len] = '\0';
-  return memcpy (result, s, len);
+  return (char *) memcpy (result, s, len);
 }
This page took 0.025269 seconds and 4 git commands to generate.