From: Zack Middleton Date: Wed, 31 Oct 2018 01:21:16 +0000 (-0500) Subject: Fix over allocating vertexes for OBJ models with multiple surfaces X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=refs%2Fmerge-requests%2F107%2Fhead;p=xonotic%2Fnetradiant.git Fix over allocating vertexes for OBJ models with multiple surfaces Loading Wavefront OBJ models in picomodel (used by radiant and q3map2) did not reset the surface vertex index when starting a new surface. This caused there to be unused vertexes, equal to the number of vertexes in all previous surfaces, at the beginning of each surface. Exponential OBJ vertex memory usage as number of surfaces increases. It did not affect displaying or processing the surface faces. --- diff --git a/libs/picomodel/pm_obj.c b/libs/picomodel/pm_obj.c index e342ab08..32bdbd25 100644 --- a/libs/picomodel/pm_obj.c +++ b/libs/picomodel/pm_obj.c @@ -524,8 +524,9 @@ static picoModel_t *_obj_load( PM_PARAMS_LOAD ){ newSurface = PicoNewSurface( model ); \ if ( newSurface == NULL ) { \ _obj_error_return( "Error allocating surface" ); } \ - /* reset face index for surface */ \ + /* reset face index and vertex index for surface */ \ curFace = 0; \ + curVertex = 0; \ /* if we can, assign the previous shader to this surface */ \ if ( curSurface ) { \ PicoSetSurfaceShader( newSurface, curSurface->shader ); } \