ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/calexpr.c
(Generate patch)

Comparing ray/src/common/calexpr.c (file contents):
Revision 2.38 by greg, Sat Dec 7 16:38:08 2019 UTC vs.
Revision 2.41 by greg, Sat Jan 15 02:00:21 2022 UTC

# Line 19 | Line 19 | static const char      RCSid[] = "$Id$";
19  
20   #include "copyright.h"
21  
22 #include  <stdio.h>
23 #include  <string.h>
22   #include  <ctype.h>
23   #include  <errno.h>
24   #include  <math.h>
# Line 200 | Line 198 | epfree(                        /* free a parse tree */
198  
199      }
200  
201 <    efree((char *)epar);
201 >    efree(epar);
202   }
203  
204                                  /* the following used to be a switch */
# Line 637 | Line 635 | getE2(void)                    /* E2 -> E2 MULOP E3 */
635                  } else if (ep1->type == NUM && ep1->v.num == 0) {
636                          epfree(ep3);            /* (0 * E3) or (0 / E3) */
637                          ep1->sibling = NULL;
638 <                        efree((char *)ep2);
638 >                        efree(ep2);
639                          ep2 = ep1;
640                  }
641          }
# Line 668 | Line 666 | getE3(void)                    /* E3 -> E4 ^ E3 */
666                  } else if (ep1->type == NUM && ep1->v.num == 0) {
667                          epfree(ep3);            /* (0 ^ E3) */
668                          ep1->sibling = NULL;
669 <                        efree((char *)ep2);
669 >                        efree(ep2);
670                          ep2 = ep1;
671                  } else if ((ep3->type == NUM && ep3->v.num == 0) ||
672                                  (ep1->type == NUM && ep1->v.num == 1)) {
# Line 676 | Line 674 | getE3(void)                    /* E3 -> E4 ^ E3 */
674                          ep2 = newnode();
675                          ep2->type = NUM;
676                          ep2->v.num = 1;
677 +                } else if (ep3->type == NUM && ep3->v.num == 1) {
678 +                        efree(ep3);     /* (E4 ^ 1) */
679 +                        ep1->sibling = NULL;
680 +                        efree(ep2);
681 +                        ep2 = ep1;
682                  }
683          }
684          return(ep2);
# Line 697 | Line 700 | getE4(void)                    /* E4 -> ADDOP E5 */
700          }
701          if (ep2->type == UMINUS) {      /* don't generate -(-E5) */
702              ep1 = ep2->v.kid;
703 <            efree((char *)ep2);
703 >            efree(ep2);
704              return(ep1);
705          }
706          ep1 = newnode();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines