Revision: 24444
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24444
Author:   broken
Date:     2009-11-10 07:29:10 +0100 (Tue, 10 Nov 2009)

Log Message:
-----------
Fix for [#19847] Joined meshes fail to render

Join function was accessing invalid memory for material indices when no 
materials were originally present on the joining objects

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/meshtools.c

Modified: trunk/blender/source/blender/editors/mesh/meshtools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/meshtools.c       2009-11-10 
04:56:55 UTC (rev 24443)
+++ trunk/blender/source/blender/editors/mesh/meshtools.c       2009-11-10 
06:29:10 UTC (rev 24444)
@@ -123,7 +123,7 @@
        KeyBlock *kb, *okb, *kbn;
        float imat[4][4], cmat[4][4], *fp1, *fp2, curpos;
        int a, b, totcol, totmat=0, totedge=0, totvert=0, totface=0, ok=0;
-       int vertofs, *matmap;
+       int vertofs, *matmap=NULL;
        int     i, j, index, haskey=0, edgeofs, faceofs;
        bDeformGroup *dg, *odg;
        MDeformVert *dvert;
@@ -168,7 +168,7 @@
        
        /* new material indices and material array */
        matar= MEM_callocN(sizeof(void*)*totmat, "join_mesh matar");
-       matmap= MEM_callocN(sizeof(int)*totmat, "join_mesh matmap");
+       if (totmat) matmap= MEM_callocN(sizeof(int)*totmat, "join_mesh matmap");
        totcol= ob->totcol;
        
        /* obact materials in new main array, is nicer start! */
@@ -435,7 +435,10 @@
                                        mface->v3+= vertofs;
                                        if(mface->v4) mface->v4+= vertofs;
                                        
-                                       mface->mat_nr= 
matmap[(int)mface->mat_nr];
+                                       if (matmap)
+                                               mface->mat_nr= 
matmap[(int)mface->mat_nr];
+                                       else 
+                                               mface->mat_nr= 0;
                                }
                                
                                faceofs += me->totface;
@@ -508,7 +511,7 @@
        ob->totcol= me->totcol= totcol;
        ob->colbits= 0;
 
-       MEM_freeN(matmap);
+       if (matmap) MEM_freeN(matmap);
        
        /* other mesh users */
        test_object_materials((ID *)me);


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to