Fix seriously broken implementation of GetMagicNumber.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18422 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2004-12-02 09:09:48 +00:00
parent fc757b5217
commit 86ac2dcda1
2 changed files with 12 additions and 8 deletions

View File

@ -178,11 +178,13 @@ bool Path::getMagicNumber(std::string& Magic, unsigned len) const {
int fd = ::open(path.c_str(),O_RDONLY);
if (fd < 0)
return false;
if (0 != ::read(fd, buf, len))
ssize_t bytes_read = ::read(fd, buf, len);
::close(fd);
if (ssize_t(len) != bytes_read) {
Magic.clear();
return false;
close(fd);
buf[len] = '\0';
Magic = buf;
}
Magic.assign(buf,len);
return true;
}

View File

@ -178,11 +178,13 @@ bool Path::getMagicNumber(std::string& Magic, unsigned len) const {
int fd = ::open(path.c_str(),O_RDONLY);
if (fd < 0)
return false;
if (0 != ::read(fd, buf, len))
ssize_t bytes_read = ::read(fd, buf, len);
::close(fd);
if (ssize_t(len) != bytes_read) {
Magic.clear();
return false;
close(fd);
buf[len] = '\0';
Magic = buf;
}
Magic.assign(buf,len);
return true;
}