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

Comparing ray/src/common/objutil.c (file contents):
Revision 2.11 by greg, Fri Feb 12 01:57:49 2021 UTC vs.
Revision 2.12 by greg, Fri Feb 12 20:44:04 2021 UTC

# Line 259 | Line 259 | replace_vertex(Scene *sc, int prev, int repl, double e
259          repl_tex[0] = -1;
260          for (f = sc->vert[repl].vflist; f != NULL; f = f->v[j].fnext) {
261                                          /* make sure prev isn't in there */
262 <                for (j = 0; j < f->nv; j++)
262 >                for (j = f->nv; j-- > 0; )
263                          if (f->v[j].vid == prev)
264                                  return(0);
265 <                for (j = 0; j < f->nv; j++)
265 >                for (j = f->nv; j-- > 0; )
266                          if (f->v[j].vid == repl)
267                                  break;
268 <                if (j >= f->nv)
268 >                if (j < 0)
269                          goto linkerr;
270                  if (f->v[j].tid < 0)
271                          continue;
# Line 290 | Line 290 | replace_vertex(Scene *sc, int prev, int repl, double e
290                                          /* get replacement normals */
291          repl_norm[0] = -1;
292          for (f = sc->vert[repl].vflist; f != NULL; f = f->v[j].fnext) {
293 <                for (j = 0; j < f->nv; j++)
293 >                for (j = f->nv; j-- > 0; )
294                          if (f->v[j].vid == repl)
295                                  break;
296                  if (f->v[j].nid < 0)
# Line 315 | Line 315 | replace_vertex(Scene *sc, int prev, int repl, double e
315          }
316                                          /* replace occurrences of vertex */
317          for (f = sc->vert[prev].vflist; f != NULL; f = f->v[j].fnext) {
318 <                for (j = 0; j < f->nv; j++)
318 >                for (j = f->nv; j-- > 0; )
319                          if (f->v[j].vid == prev)
320                                  break;
321 <                if (j >= f->nv)
321 >                if (j < 0)
322                          goto linkerr;
323                  /* XXX doesn't allow for multiple references to prev in face */
324                  f->v[j].vid = repl;     /* replace vertex itself */
# Line 432 | Line 432 | findDuplicateFaces(Scene *sc)
432                                                  /* look for duplicates */
433                  for (f1 = sc->vert[vid].vflist; f1 != NULL;
434                                          f1 = f1->v[j].fnext) {
435 <                        for (j = 0; j < f1->nv; j++)
435 >                        for (j = f1->nv; j-- > 0; )
436                                  if (f1->v[j].vid == vid)
437                                          break;
438 <                        if (j >= f1->nv)
438 >                        if (j < 0)
439                                  break;          /* missing link! */
440                          if (f1 == f)
441                                  continue;       /* shouldn't happen */
# Line 488 | Line 488 | deleteFaces(Scene *sc, int flreq, int flexc)
488                                          continue;
489                                  }
490                                  while (vf != NULL) {
491 <                                        for (j = 0; j < vf->nv; j++)
491 >                                        for (j = vf->nv; j-- > 0; )
492                                                  if (vf->v[j].vid == vid)
493                                                          break;
494 <                                        if (j >= vf->nv)
494 >                                        if (j < 0)
495                                                  break;  /* error */
496                                          if (vf->v[j].fnext == ftst) {
497                                                  vf->v[j].fnext =
# Line 588 | Line 588 | add2facelist(Scene *sc, Face *f, int i)
588          for ( ; ; ) {                           /* else find position */
589                  if (fp == f)
590                          return;                 /* already in list */
591 <                for (j = 0; j < fp->nv; j++)
591 >                for (j = fp->nv; j-- > 0; )
592                          if (fp->v[j].vid == vid)
593                                  break;
594 <                if (j >= fp->nv)
594 >                if (j < 0)
595                          error(CONSISTENCY, "Link error in add2facelist()");
596                  if (fp->v[j].fnext == NULL)
597                          break;                  /* reached the end */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines