diff options
author | andri lim <jangko128@gmail.com> | 2017-07-14 21:28:39 +0700 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-07-14 16:28:39 +0200 |
commit | ca0155a45808aa047661cbcb3d31fef6f7088953 (patch) | |
tree | 4e931306dc99d51f504fbbb9424cae58b9d781eb | |
parent | 8bdcade1a08306ccf17c719838a97427a43a112c (diff) | |
download | Nim-ca0155a45808aa047661cbcb3d31fef6f7088953.tar.gz |
fixes #6046 parsecfg failed to parse negative int (#6097)
-rw-r--r-- | lib/pure/parsecfg.nim | 10 | ||||
-rw-r--r-- | tests/stdlib/tparsecfg.nim | 23 |
2 files changed, 30 insertions, 3 deletions
diff --git a/lib/pure/parsecfg.nim b/lib/pure/parsecfg.nim index 5bdd3bc40..2a5dbc8f8 100644 --- a/lib/pure/parsecfg.nim +++ b/lib/pure/parsecfg.nim @@ -320,9 +320,13 @@ proc rawGetTok(c: var CfgParser, tok: var Token) = tok.literal = "=" of '-': inc(c.bufpos) - if c.buf[c.bufpos] == '-': inc(c.bufpos) - tok.kind = tkDashDash - tok.literal = "--" + if c.buf[c.bufpos] == '-': + inc(c.bufpos) + tok.kind = tkDashDash + tok.literal = "--" + else: + dec(c.bufpos) + getSymbol(c, tok) of ':': tok.kind = tkColon inc(c.bufpos) diff --git a/tests/stdlib/tparsecfg.nim b/tests/stdlib/tparsecfg.nim new file mode 100644 index 000000000..1c214e5d2 --- /dev/null +++ b/tests/stdlib/tparsecfg.nim @@ -0,0 +1,23 @@ +discard """ + output: '''OK''' +""" + +#bug #6046 +import parsecfg + +var config = newConfig() +config.setSectionKey("foo","bar","-1") +config.setSectionKey("foo","foo","abc") +config.writeConfig("test.ini") + +# test.ini now contains +# [foo] +# bar=-1 +# foo=abc + +var config2 = loadConfig("test.ini") +let bar = config2.getSectionValue("foo","bar") +let foo = config2.getSectionValue("foo","foo") +assert(bar == "-1") +assert(foo == "abc") +echo "OK" |