diff a09.c @ 38:52f7ad4c2ebb

a09 out range bug
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 17 Jul 2018 06:41:02 +0900
parents 01519215ec70
children 1d3057b6b786
line wrap: on
line diff
--- a/a09.c	Mon Jul 16 11:22:28 2018 +0900
+++ b/a09.c	Tue Jul 17 06:41:02 2018 +0900
@@ -938,7 +938,7 @@
  if(lp) {
   if(lp->cat!=13&&lp->cat!=6) {
    if(lp->cat!=2||lp->value!=loccounter)
-    ; // error|=8;
+     lp->value=loccounter; // error|=8;
   } else {
    lp->cat=2;
    lp->value=loccounter;
@@ -1244,7 +1244,8 @@
           if(exprcat==2)lp->cat=2;
           else lp->cat=0;
           lp->value=operand;
-         } // else error|=8;
+         } else // else error|=8;
+          lp->value=operand;
         }
         break;
  case 7:/* FCB */
@@ -1350,7 +1351,8 @@
           if(exprcat==2)lp->cat=3;
           else lp->cat=1;
           lp->value=operand;
-         } // else error|=8;
+         } else // else error|=8;
+          lp->value=operand;
         }
         break;
    case 2: /* END */
@@ -1658,7 +1660,6 @@
   exit(4);
  }
  processfile(srcname);
- } while (longer());
  fprintf(stderr,"%d Pass 2 errors.\n",errors);
  if(listing) {
   fprintf(listfile,"%d Pass 2 errors.\n",errors);
@@ -1670,6 +1671,7 @@
   fprintf(objfile,"S9030000FC\n");
  } 
  fclose(objfile);
+ } while (longer());
  return 0;
 }