summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-01-26 12:55:36 +0100
committerAraq <rumpf_a@web.de>2015-01-27 01:33:48 +0100
commitb2d18899515809c508d656efdd800a94c7118bd9 (patch)
tree464b0c0e4fe056c2f5f39d3df04b224c65f167be
parentefb5ec3e734fa4042555c41fde7a117b4b83ba46 (diff)
downloadNim-b2d18899515809c508d656efdd800a94c7118bd9.tar.gz
bugfix: don't overwrite the number value in case of a parsing error
-rw-r--r--lib/pure/parseutils.nim5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/pure/parseutils.nim b/lib/pure/parseutils.nim
index 1efb141fc..9844201fe 100644
--- a/lib/pure/parseutils.nim
+++ b/lib/pure/parseutils.nim
@@ -228,7 +228,7 @@ proc parseInt*(s: string, number: var int, start = 0): int {.
   if (sizeof(int) <= 4) and
       ((res < low(int)) or (res > high(int))):
     raise newException(OverflowError, "overflow")
-  else:
+  elif result != 0:
     number = int(res)
 
 proc parseBiggestFloat*(s: string, number: var BiggestFloat, start = 0): int {.
@@ -244,7 +244,8 @@ proc parseFloat*(s: string, number: var float, start = 0): int {.
   ## error.
   var bf: BiggestFloat
   result = parseBiggestFloat(s, bf, start)
-  number = bf
+  if result != 0:
+    number = bf
   
 type
   InterpolatedKind* = enum   ## describes for `interpolatedFragments`