summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/pure/parsecfg.nim10
-rw-r--r--tests/stdlib/tparsecfg.nim23
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"