Skip to content

Commit

Permalink
fix issue #8251 ospaths.isAbsolute: out of bound errors (#8291)
Browse files Browse the repository at this point in the history
* fix issue #8251 ospaths.isAbsolute: out of bound errors

* address comments

* add reference to a spec for quirky macos paths
  • Loading branch information
timotheecour authored and Varriount committed Jul 13, 2018
1 parent 3163a0f commit 40f44a0
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions lib/pure/ospaths.nim
Original file line number Diff line number Diff line change
Expand Up @@ -423,12 +423,22 @@ proc isAbsolute*(path: string): bool {.rtl, noSideEffect, extern: "nos$1".} =
## Checks whether a given `path` is absolute.
##
## On Windows, network paths are considered absolute too.
runnableExamples:
doAssert(not "".isAbsolute)
doAssert(not ".".isAbsolute)
when defined(posix):
doAssert "/".isAbsolute
doAssert(not "a/".isAbsolute)

if len(path) == 0: return false

when doslikeFileSystem:
var len = len(path)
result = (len > 0 and path[0] in {'/', '\\'}) or
result = (path[0] in {'/', '\\'}) or
(len > 1 and path[0] in {'a'..'z', 'A'..'Z'} and path[1] == ':')
elif defined(macos):
result = path.len > 0 and path[0] != ':'
# according to https://perldoc.perl.org/File/Spec/Mac.html `:a` is a relative path
result = path[0] != ':'
elif defined(RISCOS):
result = path[0] == '$'
elif defined(posix):
Expand Down

0 comments on commit 40f44a0

Please sign in to comment.