diff options
-rw-r--r-- | lib/pure/parseopt.nim | 3 | ||||
-rw-r--r-- | tests/misc/tparseopt.nim | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/pure/parseopt.nim b/lib/pure/parseopt.nim index baa46c65a..97b3fd51d 100644 --- a/lib/pure/parseopt.nim +++ b/lib/pure/parseopt.nim @@ -348,7 +348,8 @@ proc next*(p: var OptParser) {.rtl, extern: "npo$1".} = if i >= p.cmds[p.idx].len and p.idx < p.cmds.len and p.allowWhitespaceAfterColon: inc p.idx i = 0 - p.val = TaintedString p.cmds[p.idx].substr(i) + if p.idx < p.cmds.len: + p.val = TaintedString p.cmds[p.idx].substr(i) elif len(p.longNoVal) > 0 and p.key.string notin p.longNoVal and p.idx+1 < p.cmds.len: p.val = TaintedString p.cmds[p.idx+1] inc p.idx diff --git a/tests/misc/tparseopt.nim b/tests/misc/tparseopt.nim index b5da6b572..25ce77816 100644 --- a/tests/misc/tparseopt.nim +++ b/tests/misc/tparseopt.nim @@ -21,6 +21,7 @@ kind: cmdShortOption key:val -- r:1 kind: cmdShortOption key:val -- r:0 kind: cmdShortOption key:val -- l: kind: cmdShortOption key:val -- r:4 +kind: cmdLongOption key:val -- debug: ''' joinable: false """ @@ -62,7 +63,7 @@ else: block: echo "parseoptNoVal" # test NoVal mode with custom cmdline arguments - var argv = "--left --debug:3 -l -r:2 --debug 2 --debug=1 -r1 -r=0 -lr4" + var argv = "--left --debug:3 -l -r:2 --debug 2 --debug=1 -r1 -r=0 -lr4 --debug:" var p = parseopt.initOptParser(argv, shortNoVal = {'l'}, longNoVal = @["left"]) for kind, key, val in parseopt.getopt(p): |