[Bf-blender-cvs] [d232486] master: Fix T37543: Multiline 3D Text saved in edit mode breaks on load

Campbell Barton noreply at git.blender.org
Wed Nov 20 18:36:14 CET 2013


Commit: d232486b4093fbc306dadbc21bd3fde81284364d
Author: Campbell Barton
Date:   Thu Nov 21 04:32:28 2013 +1100
http://developer.blender.org/rBd232486b4093fbc306dadbc21bd3fde81284364d

Fix T37543: Multiline 3D Text saved in edit mode breaks on load

===================================================================

M	source/blender/blenkernel/intern/curve.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/curve/editfont.c
M	source/blender/editors/object/object_edit.c
M	source/blender/makesdna/DNA_curve_types.h

===================================================================

diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index b31be3f..bcf0eaf 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -116,6 +116,8 @@ void BKE_curve_editfont_free(Curve *cu)
 		MEM_freeN(ef);
 		cu->editfont = NULL;
 	}
+
+	MEM_SAFE_FREE(cu->selboxes);
 }
 
 void BKE_curve_editNurb_keyIndex_free(EditNurb *editnurb)
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 01a71cf..de055b2 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -3360,6 +3360,8 @@ static void lib_link_curve(FileData *fd, Main *main)
 			
 			cu->ipo = newlibadr_us(fd, cu->id.lib, cu->ipo); // XXX deprecated - old animation system
 			cu->key = newlibadr_us(fd, cu->id.lib, cu->key);
+
+			cu->selboxes = NULL;  /* runtime, clear */
 			
 			cu->id.flag -= LIB_NEED_LINK;
 		}
diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c
index 6ba5414..8f53657 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -1475,13 +1475,6 @@ void load_editText(Object *obedit)
 	memcpy(cu->strinfo, ef->textbufinfo, (cu->len) * sizeof(CharInfo));
 
 	cu->len = strlen(cu->str);
-	
-	/* this memory system is weak... */
-	
-	if (cu->selboxes) {
-		MEM_freeN(cu->selboxes);
-		cu->selboxes = NULL;
-	}
 }
 
 void free_editText(Object *obedit)
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 02cbc10..2e01149 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -351,7 +351,7 @@ static bool ED_object_editmode_load_ex(Object *obedit, const bool freedata)
 		load_editNurb(obedit);
 		if (freedata) free_editNurb(obedit);
 	}
-	else if (obedit->type == OB_FONT && freedata) {
+	else if (obedit->type == OB_FONT) {
 		load_editText(obedit);
 		if (freedata) free_editText(obedit);
 	}
diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h
index f1a2cd6..0141c4b 100644
--- a/source/blender/makesdna/DNA_curve_types.h
+++ b/source/blender/makesdna/DNA_curve_types.h
@@ -223,7 +223,7 @@ typedef struct Curve {
 	float linewidth;
 
 	char *str;
-	struct SelBox *selboxes;
+	struct SelBox *selboxes;  /* runtime variable for drawing selections (editmode data) */
 	struct EditFont *editfont;
 	
 	char family[24];




More information about the Bf-blender-cvs mailing list