[Bf-blender-cvs] [4bb1566] multiview: Fix unfreed memory on duplicated windows and others

Dalai Felinto noreply at git.blender.org
Wed Sep 17 14:12:31 CEST 2014


Commit: 4bb1566944a0c6418a6ad2ed0eb64c097a882cd7
Author: Dalai Felinto
Date:   Mon Sep 15 19:22:40 2014 +0200
Branches: multiview
https://developer.blender.org/rB4bb1566944a0c6418a6ad2ed0eb64c097a882cd7

Fix unfreed memory on duplicated windows and others

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

M	source/blender/blenkernel/intern/image.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/imbuf/intern/openexr/openexr_api.cpp
M	source/blender/windowmanager/intern/wm_window.c

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

diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 1f7c030..5ca7b1d 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -2837,6 +2837,7 @@ static void image_add_buffer_cb(void *base, const char *str, ImBuf *ibuf, const
 		                              colorspace, to_colorspace, predivide);
 
 	image_assign_ibuf(ima, ibuf, id, frame);
+	IMB_freeImBuf(ibuf);
 }
 
 static void image_update_multiview_flags(Image *ima)
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 1ccb17b..9a6938f 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -929,7 +929,7 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, const wmEvent *event)
 	rect.ymax = rect.ymin + BLI_rcti_size_y(&rect) / U.pixelsize;
 
 	newwin = WM_window_open(C, &rect);
-	newwin->stereo3d_format = MEM_dupallocN(win->stereo3d_format);
+	*newwin->stereo3d_format = *win->stereo3d_format;
 	
 	/* allocs new screen and adds to newly created window, using window size */
 	newsc = ED_screen_add(newwin, CTX_data_scene(C), sc->id.name + 2);
diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp
index 28f275e..fce79ee 100644
--- a/source/blender/imbuf/intern/openexr/openexr_api.cpp
+++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp
@@ -1346,13 +1346,11 @@ void IMB_exr_singlelayer_multiview_convert(void *handle, void *base,
 					if (STREQ(zpass->chan_id, "Z") && STREQ(zpass->view, pass->view)) {
 						addzbuffloatImBuf(ibuf);
 						memcpy(ibuf->zbuf_float, zpass->rect, sizeof(float) * ibuf->x * ibuf->y);
-						zpass->rect = NULL;
 					}
 				}
 			}
 
 			addbuffer(base, pass->view, ibuf, frame);
-			pass->rect = NULL;
 		}
 	}
 }
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index b03e983..459a375 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -264,7 +264,7 @@ wmWindow *wm_window_copy(bContext *C, wmWindow *winorig)
 
 	win->drawdata.first = win->drawdata.last = NULL;
 
-	win->stereo3d_format = MEM_dupallocN(winorig->stereo3d_format);
+	*win->stereo3d_format = *winorig->stereo3d_format;
 
 	return win;
 }




More information about the Bf-blender-cvs mailing list