Commit: e7d20b0be481b5c8cd724cb6a12bbb3029991cc6
Author: Campbell Barton
Date:   Tue Feb 10 23:34:16 2015 +1100
Branches: master
https://developer.blender.org/rBe7d20b0be481b5c8cd724cb6a12bbb3029991cc6

Fix grease-pencil crash without clip/track data

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

M       source/blender/editors/gpencil/gpencil_paint.c

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

diff --git a/source/blender/editors/gpencil/gpencil_paint.c 
b/source/blender/editors/gpencil/gpencil_paint.c
index e6f6644..c03766a 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -999,7 +999,7 @@ static void gp_session_validatebuffer(tGPsdata *p)
 }
 
 /* (re)init new painting data */
-static int gp_session_initdata(bContext *C, tGPsdata *p)
+static bool gp_session_initdata(bContext *C, tGPsdata *p)
 {
        bGPdata **gpd_ptr = NULL;
        ScrArea *curarea = CTX_wm_area(C);
@@ -1082,7 +1082,13 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
                case SPACE_CLIP:
                {
                        SpaceClip *sc = curarea->spacedata.first;
+                       MovieClip *clip = ED_space_clip_get_clip(sc);
                        
+                       if (clip == NULL) {
+                               p->status = GP_STATUS_ERROR;
+                               return false;
+                       }
+
                        /* set the current area */
                        p->sa = curarea;
                        p->ar = ar;
@@ -1097,13 +1103,18 @@ static int gp_session_initdata(bContext *C, tGPsdata *p)
                        p->custom_color[3] = 0.9f;
                        
                        if (sc->gpencil_src == SC_GPENCIL_SRC_TRACK) {
-                               MovieClip *clip = ED_space_clip_get_clip(sc);
                                int framenr = 
ED_space_clip_get_clip_frame_number(sc);
                                MovieTrackingTrack *track = 
BKE_tracking_track_get_active(&clip->tracking);
-                               MovieTrackingMarker *marker = 
BKE_tracking_marker_get(track, framenr);
-                               
-                               p->imat[3][0] -= marker->pos[0];
-                               p->imat[3][1] -= marker->pos[1];
+                               MovieTrackingMarker *marker = track ? 
BKE_tracking_marker_get(track, framenr) : NULL;
+
+                               if (marker) {
+                                       p->imat[3][0] -= marker->pos[0];
+                                       p->imat[3][1] -= marker->pos[1];
+                               }
+                               else {
+                                       p->status = GP_STATUS_ERROR;
+                                       return false;
+                               }
                        }
                        
                        invert_m4_m4(p->mat, p->imat);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to