diff options
author | Andrea Weikert <elubie@gmx.net> | 2011-05-18 23:42:30 +0400 |
---|---|---|
committer | Andrea Weikert <elubie@gmx.net> | 2011-05-18 23:42:30 +0400 |
commit | c04f9b779c4384f3cc6961b2ed54456bdab14f43 (patch) | |
tree | ef03665fdb965eac3636f89e837344723ed7a2ec /source/blender/blenkernel/intern/icons.c | |
parent | 91bd739a093f8bb3613f52b6a0edeacfd8c09d66 (diff) |
fix [#27158] Appending crash with preview.
* fixed incorrect reading of PreviewImage struct from .blend
* fixed memory leak, PreviewImage data wasn't correctly free'd
Diffstat (limited to 'source/blender/blenkernel/intern/icons.c')
-rw-r--r-- | source/blender/blenkernel/intern/icons.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/icons.c b/source/blender/blenkernel/intern/icons.c index 18eda831c47..9effd25c142 100644 --- a/source/blender/blenkernel/intern/icons.c +++ b/source/blender/blenkernel/intern/icons.c @@ -132,18 +132,26 @@ struct PreviewImage* BKE_previewimg_create(void) return prv_img; } -void BKE_previewimg_free(PreviewImage **prv) +void BKE_previewimg_freefunc(void *link) { - if(prv && (*prv)) { + PreviewImage *prv = (PreviewImage *)link; + if (prv) { int i; - + for (i=0; i<NUM_ICON_SIZES;++i) { - if ((*prv)->rect[i]) { - MEM_freeN((*prv)->rect[i]); - (*prv)->rect[i] = NULL; + if (prv->rect[i]) { + MEM_freeN(prv->rect[i]); + prv->rect[i] = NULL; } } - MEM_freeN((*prv)); + MEM_freeN(prv); + } +} + +void BKE_previewimg_free(PreviewImage **prv) +{ + if(prv && (*prv)) { + BKE_previewimg_freefunc(*prv); *prv = NULL; } } |