| 510 |  | } | 
| 511 |  | } | 
| 512 |  | /* double link */ | 
| 513 | < | pp = &mp->patch[pn[2]]; | 
| 513 | > | pp = &mp->patch[pn[i=0]]; | 
| 514 | > | if (pp->nj2tris >= 256) | 
| 515 | > | pp = &mp->patch[pn[i=1]]; | 
| 516 | > | if (pp->nj2tris >= 256) | 
| 517 | > | pp = &mp->patch[pn[i=2]]; | 
| 518 | > | if (pp->nj2tris >= 256) | 
| 519 | > | error(INTERNAL, "too many patch triangles in addmeshtri"); | 
| 520 |  | if (pp->j2tri == NULL) { | 
| 521 |  | pp->j2tri = (struct PJoin2 *)malloc( | 
| 522 |  | 256*sizeof(struct PJoin2)); | 
| 523 |  | if (pp->j2tri == NULL) | 
| 524 |  | goto nomem; | 
| 525 |  | } | 
| 520 | – | if (pp->nj2tris >= 256) | 
| 521 | – | error(INTERNAL, "too many patch triangles in addmeshtri"); | 
| 522 | – | pp->j2tri[pp->nj2tris].v1j = vid[0]; | 
| 523 | – | pp->j2tri[pp->nj2tris].v2j = vid[1]; | 
| 524 | – | pp->j2tri[pp->nj2tris].v3 = vid[2] & 0xff; | 
| 526 |  | pp->j2tri[pp->nj2tris].mat = mo; | 
| 527 | < | return(pn[2] << 10 | 0x300 | pp->nj2tris++); | 
| 527 | > | switch (i) { | 
| 528 | > | case 0: | 
| 529 | > | pp->j2tri[pp->nj2tris].v3 = vid[0] & 0xff; | 
| 530 | > | pp->j2tri[pp->nj2tris].v1j = vid[1]; | 
| 531 | > | pp->j2tri[pp->nj2tris].v2j = vid[2]; | 
| 532 | > | return(pn[0] << 10 | 0x300 | pp->nj2tris++); | 
| 533 | > | case 1: | 
| 534 | > | pp->j2tri[pp->nj2tris].v2j = vid[0]; | 
| 535 | > | pp->j2tri[pp->nj2tris].v3 = vid[1] & 0xff; | 
| 536 | > | pp->j2tri[pp->nj2tris].v1j = vid[2]; | 
| 537 | > | return(pn[1] << 10 | 0x300 | pp->nj2tris++); | 
| 538 | > | case 2: | 
| 539 | > | pp->j2tri[pp->nj2tris].v1j = vid[0]; | 
| 540 | > | pp->j2tri[pp->nj2tris].v2j = vid[1]; | 
| 541 | > | pp->j2tri[pp->nj2tris].v3 = vid[2] & 0xff; | 
| 542 | > | return(pn[2] << 10 | 0x300 | pp->nj2tris++); | 
| 543 | > | } | 
| 544 |  | nomem: | 
| 545 |  | error(SYSTEM, "out of memory in addmeshtri"); | 
| 546 |  | return(OVOID); |