Fixed crash when adding/removing custom normals from pinned mesh
authorSybren A. Stüvel <sybren@blender.org>
Tue, 16 Jul 2019 13:06:25 +0000 (15:06 +0200)
committerSybren A. Stüvel <sybren@blender.org>
Tue, 16 Jul 2019 13:06:25 +0000 (15:06 +0200)
commite6e69a28ab28631b2b1b99f55fb618459e7671ad
tree42684562cb6bbf9ddf10ca3708f31147a500c653
parentdd3e3474abcb9c07ba0bd26f6b8940fc906d97a5
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
source/blender/editors/include/ED_mesh.h
source/blender/editors/include/ED_screen.h
source/blender/editors/mesh/mesh_data.c
source/blender/editors/screen/screen_ops.c