Be more conservative about gethostname()'s truncating behaviour
Don't assume it will provide an error or null-terminate the string on truncation, since POSIX doesn't guarantee either behaviour (although Linux and Darwin at least will do the 'right thing'). llvm-svn: 228613
This commit is contained in:
parent
5fc82fd6b5
commit
541c202be8
|
@ -2029,8 +2029,12 @@ std::string CompilerInvocation::getModuleHash() const {
|
|||
// running, so mangle the hostname in to the module hash to separate them.
|
||||
char hostname[256];
|
||||
hostname[0] = 0;
|
||||
if (gethostname(hostname, 255) == 0)
|
||||
if (gethostname(hostname, 255) == 0) {
|
||||
// Forcibly null-terminate the result, since POSIX doesn't require that
|
||||
// truncation result in an error or that truncated names be null-terminated.
|
||||
hostname[sizeof(hostname)-1] = 0;
|
||||
code = hash_combine(code, StringRef(hostname));
|
||||
}
|
||||
// Ignore failures in gethostname() by not including the hostname in the hash.
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue