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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (path.empty()) {
|
||||||
|
_exists = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
struct _stat buf ;
|
struct _stat buf ;
|
||||||
|
|
||||||
bool remove_trailing = false;
|
bool remove_trailing = false;
|
||||||
if ( path.length() > 1 && path[path.length()-1] == '/' )
|
string statPath(path);
|
||||||
remove_trailing=true;
|
if ((path.length() > 1) && (path.back() == '/')) {
|
||||||
if (_stat (path.substr(0,remove_trailing?path.length()-1:path.length()).c_str(), &buf ) < 0) {
|
statPath.pop_back();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_stat(statPath.c_str(), &buf ) < 0) {
|
||||||
_exists = false;
|
_exists = false;
|
||||||
} else {
|
} else {
|
||||||
_exists = true;
|
_exists = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user