Fixed some goto-related initialization bugs.
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Fri, 5 May 2000 01:30:31 +0000 (01:30 +0000)
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Fri, 5 May 2000 01:30:31 +0000 (01:30 +0000)
libguile/ChangeLog
libguile/numbers.c

index 1dd51ec..7f27434 100644 (file)
@@ -1,3 +1,8 @@
+2000-05-05  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_logand, scm_logior, scm_logxor, scm_logtest):
+       Fixed some goto-related initialization bugs (introduced by me).
+
 2000-05-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * numbers.h (SCM_INUM0):  Uses SCM_MAKINUM instead of SCM_PACK.
index 1735203..9116735 100644 (file)
@@ -711,6 +711,8 @@ SCM_DEFINE1 (scm_logand, "logand", scm_tc7_asubr,
             "   @result{} \"1000\"")
 #define FUNC_NAME s_scm_logand
 {
+  long int nn1;
+
   if (SCM_UNBNDP (n2)) {
     if (SCM_UNBNDP (n1)) {
       return SCM_MAKINUM (-1);
@@ -729,7 +731,7 @@ SCM_DEFINE1 (scm_logand, "logand", scm_tc7_asubr,
   }
 
   if (SCM_INUMP (n1)) {
-    long nn1 = SCM_INUM (n1);
+    nn1 = SCM_INUM (n1);
     if (SCM_INUMP (n2)) {
       long nn2 = SCM_INUM (n2);
       return SCM_MAKINUM (nn1 & nn2);
@@ -762,6 +764,7 @@ SCM_DEFINE1 (scm_logand, "logand", scm_tc7_asubr,
   } else if (SCM_BIGP (n1)) {
     if (SCM_INUMP (n2)) {
       SCM_SWAP (n1, n2);
+      nn1 = SCM_INUM (n1);
       goto intbig;
     } else if (SCM_BIGP (n2)) {
       if (SCM_NUMDIGS (n1) > SCM_NUMDIGS (n2)) {
@@ -795,6 +798,8 @@ SCM_DEFINE1 (scm_logior, "logior", scm_tc7_asubr,
             "@end lisp")
 #define FUNC_NAME s_scm_logior
 {
+  long int nn1;
+
   if (SCM_UNBNDP (n2)) {
     if (SCM_UNBNDP (n1)) {
       return SCM_INUM0;
@@ -811,7 +816,7 @@ SCM_DEFINE1 (scm_logior, "logior", scm_tc7_asubr,
   }
 
   if (SCM_INUMP (n1)) {
-    long nn1 = SCM_INUM (n1);
+    nn1 = SCM_INUM (n1);
     if (SCM_INUMP (n2)) {
       long nn2 = SCM_INUM (n2);
       return SCM_MAKINUM (nn1 | nn2);
@@ -845,6 +850,7 @@ SCM_DEFINE1 (scm_logior, "logior", scm_tc7_asubr,
   } else if (SCM_BIGP (n1)) {
     if (SCM_INUMP (n2)) {
       SCM_SWAP (n1, n2); 
+      nn1 = SCM_INUM (n1);
       goto intbig;
     } else if (SCM_BIGP (n2)) {
       if (SCM_NUMDIGS (n1) > SCM_NUMDIGS (n2)) {
@@ -878,6 +884,8 @@ SCM_DEFINE1 (scm_logxor, "logxor", scm_tc7_asubr,
             "@end lisp")
 #define FUNC_NAME s_scm_logxor
 {
+  long int nn1;
+
   if (SCM_UNBNDP (n2)) {
     if (SCM_UNBNDP (n1)) {
       return SCM_INUM0;
@@ -894,7 +902,7 @@ SCM_DEFINE1 (scm_logxor, "logxor", scm_tc7_asubr,
   }
 
   if (SCM_INUMP (n1)) {
-    long nn1 = SCM_INUM (n1);
+    nn1 = SCM_INUM (n1);
     if (SCM_INUMP (n2)) {
       long nn2 = SCM_INUM (n2);
       return SCM_MAKINUM (nn1 ^ nn2);
@@ -918,6 +926,7 @@ SCM_DEFINE1 (scm_logxor, "logxor", scm_tc7_asubr,
   } else if (SCM_BIGP (n1)) {
     if (SCM_INUMP (n2)) {
       SCM_SWAP (n1, n2);
+      nn1 = SCM_INUM (n1);
       goto intbig;
     } else if (SCM_BIGP (n2)) {
       if (SCM_NUMDIGS(n1) > SCM_NUMDIGS(n2)) {
@@ -944,8 +953,10 @@ SCM_DEFINE (scm_logtest, "logtest", 2, 0, 0,
            "@end example")
 #define FUNC_NAME s_scm_logtest
 {
+  long int nn1;
+
   if (SCM_INUMP (n1)) {
-    long nn1 = SCM_INUM (n1);
+    nn1 = SCM_INUM (n1);
     if (SCM_INUMP (n2)) {
       long nn2 = SCM_INUM (n2);
       return SCM_BOOL (nn1 & nn2);
@@ -969,6 +980,7 @@ SCM_DEFINE (scm_logtest, "logtest", 2, 0, 0,
   } else if (SCM_BIGP (n1)) {
     if (SCM_INUMP (n2)) {
       SCM_SWAP (n1, n2);
+      nn1 = SCM_INUM (n1);
       goto intbig;
     } else if (SCM_BIGP (n2)) {
       if (SCM_NUMDIGS (n1) > SCM_NUMDIGS (n2)) {