make var string return var char w/ BackwardsIndex (#15461)
* make var string return var char w/ BackwardsIndex fixes #14497 * work around VM bug * properly workaround again
This commit is contained in:
parent
ef2677f5f3
commit
527e792827
3 changed files with 11 additions and 3 deletions
|
|
@ -69,7 +69,7 @@ proc addNormalizePath*(x: string; result: var string; state: var int;
|
|||
while hasNext(it, x):
|
||||
let b = next(it, x)
|
||||
if (state shr 1 == 0) and isSlash(x, b):
|
||||
if result.len == 0 or result[^1] notin {DirSep, AltSep}:
|
||||
if result.len == 0 or result[result.len - 1] notin {DirSep, AltSep}:
|
||||
result.add dirSep
|
||||
state = state or 1
|
||||
elif isDotDot(x, b):
|
||||
|
|
@ -87,13 +87,13 @@ proc addNormalizePath*(x: string; result: var string; state: var int;
|
|||
setLen(result, d-1)
|
||||
dec state, 2
|
||||
else:
|
||||
if result.len > 0 and result[^1] notin {DirSep, AltSep}:
|
||||
if result.len > 0 and result[result.len - 1] notin {DirSep, AltSep}:
|
||||
result.add dirSep
|
||||
result.add substr(x, b[0], b[1])
|
||||
elif isDot(x, b):
|
||||
discard "discard the dot"
|
||||
elif b[1] >= b[0]:
|
||||
if result.len > 0 and result[^1] notin {DirSep, AltSep}:
|
||||
if result.len > 0 and result[result.len - 1] notin {DirSep, AltSep}:
|
||||
result.add dirSep
|
||||
result.add substr(x, b[0], b[1])
|
||||
inc state, 2
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue