Bug-fix - short-circuit path validation.
When an SGPath is empty, don't bother stat()-ing. This avoids an uninitialized-memory read inside the C-runtime on Windows.
This commit is contained in:
parent
1613257bdc
commit
dfd15cadab
@ -312,13 +312,20 @@ void SGPath::validate() const
|
||||
return;
|
||||
}
|
||||
|
||||
if (path.empty()) {
|
||||
_exists = false;
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
struct _stat buf ;
|
||||
|
||||
bool remove_trailing = false;
|
||||
if ( path.length() > 1 && path[path.length()-1] == '/' )
|
||||
remove_trailing=true;
|
||||
if (_stat (path.substr(0,remove_trailing?path.length()-1:path.length()).c_str(), &buf ) < 0) {
|
||||
string statPath(path);
|
||||
if ((path.length() > 1) && (path.back() == '/')) {
|
||||
statPath.pop_back();
|
||||
}
|
||||
|
||||
if (_stat(statPath.c_str(), &buf ) < 0) {
|
||||
_exists = false;
|
||||
} else {
|
||||
_exists = true;
|
||||
|
Loading…
Reference in New Issue
Block a user