From 765b842f9520843183bf0a3cdcd071f152bbbf9e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Feb 2015 08:33:32 +1100 Subject: [PATCH] Subsurf: missing NULL checks on free --- source/blender/blenkernel/intern/CCGSubSurf.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index 651979cd5cd..cadca6b2623 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -579,8 +579,14 @@ static float *_vert_getNo(CCGVert *v, int lvl, int dataSize, int normalDataOffse static void _vert_free(CCGVert *v, CCGSubSurf *ss) { - CCGSUBSURF_free(ss, v->edges); - CCGSUBSURF_free(ss, v->faces); + if (v->edges) { + CCGSUBSURF_free(ss, v->edges); + } + + if (v->faces) { + CCGSUBSURF_free(ss, v->faces); + } + CCGSUBSURF_free(ss, v); } @@ -669,7 +675,10 @@ static void *_edge_getCoVert(CCGEdge *e, CCGVert *v, int lvl, int x, int dataSiz static void _edge_free(CCGEdge *e, CCGSubSurf *ss) { - CCGSUBSURF_free(ss, e->faces); + if (e->faces) { + CCGSUBSURF_free(ss, e->faces); + } + CCGSUBSURF_free(ss, e); } static void _edge_unlinkMarkAndFree(CCGEdge *e, CCGSubSurf *ss)