[Bf-blender-cvs] [ad01cdd7fc9] master: Transform: improve safety when restoring data

Germano Cavalcante noreply at git.blender.org
Wed Jan 11 16:08:19 CET 2023


Commit: ad01cdd7fc931c7e313eebc0027a05d96e36e66f
Author: Germano Cavalcante
Date:   Wed Jan 11 12:08:04 2023 -0300
Branches: master
https://developer.blender.org/rBad01cdd7fc931c7e313eebc0027a05d96e36e66f

Transform: improve safety when restoring data

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

M	source/blender/editors/transform/transform_generics.c

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

diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 5d3e326d8b0..968e2bca5b9 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -811,13 +811,15 @@ void applyTransObjects(TransInfo *t)
 
 static void transdata_restore_basic(TransDataBasic *td_basic)
 {
-  /* TransData for crease has no loc */
-  if (td_basic->loc) {
-    copy_v3_v3(td_basic->loc, td_basic->iloc);
+  if (td_basic->val) {
+    *td_basic->val = td_basic->ival;
   }
 
-  if (td_basic->val && td_basic->val != td_basic->loc) {
-    *td_basic->val = td_basic->ival;
+  /* TODO(mano-wii): Only use 3D or larger vectors in `td->loc`.
+   * If `loc` and `val` point to the same address, it may indicate that `loc` is not 3D which is
+   * not safe for `copy_v3_v3`. */
+  if (td_basic->loc && td_basic->val != td_basic->loc) {
+    copy_v3_v3(td_basic->loc, td_basic->iloc);
   }
 }



More information about the Bf-blender-cvs mailing list