Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2014-01-29 23:28:18 +0400
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2014-01-29 23:29:30 +0400
commitdd684f5a0414e9f2882a4861de489e50ea1ddb2e (patch)
tree69c108bf3747e1f2bd8f8ea05d478c23dd8b5746 /source/blender/editors/space_image
parent77089a3bf20319be87a434750656206449c04dbc (diff)
Fix T38400: crash in image_listener accessing deleted object.
Listeners should never dereference this pointer because the object may have been deleted, it can only be used for comparisons.
Diffstat (limited to 'source/blender/editors/space_image')
-rw-r--r--source/blender/editors/space_image/space_image.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index 2939e4987d7..2197226beb2 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -420,8 +420,9 @@ static void image_refresh(const bContext *C, ScrArea *sa)
}
}
-static void image_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
+static void image_listener(bScreen *sc, ScrArea *sa, wmNotifier *wmn)
{
+ Scene *scene = sc->scene;
SpaceImage *sima = (SpaceImage *)sa->spacedata.first;
/* context changes */
@@ -510,13 +511,15 @@ static void image_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn)
}
case NC_OBJECT:
{
- Object *ob = (Object *)wmn->reference;
+ Object *ob = OBACT;
switch (wmn->data) {
case ND_TRANSFORM:
case ND_MODIFIER:
- if (ob && (ob->mode & OB_MODE_EDIT) && sima->lock && (sima->flag & SI_DRAWSHADOW)) {
- ED_area_tag_refresh(sa);
- ED_area_tag_redraw(sa);
+ if (ob == (Object *)wmn->reference && (ob->mode & OB_MODE_EDIT)) {
+ if (sima->lock && (sima->flag & SI_DRAWSHADOW)) {
+ ED_area_tag_refresh(sa);
+ ED_area_tag_redraw(sa);
+ }
}
break;
}