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

Comparing ray/src/common/mesh.c (file contents):
Revision 2.30 by greg, Tue Nov 27 01:04:33 2018 UTC vs.
Revision 2.31 by greg, Tue Nov 27 06:20:37 2018 UTC

# Line 287 | Line 287 | getmeshpseudo(                 /* get mesh pseudo object for materia
287          OBJECT  mo
288   )
289   {
290 <        if (mo < mp->mat0 || mo >= mp->mat0 + mp->nmats)
290 >        if ((mo < mp->mat0) | (mo >= mp->mat0 + mp->nmats))
291                  error(INTERNAL, "modifier out of range in getmeshpseudo");
292          if (mp->pseudo == NULL) {
293                  int     i;
# Line 374 | Line 374 | addmeshvert(                   /* find/add a mesh vertex */
374                  goto nomem;
375          if (lvp->key == NULL) {
376                  lvp->key = (char *)malloc(sizeof(MCVERT)+sizeof(int32));
377 <                memcpy((void *)lvp->key, (void *)&cv, sizeof(MCVERT));
377 >                memcpy(lvp->key, &cv, sizeof(MCVERT));
378          }
379          if (lvp->data == NULL) {        /* new vertex */
380                  MESHPATCH       *pp;
# Line 385 | Line 385 | addmeshvert(                   /* find/add a mesh vertex */
385                                  goto nomem;
386                          mp->npatches = 1;
387                  } else if (mp->patch[mp->npatches-1].nverts >= 256) {
388 +                        if (mp->npatches >= 1L<<22)
389 +                                error(INTERNAL, "too many mesh patches");
390                          if (mp->npatches % MPATCHBLKSIZ == 0) {
391 <                                mp->patch = (MESHPATCH *)realloc(
392 <                                                (void *)mp->patch,
393 <                                        (mp->npatches + MPATCHBLKSIZ)*
394 <                                                sizeof(MESHPATCH));
393 <                                memset((void *)(mp->patch + mp->npatches), '\0',
391 >                                mp->patch = (MESHPATCH *)realloc(mp->patch,
392 >                                                (mp->npatches + MPATCHBLKSIZ)*
393 >                                                        sizeof(MESHPATCH));
394 >                                memset((mp->patch + mp->npatches), '\0',
395                                          MPATCHBLKSIZ*sizeof(MESHPATCH));
396                          }
397 <                        if (mp->npatches++ >= 1L<<22)
397 <                                error(INTERNAL, "too many mesh patches");
397 >                        mp->npatches++;
398                  }
399                  pp = &mp->patch[mp->npatches-1];
400                  if (pp->xyz == NULL) {
# Line 726 | Line 726 | freemesh(MESH *ms)             /* free mesh data */
726                  MESHPATCH       *pp = ms->patch + ms->npatches;
727                  while (pp-- > ms->patch) {
728                          if (pp->j2tri != NULL)
729 <                                free((void *)pp->j2tri);
729 >                                free(pp->j2tri);
730                          if (pp->j1tri != NULL)
731 <                                free((void *)pp->j1tri);
731 >                                free(pp->j1tri);
732                          if (pp->tri != NULL)
733 <                                free((void *)pp->tri);
733 >                                free(pp->tri);
734                          if (pp->uv != NULL)
735 <                                free((void *)pp->uv);
735 >                                free(pp->uv);
736                          if (pp->norm != NULL)
737 <                                free((void *)pp->norm);
737 >                                free(pp->norm);
738                          if (pp->xyz != NULL)
739 <                                free((void *)pp->xyz);
739 >                                free(pp->xyz);
740 >                        if (pp->trimat != NULL)
741 >                                free(pp->trimat);
742                  }
743 <                free((void *)ms->patch);
743 >                free(ms->patch);
744          }
745          if (ms->pseudo != NULL)
746 <                free((void *)ms->pseudo);
747 <        free((void *)ms);
746 >                free(ms->pseudo);
747 >        free(ms);
748   }
749  
750  
# Line 752 | Line 754 | freemeshinst(OBJREC *o)                /* free mesh instance */
754          if (o->os == NULL)
755                  return;
756          freemesh((*(MESHINST *)o->os).msh);
757 <        free((void *)o->os);
757 >        free(o->os);
758          o->os = NULL;
759   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines