]> thyrsus.com Git - intercal.git/commitdiff
Fixes for divide-by-0 in syslibc
authorAlex Smith <ais523@bham.ac.uk>
Fri, 4 Jul 2008 03:53:17 +0000 (23:53 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Thu, 26 Aug 2010 00:35:06 +0000 (20:35 -0400)
pit/explib/syslibc.c

index 4155fe17ce127bbbd1f1e92c46687a64ef1c2705..f209704fdbf76b918d6463027c7f0c62cfec3f7b 100644 (file)
@@ -80,16 +80,20 @@ ICK_EC_FUNC_START(ick_my_custom_syslib)
 
   ick_linelabel(1040);
   os2=ick_getonespot(2);
-  if(!os2) errout(1040, "division by zero");
-  ick_setonespot(3,ick_getonespot(1)/os2);
+  if(!os2)
+    ick_setonespot(3,0);
+  else
+    ick_setonespot(3,ick_getonespot(1)/os2);
   ick_resume(1);
   return;
 
   ick_linelabel(1050);
   os1=ick_getonespot(1);
   ts1=ick_gettwospot(1);
-  if(!os1) errout(1050, "division by zero");
-  ts1/=os1;
+  if(!os1)
+    ts1 = 0;
+  else
+    ts1/=os1;
   if(ts1>0xffffLU) errout(1050, "onespot overflow");
   ick_setonespot(2,(uint16_t)ts1);
   ick_resume(1);
@@ -146,8 +150,10 @@ ICK_EC_FUNC_START(ick_my_custom_syslib)
 
   ick_linelabel(1550);
   ts2=ick_gettwospot(2);
-  if(!ts2) errout(1550, "division by zero");
-  ick_settwospot(3,ick_gettwospot(1)/ts2);
+  if(!ts2)
+    ick_settwospot(3,0);
+  else
+    ick_settwospot(3,ick_gettwospot(1)/ts2);
   ick_resume(1);
   return;