diff options
-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" |