diff -u base/guicast/bcfilebox.C hvirtual-1.1.5/guicast/bcfilebox.C
--- base/guicast/bcfilebox.C	2003-05-04 02:51:47.000000000 +0200
+++ hvirtual-1.1.5/guicast/bcfilebox.C	2003-05-04 02:43:39.000000000 +0200
@@ -50,7 +50,7 @@
 }
 
 
-BC_NewFolderThread::BC_NewFolderThread(BC_FileBox *filebox) : Thread("New folder")
+BC_NewFolderThread::BC_NewFolderThread(BC_FileBox *filebox) : Thread("New folder", 1)
 {
 	this->filebox = filebox;
 	active = 0;
@@ -59,6 +59,15 @@
 
 BC_NewFolderThread::~BC_NewFolderThread() 
 {
+	change_lock.lock();
+	if(active)
+	{
+		window->lock_window();
+		window->set_done(1);
+		window->unlock_window();
+	}
+	change_lock.unlock();
+	join();
 }
 
 void BC_NewFolderThread::run()
@@ -418,6 +427,22 @@
 	for(int i = 0; i < TOTAL_ICONS; i++)
 		delete icons[i];
 	delete newfolder_thread;
+	filter_list.remove_all_objects();
+	delete ok_button;
+	if(want_directory)
+		delete usethis_button;
+	delete cancel_button;
+	delete caption_title;
+	delete directory_title;
+	delete icon_button;
+	delete text_button;
+	delete folder_button;
+	delete updir_button;
+	delete textbox;	
+	delete filter_text;	
+	delete filter_popup;
+	if (listbox) 
+		delete listbox;
 }
 
 int BC_FileBox::create_objects()
@@ -443,7 +468,7 @@
 		add_subwindow(usethis_button = new BC_FileBoxUseThis(this));
 	add_subwindow(cancel_button = new BC_FileBoxCancel(this));
 
-	add_subwindow(new BC_Title(x, y, caption));
+	add_subwindow(caption_title = new BC_Title(x, y, caption));
 
 	add_subwindow(directory_title = 
 		new BC_Title(x, y + 20, fs->get_current_dir()));
@@ -596,9 +621,10 @@
 {
 	for(int j = 0; j < FILEBOX_COLUMNS; j++)
 	{
-		for(int i = 0; i < list_column[0].total; i++)
+/*		for(int i = 0; i < list_column[0].total; i++)
 			delete list_column[j].values[i];
-		list_column[j].remove_all();
+		list_column[j].remove_all();*/
+		list_column[j].remove_all_objects();
 	}
 	return 0;
 }
diff -u base/guicast/bcfilebox.h hvirtual-1.1.5/guicast/bcfilebox.h
--- base/guicast/bcfilebox.h	2003-05-01 15:11:30.000000000 +0200
+++ hvirtual-1.1.5/guicast/bcfilebox.h	2003-05-03 23:46:20.000000000 +0200
@@ -228,6 +228,7 @@
 	BC_Title *directory_title;
 	BC_Button *icon_button, *text_button, *folder_button, *updir_button;
 	BC_Button *ok_button, *cancel_button;
+	BC_Title *caption_title;
 	BC_FileBoxUseThis *usethis_button;
 	char caption[BCTEXTLEN];
 	char path[BCTEXTLEN];
diff -u base/guicast/bcprogress.C hvirtual-1.1.5/guicast/bcprogress.C
--- base/guicast/bcprogress.C	2003-05-01 15:11:30.000000000 +0200
+++ hvirtual-1.1.5/guicast/bcprogress.C	2003-05-03 03:33:03.000000000 +0200
@@ -19,6 +19,12 @@
 	for(int i = 0; i < 2; i++) images[i] = 0;
 }
 
+BC_ProgressBar::~BC_ProgressBar()
+{
+	for(int i = 0; i < 2; i++)
+		if (images[i]) delete images[i];
+}
+
 int BC_ProgressBar::initialize()
 {
 	set_images();
diff -u base/guicast/bcprogress.h hvirtual-1.1.5/guicast/bcprogress.h
--- base/guicast/bcprogress.h	2003-05-01 15:11:30.000000000 +0200
+++ hvirtual-1.1.5/guicast/bcprogress.h	2003-05-03 03:32:49.000000000 +0200
@@ -7,7 +7,7 @@
 {
 public:
 	BC_ProgressBar(int x, int y, int w, long length);
-
+	~BC_ProgressBar();
 	int initialize();
 
 	int update(long position);
diff -u base/guicast/bcresources.C hvirtual-1.1.5/guicast/bcresources.C
--- base/guicast/bcresources.C	2003-05-02 19:16:23.000000000 +0200
+++ hvirtual-1.1.5/guicast/bcresources.C	2003-05-03 17:51:37.000000000 +0200
@@ -8,14 +8,10 @@
 #include "colormodels.h"
 #include "fonts.h"
 
-#include "images/folder_png.h"
-#include "images/heroine_file_png.h"
-#include "images/list_bg_png.h"
-#include "images/listbox_button_dn_png.h"
-#include "images/listbox_button_hi_png.h"
-#include "images/listbox_button_up_png.h"
-#include "images/menu_bg_png.h"
-#include "images/window_bg_png.h"
+//#include "images/folder_png.h"
+//#include "images/heroine_file_png.h"
+//#include "images/menu_bg_png.h"
+//#include "images/window_bg_png.h"
 #include "vframe.h"
 
 #include <locale.h>
@@ -32,17 +28,6 @@
 //VFrame* BC_Resources::bg_image = new VFrame(window_bg_png);
 //VFrame* BC_Resources::menu_bg = new VFrame(menu_bg_png);
 
-#include "images/file_film_png.h"
-#include "images/file_folder_png.h"
-#include "images/file_sound_png.h"
-#include "images/file_unknown_png.h"
-VFrame* BC_Resources::type_to_icon[] = 
-{
-	new VFrame(file_folder_png),
-	new VFrame(file_unknown_png),
-	new VFrame(file_film_png),
-	new VFrame(file_sound_png)
-};
 
 char* BC_Resources::small_font = "-*-helvetica-medium-r-normal-*-10-*";
 char* BC_Resources::medium_font = "-*-helvetica-bold-r-normal-*-14-*";
@@ -73,6 +58,20 @@
 	return 0;
 }
 
+
+int BC_Resources::list_total = 0;
+int BC_Resources::list_lengths[100];
+VFrame **BC_Resources::list_pointers[100];
+VFrame *BC_Resources::type_to_icon[TOTAL_ICONS];
+
+void BC_Resources::add_pointer(VFrame **p, int n)
+{
+	list_pointers[list_total]=p;
+	list_lengths[list_total]=n;
+	list_total++;	
+}
+
+
 BC_Resources::BC_Resources()
 {
 	// cache the info & save some space
@@ -84,6 +83,19 @@
 	delete display_info;
 
 	use_xvideo = 1;
+
+
+#include "images/file_film_png.h"
+#include "images/file_folder_png.h"
+#include "images/file_sound_png.h"
+#include "images/file_unknown_png.h"
+	type_to_icon[0] = new VFrame(file_folder_png);
+	type_to_icon[1] = new VFrame(file_unknown_png);
+	type_to_icon[2] = new VFrame(file_film_png);
+	type_to_icon[3]	= new VFrame(file_sound_png);
+	add_pointer(type_to_icon, 4);
+
+/*
 #include "images/cancel_up_png.h"
 #include "images/cancel_hi_png.h"
 #include "images/cancel_dn_png.h"
@@ -93,6 +105,8 @@
 		new VFrame(cancel_hi_png),
 		new VFrame(cancel_dn_png)
 	};
+	cancel_images = default_cancel_images;
+	add_pointer(default_cancel_images, 3);
 
 #include "images/ok_up_png.h"
 #include "images/ok_hi_png.h"
@@ -103,6 +117,9 @@
 		new VFrame(ok_hi_png),
 		new VFrame(ok_dn_png)
 	};
+	ok_images = default_ok_images;
+	add_pointer(default_ok_images, 3);
+*/
 
 #include "images/usethis_up_png.h"
 #include "images/usethis_uphi_png.h"
@@ -113,6 +130,8 @@
 		new VFrame(usethis_uphi_png),
 		new VFrame(usethis_dn_png)
 	};
+	usethis_button_images = default_usethis_images;
+	add_pointer(default_usethis_images, 3);
 
 #include "images/checkbox_checked_png.h"
 #include "images/checkbox_down_png.h"
@@ -127,6 +146,8 @@
 		new VFrame(checkbox_down_png),
 		new VFrame(checkbox_checkedhi_png)
 	};
+	checkbox_images = default_checkbox_images;
+	add_pointer(default_checkbox_images, 5);
 
 #include "images/radial_checked_png.h"
 #include "images/radial_down_png.h"
@@ -141,6 +162,7 @@
 		new VFrame(radial_down_png),
 		new VFrame(radial_checkedhi_png)
 	};
+	add_pointer(default_radial_images, 5);
 
 	static VFrame* default_label_images[] =  
 	{
@@ -150,6 +172,7 @@
 		new VFrame(radial_down_png),
 		new VFrame(radial_checkedhi_png)
 	};
+	add_pointer(default_label_images, 5);
 
 
 #include "images/file_text_up_png.h"
@@ -170,6 +193,7 @@
 		new VFrame(file_text_uphi_png),
 		new VFrame(file_text_dn_png)
 	};
+	add_pointer(default_filebox_text_images, 3);
 
 	static VFrame* default_filebox_icons_images[] = 
 	{
@@ -177,6 +201,7 @@
 		new VFrame(file_icons_uphi_png),
 		new VFrame(file_icons_dn_png)
 	};
+	add_pointer(default_filebox_icons_images, 3);
 
 	static VFrame* default_filebox_updir_images[] =  
 	{
@@ -184,6 +209,7 @@
 		new VFrame(file_updir_uphi_png),
 		new VFrame(file_updir_dn_png)
 	};
+	add_pointer(default_filebox_updir_images, 3);
 
 	static VFrame* default_filebox_newfolder_images[] = 
 	{
@@ -191,6 +217,12 @@
 		new VFrame(file_newfolder_uphi_png),
 		new VFrame(file_newfolder_dn_png)
 	};
+	add_pointer(default_filebox_newfolder_images, 3);
+
+/*
+#include "images/listbox_button_dn_png.h"
+#include "images/listbox_button_hi_png.h"
+#include "images/listbox_button_up_png.h"
 
 	static VFrame* default_listbox_button[] = 
 	{
@@ -198,9 +230,17 @@
 		new VFrame(listbox_button_hi_png),
 		new VFrame(listbox_button_dn_png)
 	};
+	add_pointer(default_listbox_button, 3);
+*/
 
-	static VFrame* default_listbox_bg = new VFrame(list_bg_png);
+#include "images/list_bg_png.h"
 
+	static VFrame* default_listbox_bg[] = 
+	{
+		new VFrame(list_bg_png)
+	};
+	add_pointer(default_listbox_bg, 1);
+/*
 #include "images/horizontal_slider_bg_up_png.h"
 #include "images/horizontal_slider_bg_hi_png.h"
 #include "images/horizontal_slider_bg_dn_png.h"
@@ -216,7 +256,9 @@
 		new VFrame(horizontal_slider_bg_hi_png),
 		new VFrame(horizontal_slider_bg_dn_png),
 	};
-
+	horizontal_slider_data = default_horizontal_slider_data;
+	add_pointer(default_horizontal_slider_data, 6);
+*/
 #include "images/vertical_slider_bg_up_png.h"
 #include "images/vertical_slider_bg_hi_png.h"
 #include "images/vertical_slider_bg_dn_png.h"
@@ -232,8 +274,10 @@
 		new VFrame(vertical_slider_bg_hi_png),
 		new VFrame(vertical_slider_bg_dn_png),
 	};
-	horizontal_slider_data = default_horizontal_slider_data;
 	vertical_slider_data = default_vertical_slider_data;
+	add_pointer(default_vertical_slider_data, 6);	
+
+
 
 #include "images/pot_hi_png.h"
 #include "images/pot_up_png.h"
@@ -244,15 +288,16 @@
 		new VFrame(pot_hi_png),
 		new VFrame(pot_dn_png)
 	};
+	add_pointer(default_pot_images, 3);
 
-#include "images/progress_up_png.h"
+/*#include "images/progress_up_png.h"
 #include "images/progress_hi_png.h"
 	static VFrame* default_progress_images[] = 
 	{
 		new VFrame(progress_up_png),
 		new VFrame(progress_hi_png)
 	};
-
+	add_pointer(default_progress_images, 2);
 
 #include "images/pan_up_png.h"
 #include "images/pan_hi_png.h"
@@ -271,9 +316,10 @@
 		new VFrame(pan_channel_small_png),
 		new VFrame(pan_stick_small_png)
 	};
+	add_pointer(default_pan_data, 7);
 	pan_data = default_pan_data;
 	pan_text_color = YELLOW;
-
+*/
 #include "images/7seg_small/0_png.h"
 #include "images/7seg_small/1_png.h"
 #include "images/7seg_small/2_png.h"
@@ -301,7 +347,8 @@
 		new VFrame(colon_png),
 		new VFrame(space_png)
 	};
-
+	add_pointer(default_medium_7segment, 12);
+/*
 #include "images/tumble_bottomdn_png.h"
 #include "images/tumble_topdn_png.h"
 #include "images/tumble_hi_png.h"
@@ -313,7 +360,8 @@
 		new VFrame(tumble_bottomdn_png),
 		new VFrame(tumble_topdn_png)
 	};
-
+	add_pointer(default_tumbler_data, 4);
+*/
 #include "images/xmeter_normal_png.h"
 #include "images/xmeter_green_png.h"
 #include "images/xmeter_red_png.h"
@@ -332,6 +380,7 @@
 		new VFrame(xmeter_yellow_png),
 		new VFrame(over_horiz_png)
 	};
+	add_pointer(default_xmeter_data, 5);
 
 	static VFrame* default_ymeter_data[] =
 	{
@@ -341,7 +390,8 @@
 		new VFrame(ymeter_yellow_png),
 		new VFrame(over_vertical_png)
 	};
-
+	add_pointer(default_ymeter_data, 5);
+/*
 #include "images/generic_up_png.h"
 #include "images/generic_hi_png.h"
 #include "images/generic_dn_png.h"
@@ -352,11 +402,12 @@
 		new VFrame(generic_hi_png),
 		new VFrame(generic_dn_png)
 	};
+	add_pointer(default_generic_button_data, 3);
 	
 	generic_button_images = default_generic_button_data;
+*/
 
-
-
+/*
 
 #include "images/hscroll_handle_up_png.h"
 #include "images/hscroll_handle_hi_png.h"
@@ -391,6 +442,8 @@
 		new VFrame(hscroll_right_hi_png), 
 		new VFrame(hscroll_right_dn_png)
 	};
+	add_pointer(default_hscroll_data, 10);
+
 	static VFrame *default_vscroll_data[] = 
 	{
 		new VFrame(vscroll_handle_up_png), 
@@ -404,8 +457,11 @@
 		new VFrame(vscroll_right_hi_png), 
 		new VFrame(vscroll_right_dn_png)
 	};
+	add_pointer(default_vscroll_data, 10);
+
 	hscroll_data = default_hscroll_data;
 	vscroll_data = default_vscroll_data;
+*/
 
 
 
@@ -425,19 +481,15 @@
 	button_up = MEGREY;           // face when up
 	button_shadow = DKGREY;       // dark corner
 
-	tumble_data = default_tumbler_data;
+//	tumble_data = default_tumbler_data;
 	tumble_duration = 150;
 
-	ok_images = default_ok_images;
-	cancel_images = default_cancel_images;
-	usethis_button_images = default_usethis_images;
 
 	filebox_text_images = default_filebox_text_images;
 	filebox_icons_images = default_filebox_icons_images;
 	filebox_updir_images = default_filebox_updir_images;
 	filebox_newfolder_images = default_filebox_newfolder_images;
 
-	checkbox_images = default_checkbox_images;
 	radial_images = default_radial_images;
 	label_images = default_label_images;
 
@@ -465,15 +517,15 @@
 	filebox_w = 640;
 	filebox_h = 480;
 
-	listbox_button = default_listbox_button;
-	listbox_bg = default_listbox_bg;
+//	listbox_button = default_listbox_button;
+	listbox_bg = default_listbox_bg[0];
 
 	pot_images = default_pot_images;
 	pot_x1 = pot_images[0]->get_w() / 2 - 2;
 	pot_y1 = pot_images[0]->get_h() / 2 - 2;;
 	pot_r = pot_x1;
 
-	progress_images = default_progress_images;
+//	progress_images = default_progress_images;
 
 	xmeter_images = default_xmeter_data;
 	ymeter_images = default_ymeter_data;
@@ -490,6 +542,13 @@
 
 BC_Resources::~BC_Resources()
 {
+	for (int i=0; i<list_total; i++) 
+	{
+		for (int j=0; j<list_lengths[i]; j++)
+		{
+			delete list_pointers[i][j];
+		}
+	}
 }
 
 int BC_Resources::initialize_display(BC_WindowBase *window)
diff -u base/guicast/bcresources.h hvirtual-1.1.5/guicast/bcresources.h
--- base/guicast/bcresources.h	2003-05-02 19:16:23.000000000 +0200
+++ hvirtual-1.1.5/guicast/bcresources.h	2003-05-03 13:54:19.000000000 +0200
@@ -166,7 +166,10 @@
 	void init_sizes(BC_WindowBase *window);
 	static int x_error_handler(Display *display, XErrorEvent *event);
 	int top_border,left_border,right_border,bottom_border;
-
+	static VFrame **list_pointers[100];
+	static int list_lengths[100];
+	static int list_total;
+	static void add_pointer(VFrame **p, int n);
 };
 
 
diff -u base/guicast/bcwindowbase.C hvirtual-1.1.5/guicast/bcwindowbase.C
--- base/guicast/bcwindowbase.C	2003-05-04 02:51:47.000000000 +0200
+++ hvirtual-1.1.5/guicast/bcwindowbase.C	2003-05-03 18:03:02.000000000 +0200
@@ -27,10 +27,6 @@
 #include <X11/extensions/Xvlib.h>
 #include <X11/extensions/shape.h>
 
-XFontStruct *BC_WindowBase::largefont = NULL;
-XFontStruct *BC_WindowBase::mediumfont = NULL;
-XFontStruct *BC_WindowBase::smallfont = NULL;
-
 BC_ResizeCall::BC_ResizeCall(int w, int h)
 {
 	this->w = w;
@@ -1561,14 +1557,11 @@
 int BC_WindowBase::init_fonts()
 {
 
-	if (largefont == NULL) 
 	if((largefont = XLoadQueryFont(display, resources.large_font)) == NULL) 
 			largefont = XLoadQueryFont(display, "fixed"); 
-	if (mediumfont == NULL) 
 	if((mediumfont = XLoadQueryFont(display, resources.medium_font)) == NULL)
 		mediumfont = XLoadQueryFont(display, "fixed"); 
 
-	if (smallfont == NULL) 
 	if((smallfont = XLoadQueryFont(display, resources.small_font)) == NULL)
 		smallfont = XLoadQueryFont(display, "fixed"); 
 
diff -u base/guicast/bcwindowbase.h hvirtual-1.1.5/guicast/bcwindowbase.h
--- base/guicast/bcwindowbase.h	2003-05-04 02:51:47.000000000 +0200
+++ hvirtual-1.1.5/guicast/bcwindowbase.h	2003-05-03 18:02:44.000000000 +0200
@@ -634,7 +634,7 @@
 	Atom ProtoXAtom;
 	Atom RepeaterXAtom;
 	Atom SetDoneXAtom;
-	static XFontStruct *largefont, *mediumfont, *smallfont;
+	XFontStruct *largefont, *mediumfont, *smallfont;
 	int current_cursor;
 	Cursor arrow_cursor;
 	Cursor cross_cursor;
diff -u base/cinelerra/canvas.C hvirtual-1.1.5/cinelerra/canvas.C
--- base/cinelerra/canvas.C	2003-05-04 02:51:48.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/canvas.C	2003-05-03 15:12:11.000000000 +0200
@@ -38,6 +38,8 @@
 	if(refresh_frame) delete refresh_frame;
 	delete canvas_menu;
 	delete canvas;
+	if(yscroll) delete yscroll;
+	if(xscroll) delete xscroll;
 }
 
 void Canvas::reset()
diff -u base/cinelerra/cpanel.C hvirtual-1.1.5/cinelerra/cpanel.C
--- base/cinelerra/cpanel.C	2003-05-01 15:10:48.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/cpanel.C	2003-05-03 03:58:46.000000000 +0200
@@ -25,6 +25,14 @@
 
 CPanel::~CPanel()
 {
+	delete operation[CWINDOW_PROTECT];
+	delete operation[CWINDOW_ZOOM];
+	delete operation[CWINDOW_MASK];
+	delete operation[CWINDOW_CAMERA];
+	delete operation[CWINDOW_PROJECTOR];
+	delete operation[CWINDOW_CROP];
+	delete operation[CWINDOW_TOOL_WINDOW];
+	delete operation[CWINDOW_TITLESAFE];
 }
 
 int CPanel::create_objects()
diff -u base/cinelerra/cwindowgui.C hvirtual-1.1.5/cinelerra/cwindowgui.C
--- base/cinelerra/cwindowgui.C	2003-05-01 15:10:50.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/cwindowgui.C	2003-05-03 15:08:12.000000000 +0200
@@ -65,6 +65,14 @@
 CWindowGUI::~CWindowGUI()
 {
 	if(tool_panel) delete tool_panel;
+	delete meters;
+	delete composite_panel;
+	delete canvas;
+	delete timebar;
+	delete slider;
+	delete transport;
+	delete edit_panel;
+	delete zoom_panel;
 }
 
 int CWindowGUI::create_objects()
diff -u base/cinelerra/meterpanel.C hvirtual-1.1.5/cinelerra/meterpanel.C
--- base/cinelerra/meterpanel.C	2003-05-01 15:10:50.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/meterpanel.C	2003-05-03 01:48:04.000000000 +0200
@@ -27,6 +27,7 @@
 
 MeterPanel::~MeterPanel()
 {
+	meters.remove_all_objects();
 }
 
 int MeterPanel::get_meters_width(int meter_count, int use_meters)
diff -u base/cinelerra/module.C hvirtual-1.1.5/cinelerra/module.C
--- base/cinelerra/module.C	2003-05-01 15:10:47.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/module.C	2003-05-03 22:43:02.000000000 +0200
@@ -79,7 +79,8 @@
 	{
 //printf("Module::create_new_attachments 1\n");
 		new_total_attachments = track->plugin_set.total;
-		new_attachments = new AttachmentPoint*[new_total_attachments];
+		if (new_total_attachments) 
+			new_attachments = new AttachmentPoint*[new_total_attachments];
 //printf("Module::create_new_attachments 2\n");
 
 // Create plugin servers later when nodes attach
diff -u base/cinelerra/statusbar.C hvirtual-1.1.5/cinelerra/statusbar.C
--- base/cinelerra/statusbar.C	2003-05-01 15:10:50.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/statusbar.C	2003-05-03 01:54:51.000000000 +0200
@@ -16,6 +16,9 @@
 
 StatusBar::~StatusBar()
 {
+	delete status_text;
+	delete main_progress;
+	delete main_progress_cancel;
 }
 
 
diff -u base/cinelerra/theme.C hvirtual-1.1.5/cinelerra/theme.C
--- base/cinelerra/theme.C	2003-05-04 02:51:48.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/theme.C	2003-05-03 15:17:32.000000000 +0200
@@ -208,6 +208,10 @@
 //	delete [] transport_bg
 //	delete [] statusbar_cancel_data;
 
+	delete statusbar_cancel_data[0];
+	delete statusbar_cancel_data[1];
+	delete statusbar_cancel_data[2];
+
 
 // these are not patches but arrays with 
 	free_patch(in_point);
diff -u base/cinelerra/undostack.C hvirtual-1.1.5/cinelerra/undostack.C
--- base/cinelerra/undostack.C	2003-05-01 15:10:51.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/undostack.C	2003-05-03 22:52:54.000000000 +0200
@@ -64,10 +64,10 @@
 
 UndoStackItem::~UndoStackItem()
 {
-	if(description) delete description;
-	if(type) delete type;
-	if(data_after) delete data_after;
-	if(data_before) delete data_before;
+	if(description) delete [] description;
+	if(type) delete [] type;
+	if(data_after) delete [] data_after;
+	if(data_before) delete [] data_before;
 }
 
 int UndoStackItem::set_description(char *description)
diff -u base/cinelerra/virtualconsole.C hvirtual-1.1.5/cinelerra/virtualconsole.C
--- base/cinelerra/virtualconsole.C	2003-05-04 02:51:48.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/virtualconsole.C	2003-05-04 02:35:25.000000000 +0200
@@ -34,13 +34,16 @@
 VirtualConsole::~VirtualConsole()
 {
 // Destructor always calls default methods so can't put deletions in here
-	for(int i = 0; i < total_tracks; i++)
+/*	for(int i = 0; i < total_tracks; i++)
 		delete virtual_modules[i];
 
-	if(total_tracks) delete [] virtual_modules;
+	if(total_tracks) delete [] virtual_modules;*/
+	delete_virtual_console();
+	delete_input_buffers();
 
 	delete startup_lock;
-	if(playable_tracks) delete playable_tracks;
+	if (playable_tracks) 
+		delete playable_tracks;
 }
 
 int VirtualConsole::total_ring_buffers()
@@ -365,19 +368,22 @@
 int VirtualConsole::delete_input_buffers()
 {
 // delete input buffers
-	for(int buffer = 0; buffer < total_ring_buffers(); buffer++)
+	if (ring_buffers)
 	{
-		delete_input_buffer(buffer);
-	}
 
-	for(int i = 0; i < total_ring_buffers(); i++)
-	{
-		delete input_lock[i];
-		delete output_lock[i];
-	}
+		for(int buffer = 0; buffer < total_ring_buffers(); buffer++)
+		{
+			delete_input_buffer(buffer);
+		}
 
-	delete playable_tracks;
-	total_tracks = 0;
+		for(int i = 0; i < total_ring_buffers(); i++)
+		{
+			delete input_lock[i];
+			delete output_lock[i];
+		}
+
+		total_tracks = 0;
+	}
 	return 0;
 }
 
diff -u base/cinelerra/zoombar.C hvirtual-1.1.5/cinelerra/zoombar.C
--- base/cinelerra/zoombar.C	2003-05-01 15:10:50.000000000 +0200
+++ hvirtual-1.1.5/cinelerra/zoombar.C	2003-05-03 01:42:00.000000000 +0200
@@ -29,6 +29,14 @@
 
 ZoomBar::~ZoomBar()
 {
+	delete sample_zoom;
+	delete amp_zoom;
+	delete track_zoom;
+	delete from_value;
+	delete length_value;
+	delete to_value;
+	delete playback_value;
+	delete zoom_value;
 }
 
 int ZoomBar::create_objects()
diff -r -u base/plugins/defaulttheme/defaulttheme.C hvirtual-1.1.5/plugins/defaulttheme/defaulttheme.C
--- base/plugins/defaulttheme/defaulttheme.C	2003-05-02 19:16:23.000000000 +0200
+++ hvirtual-1.1.5/plugins/defaulttheme/defaulttheme.C	2003-05-03 18:40:10.000000000 +0200
@@ -68,6 +68,12 @@
 {
 }
 
+void DefaultTheme::DeleteVFrames(VFrame **vframes, int n) 
+{
+	for (int i=0; i<n; i++)
+		delete vframes[i];
+}
+
 DefaultTheme::~DefaultTheme()
 {
 	delete rgui_batch;
@@ -95,14 +101,30 @@
 	delete preferences_bg;
 	delete new_bg;
 	delete setformat_bg; 
+
+	DeleteVFrames(BC_WindowBase::get_resources()->generic_button_images, 3);
+	DeleteVFrames(BC_WindowBase::get_resources()->horizontal_slider_data, 6);
+	DeleteVFrames(BC_WindowBase::get_resources()->progress_images, 2);
+	DeleteVFrames(BC_WindowBase::get_resources()->tumble_data, 4);
+	DeleteVFrames(BC_WindowBase::get_resources()->listbox_button, 3);
+	DeleteVFrames(BC_WindowBase::get_resources()->pan_data, 7);
+	DeleteVFrames(BC_WindowBase::get_resources()->hscroll_data, 10);
+	DeleteVFrames(BC_WindowBase::get_resources()->vscroll_data, 10);
+	DeleteVFrames(BC_WindowBase::get_resources()->ok_images, 3);
+	DeleteVFrames(BC_WindowBase::get_resources()->cancel_images, 3);
+	delete [] BC_WindowBase::get_resources()->ok_images;
+	delete [] BC_WindowBase::get_resources()->cancel_images;
 }
 
+
 void DefaultTheme::initialize()
 {
 
 	static VFrame *default_button_images[] = 
 	{
-		new VFrame(get_image("generic_up.png")), new VFrame(get_image("generic_hi.png")), new VFrame(get_image("generic_dn.png"))
+		new VFrame(get_image("generic_up.png")), 
+		new VFrame(get_image("generic_hi.png")), 
+		new VFrame(get_image("generic_dn.png"))
 	};
 	BC_WindowBase::get_resources()->generic_button_images = default_button_images;
 
@@ -192,6 +214,7 @@
 		default_button_images[1],
 		default_button_images[2]);
 
+	
 	build_button(BC_WindowBase::get_resources()->cancel_images,
 		get_image("cancel.png"), 
 		default_button_images[0],
@@ -346,6 +369,11 @@
 	build_transport(stoprec_data, get_image("stoprec.png"), transport_bg, 2);
 	flush_images();
 
+	delete transport_bg[0];
+	delete transport_bg[1];
+	delete transport_bg[2];
+
+
 	title_font = MEDIUMFONT_3D;
 	title_color = WHITE;
 	recordgui_fixed_color = YELLOW;
diff -r -u base/plugins/defaulttheme/defaulttheme.h hvirtual-1.1.5/plugins/defaulttheme/defaulttheme.h
--- base/plugins/defaulttheme/defaulttheme.h	2003-05-02 19:16:23.000000000 +0200
+++ hvirtual-1.1.5/plugins/defaulttheme/defaulttheme.h	2003-05-03 17:40:27.000000000 +0200
@@ -71,6 +71,8 @@
 	VFrame *rgui_list;
 	VFrame *rmonitor_panel;
 	VFrame *rmonitor_meters;
+
+	void DeleteVFrames(VFrame **vframes, int n); 
 };
 
 
diff -r -u base/plugins/titler/title.C hvirtual-1.1.5/plugins/titler/title.C
--- base/plugins/titler/title.C	2003-05-01 15:12:23.000000000 +0200
+++ hvirtual-1.1.5/plugins/titler/title.C	2003-05-03 18:17:51.000000000 +0200
@@ -771,6 +771,10 @@
 	if(title_engine) delete title_engine;
 	if(freetype_library) FT_Done_FreeType(freetype_library);
 	if(translate) delete translate;
+	if(fonts) {
+		fonts->remove_all_objects();
+		delete fonts;
+	}
 }
 
 char* TitleMain::plugin_title() { return "Title"; }
