summaryrefslogtreecommitdiff
path: root/lang/vslisp/patches/patch-ae
blob: 0b0a0b8d6550476d5c61e8d30d73b35ec3edef7d (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
$NetBSD: patch-ae,v 1.3 2016/01/17 15:14:47 joerg Exp $

Handle floating values properly.

--- src/lcore.c.orig	2000-05-07 20:26:14.000000000 +0000
+++ src/lcore.c
@@ -9,6 +9,8 @@
  *
  * */
 
+int InitMiscFuns(void);
+
 char IL_Version[] = "4.0"; 
 
 #ifndef lint
@@ -113,7 +115,7 @@ char *lText(ATOM a,char *TeXt)
   case 1: sprintf(TeXt,"[^H]");return TeXt;
   case 2: sprintf(TeXt,"[^F]");return TeXt;
   case 3: sprintf(TeXt,"[^T]");return TeXt;
-  case 4: sprintf(TeXt,"%g",*(double*)(a->a)); return TeXt;
+  case 4: sprintf(TeXt,"%g",a->d); return TeXt;
   case 6: sprintf(TeXt,"%d",*(int*)(a->a)); return TeXt;
   case 5: sprintf(TeXt,"[^II]");return TeXt;
   case 8: sprintf(TeXt,"[^IF]");return TeXt;
@@ -180,6 +182,7 @@ ATOM MakeDAtom(double d)
   tmp->a=(char *)malloc(sizeof(double));
   dd=(double *)(tmp->a);
   (*dd)=d;
+  tmp->d = d;
   tmp->g=1;tmp->f=4<<1;tmp->b=NULL;
   return tmp;
 }
@@ -197,9 +200,7 @@ ATOM MakeFAtom(FILE *d)
 /*--X FNAME: "GetDouble" DESC: "Takes a double from atom a" */
 double GetDbleOld(ATOM a)
 {
-  double *dd;
-  dd=(double*)(a->a);
-  return *dd;
+  return a->d;
 }
 
 /*--X VNAME: "Pos" DESC: "Temporary variable for a string to list conversion" */
@@ -233,12 +234,12 @@ ATOM reada(char *s)
       }
       else {
 	c[i]=s[Pos]; c[i+1]=0;
-	if(!(isdigit(c[i]) || (c[i]=='+') || (c[i]=='-') || (c[i]=='.'))) {
+	if(!(isdigit((unsigned char)c[i]) || (c[i]=='+') || (c[i]=='-') || (c[i]=='.'))) {
 	  if(i) {
-	    if(!((c[i]=='e' || c[i]=='E') && (c[i-1]=='.' || isdigit(c[i-1])))) fd=0;
+	    if(!((c[i]=='e' || c[i]=='E') && (c[i-1]=='.' || isdigit((unsigned char)c[i-1])))) fd=0;
 	  } else fd=0;
 	}
-	if(isdigit(c[i])) nd++;
+	if(isdigit((unsigned char)c[i])) nd++;
       }
     }
   c[i]=0;
@@ -249,7 +250,7 @@ ATOM reada(char *s)
     {
       double *d;
       t=mkatm(sizeof(double));t->f=4<<1;
-      d=(double*)(t->a);
+      d=&t->d;
       sscanf(c,"%lf",d);
     }
   return t;