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:
authorBastien Montagne <montagne29@wanadoo.fr>2016-07-11 17:50:59 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2016-07-11 22:30:02 +0300
commit62ea383622d8cb9ae284217bd040d93a6d123859 (patch)
treef70e908b2519c2e5f73d68ae66641ff73432fe19 /source/blender
parent4569e19b83894218257e04976df34662fed7a381 (diff)
Fix (unreported) memory leak when making local linked databock which has a preview image.
Also cleaned-up/synchronized code across al ID types that support preview.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/image.c2
-rw-r--r--source/blender/blenkernel/intern/lamp.c4
-rw-r--r--source/blender/blenkernel/intern/material.c4
-rw-r--r--source/blender/blenkernel/intern/object.c1
-rw-r--r--source/blender/blenkernel/intern/scene.c4
-rw-r--r--source/blender/blenkernel/intern/texture.c2
-rw-r--r--source/blender/blenkernel/intern/world.c3
7 files changed, 10 insertions, 10 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 587912c8fed..5c223d824ef 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -459,6 +459,8 @@ Image *BKE_image_copy(Main *bmain, Image *ima)
nima->stereo3d_format = MEM_dupallocN(ima->stereo3d_format);
BLI_duplicatelist(&nima->views, &ima->views);
+ nima->preview = BKE_previewimg_copy(ima->preview);
+
if (ID_IS_LINKED_DATABLOCK(ima)) {
BKE_id_lib_local_paths(bmain, ima->id.lib, &nima->id);
}
diff --git a/source/blender/blenkernel/intern/lamp.c b/source/blender/blenkernel/intern/lamp.c
index 36ba5dbb09b..3e656a2433d 100644
--- a/source/blender/blenkernel/intern/lamp.c
+++ b/source/blender/blenkernel/intern/lamp.c
@@ -167,8 +167,8 @@ Lamp *localize_lamp(Lamp *la)
if (la->nodetree)
lan->nodetree = ntreeLocalize(la->nodetree);
- lan->preview = NULL;
-
+ lan->preview = BKE_previewimg_copy(la->preview);
+
return lan;
}
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index bd476ccc9c7..3e29a9e91de 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -239,12 +239,12 @@ Material *BKE_material_copy(Main *bmain, Material *ma)
if (ma->ramp_col) man->ramp_col = MEM_dupallocN(ma->ramp_col);
if (ma->ramp_spec) man->ramp_spec = MEM_dupallocN(ma->ramp_spec);
- if (ma->preview) man->preview = BKE_previewimg_copy(ma->preview);
-
if (ma->nodetree) {
man->nodetree = ntreeCopyTree(bmain, ma->nodetree);
}
+ man->preview = BKE_previewimg_copy(ma->preview);
+
BLI_listbase_clear(&man->gpumaterial);
if (ID_IS_LINKED_DATABLOCK(ma)) {
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 4031afb8a78..1a01cc2da62 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1219,7 +1219,6 @@ void BKE_object_make_local(Main *bmain, Object *ob)
if (is_local) {
if (!is_lib) {
id_clear_lib_data(bmain, &ob->id);
- ob->preview = NULL;
extern_local_object(ob);
}
else {
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index c071aacc64b..858b6bd927b 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -344,9 +344,7 @@ Scene *BKE_scene_copy(Main *bmain, Scene *sce, int type)
}
}
- if (sce->preview) {
- scen->preview = BKE_previewimg_copy(sce->preview);
- }
+ scen->preview = BKE_previewimg_copy(sce->preview);
return scen;
}
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index aee0efeab58..459b6f94d5e 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -876,6 +876,8 @@ Tex *BKE_texture_copy(Main *bmain, Tex *tex)
BKE_id_lib_local_paths(bmain, tex->id.lib, &texn->id);
}
+ texn->preview = BKE_previewimg_copy(tex->preview);
+
return texn;
}
diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c
index d62ecb5c9cf..69e89fc9171 100644
--- a/source/blender/blenkernel/intern/world.c
+++ b/source/blender/blenkernel/intern/world.c
@@ -138,8 +138,7 @@ World *BKE_world_copy(Main *bmain, World *wrld)
wrldn->nodetree = ntreeCopyTree(bmain, wrld->nodetree);
}
- if (wrld->preview)
- wrldn->preview = BKE_previewimg_copy(wrld->preview);
+ wrldn->preview = BKE_previewimg_copy(wrld->preview);
BLI_listbase_clear(&wrldn->gpumaterial);