File: 04-minus-number.patch

package info (click to toggle)
gforth 0.7.2%2Bdfsg1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 5,332 kB
  • ctags: 2,064
  • sloc: ansic: 8,506; sh: 3,643; lisp: 1,780; makefile: 984; yacc: 186; sed: 141; lex: 102; awk: 21
file content (46 lines) | stat: -rw-r--r-- 1,468 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Description: An upstream patch to not accept "-" as a valid number.
Origin: upstream; http://www.complang.tuwien.ac.at/viewcvs/cgi-bin/viewcvs.cgi/gforth/kernel/int.fs?r1=1.165&r2=1.166
Author: Anton Ertl <anton@mips.complang.tuwien.ac.at>
Last-Update: 2009-08-22

--- a/kernel/int.fs
+++ b/kernel/int.fs
@@ -163,21 +163,24 @@
     over c@ '' = if
 	1 /string s'>unumber? exit
     endif
-    base @ >r  getbase sign? >r
-    0. 2swap
-    BEGIN ( d addr len )
-	dup >r >number dup
-    WHILE \ there are characters left
-	dup r> -
-    WHILE \ the last >number parsed something
-	dup 1- dpl ! over c@ [char] . =
-    WHILE \ the current char is '.'
-	1 /string
-    REPEAT  THEN \ there are unparseable characters left
-	2drop rdrop false
+    base @ >r  getbase sign?
+    over if
+        >r 0. 2swap
+        BEGIN ( d addr len )
+            dup >r >number dup
+        WHILE \ there are characters left
+                dup r> -
+            WHILE \ the last >number parsed something
+                    dup 1- dpl ! over c@ [char] . =
+                WHILE \ the current char is '.'
+                        1 /string
+                REPEAT  THEN \ there are unparseable characters left
+            2drop rdrop false
+        ELSE
+            rdrop 2drop r> ?dnegate true
+        THEN
     ELSE
-	rdrop 2drop r> ?dnegate true
-    THEN
+        drop 2drop 0. false THEN
     r> base ! ;
 
 \ ouch, this is complicated; there must be a simpler way - anton