[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56749] trunk/blender/source/blender: fix [#35335] Crash when rendering a text object with a remesh modifier and a material texture

Campbell Barton ideasman42 at gmail.com
Mon May 13 09:13:29 CEST 2013


Revision: 56749
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56749
Author:   campbellbarton
Date:     2013-05-13 07:13:28 +0000 (Mon, 13 May 2013)
Log Message:
-----------
fix [#35335] Crash when rendering a text object with a remesh modifier and a material texture

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_curve.h
    trunk/blender/source/blender/blenkernel/intern/curve.c
    trunk/blender/source/blender/blenkernel/intern/displist.c
    trunk/blender/source/blender/render/intern/source/convertblender.c

Modified: trunk/blender/source/blender/blenkernel/BKE_curve.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_curve.h	2013-05-13 06:51:13 UTC (rev 56748)
+++ trunk/blender/source/blender/blenkernel/BKE_curve.h	2013-05-13 07:13:28 UTC (rev 56749)
@@ -83,7 +83,7 @@
 void BKE_curve_editNurb_free(struct Curve *cu);
 struct ListBase *BKE_curve_editNurbs_get(struct Curve *cu);
 
-float *BKE_curve_make_orco(struct Scene *scene, struct Object *ob);
+float *BKE_curve_make_orco(struct Scene *scene, struct Object *ob, int *r_numVerts);
 float *BKE_curve_surf_make_orco(struct Object *ob);
 
 void BKE_curve_bevelList_make(struct Object *ob);

Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c	2013-05-13 06:51:13 UTC (rev 56748)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c	2013-05-13 07:13:28 UTC (rev 56749)
@@ -1328,7 +1328,7 @@
 /* NOTE: This routine is tied to the order of vertex
  * built by displist and as passed to the renderer.
  */
-float *BKE_curve_make_orco(Scene *scene, Object *ob)
+float *BKE_curve_make_orco(Scene *scene, Object *ob, int *r_numVerts)
 {
 	Curve *cu = ob->data;
 	DispList *dl;
@@ -1358,6 +1358,9 @@
 		}
 	}
 
+	if (r_numVerts)
+		*r_numVerts = numVerts;
+
 	fp = coord_array = MEM_mallocN(3 * sizeof(float) * numVerts, "cu_orco");
 	for (dl = disp.first; dl; dl = dl->next) {
 		if (dl->type == DL_INDEX3) {

Modified: trunk/blender/source/blender/blenkernel/intern/displist.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/displist.c	2013-05-13 06:51:13 UTC (rev 56748)
+++ trunk/blender/source/blender/blenkernel/intern/displist.c	2013-05-13 07:13:28 UTC (rev 56749)
@@ -1102,7 +1102,13 @@
 			dm->getVertCos(dm, orco);
 	}
 	else {
-		orco = (float(*)[3])BKE_curve_make_orco(scene, ob);
+		int totvert_curve;
+		orco = (float(*)[3])BKE_curve_make_orco(scene, ob, &totvert_curve);
+		if (totvert != totvert_curve) {
+			MEM_freeN(orco);
+			orco = MEM_callocN(sizeof(float) * 3 * totvert, "dm orco");
+			dm->getVertCos(dm, orco);
+		}
 	}
 
 	for (a = 0; a < totvert; a++) {

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2013-05-13 06:51:13 UTC (rev 56748)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2013-05-13 07:13:28 UTC (rev 56749)
@@ -871,7 +871,7 @@
 
 	if (!orco) {
 		if (ELEM(ob->type, OB_CURVE, OB_FONT)) {
-			orco = BKE_curve_make_orco(re->scene, ob);
+			orco = BKE_curve_make_orco(re->scene, ob, NULL);
 		}
 		else if (ob->type==OB_SURF) {
 			orco = BKE_curve_surf_make_orco(ob);




More information about the Bf-blender-cvs mailing list