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

Comparing ray/src/common/modobject.c (file contents):
Revision 2.16 by greg, Mon Dec 9 17:57:44 2013 UTC vs.
Revision 2.17 by greg, Mon Dec 9 18:17:13 2013 UTC

# Line 107 | Line 107 | eqobjects(                     /* check if two objects are equal */
107   )
108   {
109          OBJREC  *op1, *op2;
110 <        int     i;
110 >        int     i, n;
111  
112          while (obj1 != obj2) {
113                  if (obj1 == OVOID)
# Line 132 | Line 132 | eqobjects(                     /* check if two objects are equal */
132                  for (i = op1->oargs.nfargs; i-- > 0; )
133                          if (!eqreal(op1->oargs.farg[i], op2->oargs.farg[i]))
134                                  return(0);
135 <                for (i = op1->oargs.nsargs; i-- > 0; )
136 <                        if (strcmp(op1->oargs.sarg[i], op2->oargs.sarg[i]))
137 <                                return(0);
138 <                i = 0;
135 >                n = 0;
136                  switch (op1->otype) {   /* special cases (KEEP CONSISTENT!) */
137                  case MOD_ALIAS:
138                  case MAT_ILLUM:
139                  case MAT_MIRROR:
140 <                        i = (op1->oargs.nsargs > 0);
140 >                        n = (op1->oargs.nsargs > 0);
141                          break;
142                  case MIX_FUNC:
143                  case MIX_DATA:
144                  case MIX_TEXT:
145                  case MIX_PICT:
146 <                        i = 2*(op1->oargs.nsargs >= 2);
146 >                        n = 2*(op1->oargs.nsargs >= 2);
147                          break;
148                  case MAT_CLIP:
149 <                        i = op1->oargs.nsargs;
149 >                        n = op1->oargs.nsargs;
150                          break;
151                  }
152 <                while (i-- > 0)         /* check modifier references */
153 <                        if (!eqobjects( lastmod(obj1, op1->oargs.sarg[i]),
154 <                                        lastmod(obj2, op2->oargs.sarg[i]) ))
152 >                                        /* check other string arguments */
153 >                for (i = op1->oargs.nsargs; i-- > n; )
154 >                        if (strcmp(op1->oargs.sarg[i], op2->oargs.sarg[i]))
155 >                                return(0);
156 >                while (n-- > 0)         /* check modifier references */
157 >                        if (!eqobjects( lastmod(obj1, op1->oargs.sarg[n]),
158 >                                        lastmod(obj2, op2->oargs.sarg[n]) ))
159                                  return(0);
160                  obj1 = op1->omod;
161                  obj2 = op2->omod;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines