#479: avoid issues due to trailing path separators
Cut trailing separators when converting from string to sgpath. Also, SGPath::fix does NOT replace ":". It only replaces "\" with "/", so the "i!=1" check for Windows made no sense (rule #9: never believe a source code comment).
This commit is contained in:
parent
b261836f71
commit
54db2e0ab1
@ -1,5 +1,5 @@
|
||||
/** \file debug_types.h
|
||||
* Define the various logging classes and prioritiess
|
||||
* Define the various logging classes and priorities
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -30,7 +30,7 @@ typedef enum {
|
||||
SG_AI = 0x00080000,
|
||||
SG_ENVIRONMENT = 0x00100000,
|
||||
SG_SOUND = 0x00200000,
|
||||
SG_UNDEFD = 0x00400000, // For range checkingng
|
||||
SG_UNDEFD = 0x00400000, // For range checking
|
||||
|
||||
SG_ALL = 0xFFFFFFFF
|
||||
} sgDebugClass;
|
||||
|
@ -53,22 +53,20 @@ static const char sgSearchPathSep = ':';
|
||||
#endif
|
||||
|
||||
|
||||
// If Unix, replace all ":" with "/". In windoze, allow the
|
||||
// second character to be a ":" for things like c:\foo\bar
|
||||
|
||||
// For windows, replace "\" by "/".
|
||||
void
|
||||
SGPath::fix()
|
||||
{
|
||||
for ( string::size_type i = 0; i < path.size(); ++i ) {
|
||||
#if defined( WIN32 )
|
||||
// for windoze, don't replace the ":" for the second character
|
||||
if ( i == 1 ) {
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
if ( path[i] == sgDirPathSepBad ) {
|
||||
path[i] = sgDirPathSep;
|
||||
string::size_type sz = path.size();
|
||||
for ( string::size_type i = 0; i < sz; ++i ) {
|
||||
if ( path[i] == sgDirPathSepBad ) {
|
||||
path[i] = sgDirPathSep;
|
||||
}
|
||||
}
|
||||
// drop trailing "/"
|
||||
while ((sz>1)&&(path[sz-1]==sgDirPathSep))
|
||||
{
|
||||
path.resize(--sz);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user