Commit: dd684f5a0414e9f2882a4861de489e50ea1ddb2e
Author: Brecht Van Lommel
Date: Wed Jan 29 20:28:18 2014 +0100
https://developer.blender.org/rBdd684f5a0414e9f2882a4861de489e50ea1ddb2e
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.
===================================================================
M source/blender/editors/space_image/space_image.c
===================================================================
diff --git a/source/blender/editors/space_image/space_image.c
b/source/blender/editors/space_image/space_image.c
index 2939e49..2197226 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;
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs