summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKWSys Upstream <kwrobot@kitware.com>2016-01-11 14:01:00 (GMT)
committerBrad King <brad.king@kitware.com>2016-01-11 16:20:13 (GMT)
commit8e7356a2921c769c091c52140564b04108e692c4 (patch)
tree84079122649bc65d0c3a35f5371269a2cca67815
parentf2b0bf6e3f45f4f2a474732f29528299825bf7e9 (diff)
downloadCMake-8e7356a2921c769c091c52140564b04108e692c4.zip
CMake-8e7356a2921c769c091c52140564b04108e692c4.tar.gz
CMake-8e7356a2921c769c091c52140564b04108e692c4.tar.bz2
KWSys 2016-01-11 (e8bf616e)
Code extracted from: http://public.kitware.com/KWSys.git at commit e8bf616e3556368bf19dbebcd3529a89011ebacb (master). Upstream Shortlog ----------------- Brad King (1): e8bf616e SystemTools: Fix GetShortPath buffer sizing Jan van Dorsten (1): cfb2477d SystemTools: Simplify GetShortPath de-quoting step Robert Maynard (1): 8ef9773d Don't use clang diagnostic pragma's when compiling with ICC on OSX.
-rw-r--r--MD5.c4
-rw-r--r--ProcessUNIX.c4
-rw-r--r--SystemTools.cxx21
3 files changed, 10 insertions, 19 deletions
diff --git a/MD5.c b/MD5.c
index a147057..b9d25a8 100644
--- a/MD5.c
+++ b/MD5.c
@@ -29,7 +29,7 @@
it in a single source file instead of a separate header and
implementation file. */
-#if defined(__clang__)
+#if defined(__clang__) && !defined(__INTEL_COMPILER)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wcast-align"
#endif
@@ -433,7 +433,7 @@ static void md5_finish(md5_state_t *pms, md5_byte_t digest[16])
digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
}
-#if defined(__clang__)
+#if defined(__clang__) && !defined(__INTEL_COMPILER)
# pragma clang diagnostic pop
#endif
diff --git a/ProcessUNIX.c b/ProcessUNIX.c
index b0ddf5a..07c644b 100644
--- a/ProcessUNIX.c
+++ b/ProcessUNIX.c
@@ -1595,12 +1595,12 @@ static void kwsysProcessVolatileFree(volatile void* p)
{
/* clang has made it impossible to free memory that points to volatile
without first using special pragmas to disable a warning... */
-#if defined(__clang__)
+#if defined(__clang__) && !defined(__INTEL_COMPILER)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wcast-qual"
#endif
free((void*)p); /* The cast will silence most compilers, but not clang. */
-#if defined(__clang__)
+#if defined(__clang__) && !defined(__INTEL_COMPILER)
# pragma clang diagnostic pop
#endif
}
diff --git a/SystemTools.cxx b/SystemTools.cxx
index 82087f0..e3428f8 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -4491,36 +4491,27 @@ bool SystemTools::FileIsFullPath(const char* in_name, size_t len)
bool SystemTools::GetShortPath(const std::string& path, std::string& shortPath)
{
#if defined(_WIN32) && !defined(__CYGWIN__)
- const int size = int(path.size()) +1; // size of return
- char *tempPath = new char[size]; // create a buffer
- DWORD ret;
+ std::string tempPath = path; // create a buffer
// if the path passed in has quotes around it, first remove the quotes
if (!path.empty() && path[0] == '"' && *path.rbegin() == '"')
{
- strcpy(tempPath,path.c_str()+1);
- tempPath[size-2] = '\0';
- }
- else
- {
- strcpy(tempPath,path.c_str());
+ tempPath = path.substr(1, path.length()-2);
}
std::wstring wtempPath = Encoding::ToWide(tempPath);
- std::vector<wchar_t> buffer(wtempPath.size()+1);
- buffer[0] = 0;
+ DWORD ret = GetShortPathNameW(wtempPath.c_str(), NULL, 0);
+ std::vector<wchar_t> buffer(ret);
ret = GetShortPathNameW(wtempPath.c_str(),
- &buffer[0], static_cast<DWORD>(wtempPath.size()));
+ &buffer[0], static_cast<DWORD>(buffer.size()));
- if(buffer[0] == 0 || ret > wtempPath.size())
+ if (ret == 0)
{
- delete [] tempPath;
return false;
}
else
{
shortPath = Encoding::ToNarrow(&buffer[0]);
- delete [] tempPath;
return true;
}
#else