summaryrefslogtreecommitdiff
path: root/lib/Support/Errno.cpp
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2012-09-28 14:15:28 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2012-09-28 14:15:28 +0000
commit04cb564c8da7a26a04c7c6b3157dad5f3244063d (patch)
tree468cfdb1d93ab04c60b39b24a93c22665284e8eb /lib/Support/Errno.cpp
parent8be16fe70395c30762081388b8f6df323ddc82eb (diff)
downloadllvm-04cb564c8da7a26a04c7c6b3157dad5f3244063d.tar.gz
llvm-04cb564c8da7a26a04c7c6b3157dad5f3244063d.tar.bz2
llvm-04cb564c8da7a26a04c7c6b3157dad5f3244063d.tar.xz
Replace the use of strncpy() and sprintf() with std::string and LLVM streams.
Patch by Martinez, Javier E. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164822 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/Errno.cpp')
-rw-r--r--lib/Support/Errno.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/Support/Errno.cpp b/lib/Support/Errno.cpp
index dd218f6099..00be43b750 100644
--- a/lib/Support/Errno.cpp
+++ b/lib/Support/Errno.cpp
@@ -13,6 +13,7 @@
#include "llvm/Support/Errno.h"
#include "llvm/Config/config.h" // Get autoconf configuration settings
+#include "llvm/Support/raw_ostream.h"
#if HAVE_STRING_H
#include <string.h>
@@ -39,7 +40,7 @@ std::string StrError(int errnum) {
const int MaxErrStrLen = 2000;
char buffer[MaxErrStrLen];
buffer[0] = '\0';
- char* str = buffer;
+ std::string str;
#ifdef HAVE_STRERROR_R
// strerror_r is thread-safe.
if (errnum)
@@ -49,6 +50,7 @@ std::string StrError(int errnum) {
str = strerror_r(errnum,buffer,MaxErrStrLen-1);
# else
strerror_r(errnum,buffer,MaxErrStrLen-1);
+ str = buffer;
# endif
#elif HAVE_DECL_STRERROR_S // "Windows Secure API"
if (errnum)
@@ -58,12 +60,13 @@ std::string StrError(int errnum) {
// the buffer as fast as possible to minimize impact
// of collision of strerror in multiple threads.
if (errnum)
- strncpy(buffer,strerror(errnum),MaxErrStrLen-1);
- buffer[MaxErrStrLen-1] = '\0';
+ str = strerror(errnum);
#else
// Strange that this system doesn't even have strerror
// but, oh well, just use a generic message
- sprintf(buffer, "Error #%d", errnum);
+ raw_string_ostream stream(str);
+ stream << "Error #" << errnum;
+ stream.flush();
#endif
return str;
}