diff options
author | Sybren A. Stüvel <sybren@blender.org> | 2019-07-16 16:06:25 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@blender.org> | 2019-07-16 16:06:25 +0300 |
commit | e6e69a28ab28631b2b1b99f55fb618459e7671ad (patch) | |
tree | 42684562cb6bbf9ddf10ca3708f31147a500c653 /source/blender/editors/include/ED_mesh.h | |
parent | dd3e3474abcb9c07ba0bd26f6b8940fc906d97a5 (diff) |
Fixed crash when adding/removing custom normals from pinned mesh
When a mesh is pinned in the properties panel, Blender crashes when you
click the "Add Custom Split Normals Data".
The code calls `ob = ED_object_context(C)` which returns NULL when the
mesh is pinned in the properties panel, causing a segfault when trying
to get the mesh via `ob->data`.
A new function `ED_mesh_context(C)` avoids this by first checking
whether a mesh was pinned in the context. If not, it checks the pinned
object's data. If that's not there, or it's not a mesh, it returns the
active object's mesh. Finally it returns NULL if there is no active
object, or if the active object is not a mesh object.
Reviewed By: brecht, mont29
Differential Revision: https://developer.blender.org/D5223
Diffstat (limited to 'source/blender/editors/include/ED_mesh.h')
-rw-r--r-- | source/blender/editors/include/ED_mesh.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 5d8038d0b28..d2613facd83 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -393,6 +393,9 @@ bool ED_mesh_color_remove_named(struct Mesh *me, const char *name); void ED_mesh_report_mirror(struct wmOperator *op, int totmirr, int totfail); void ED_mesh_report_mirror_ex(struct wmOperator *op, int totmirr, int totfail, char selectmode); +/* Returns the pinned mesh, the mesh from the pinned object, or the mesh from the active object. */ +struct Mesh *ED_mesh_context(struct bContext *C); + /* mesh backup */ typedef struct BMBackup { struct BMesh *bmcopy; |