diff --git a/src/iso2022.c b/src/iso2022.c
index a0abe26..8dc604c 100644
--- a/src/iso2022.c
+++ b/src/iso2022.c
@@ -802,24 +802,9 @@ void
 _vte_iso2022_state_free(struct _vte_iso2022_state *state)
 {
 	_vte_buffer_free(state->buffer);
-	state->buffer = NULL;
-	state->codeset_changed_data = NULL;
-	state->codeset_changed = NULL;
 	if (state->conv != ((VteConv) -1)) {
 		_vte_conv_close(state->conv);
 	}
-	state->conv = (VteConv) -1;
-	state->target_codeset = NULL;
-	state->utf8_codeset = NULL;
-	state->native_codeset = NULL;
-	state->codeset = NULL;
-	state->g[3] = WIDE_FUDGE + 'D';
-	state->g[2] = 'J';
-	state->g[1] = '0';
-	state->g[0] = 'B';
-	state->override = -1;
-	state->current = 0;
-	state->nrc_enabled = FALSE;
 	g_slice_free(struct _vte_iso2022_state, state);
 }
 
diff --git a/src/matcher.c b/src/matcher.c
index 527b27c..c237329 100644
--- a/src/matcher.c
+++ b/src/matcher.c
@@ -270,15 +270,11 @@ _vte_matcher_free_params_array(GValueArr
 {
 	guint i;
 	GValue *value;
-	gpointer ptr;
 	if (params != NULL) {
 		for (i = 0; i < params->n_values; i++) {
 			value = g_value_array_get_nth(params, i);
 			if (G_VALUE_HOLDS_POINTER(value)) {
-				ptr = g_value_get_pointer(value);
-				if (ptr != NULL) {
-					g_free(ptr);
-				}
+				g_free(g_value_get_pointer(value));
 				g_value_set_pointer(value, NULL);
 			}
 		}
diff --git a/src/ring.c b/src/ring.c
index d6c9b25..02e39c1 100644
--- a/src/ring.c
+++ b/src/ring.c
@@ -324,15 +324,10 @@ _vte_ring_free(VteRing * ring, gboolean 
 			/* Remove this item. */
 			if (ring->array[i] != NULL) {
 				ring->free(ring->array[i], ring->user_data);
-				ring->array[i] = NULL;
 			}
 		}
 	}
 	g_free(ring->array);
-	ring->free = NULL;
-	ring->user_data = NULL;
-	ring->array = NULL;
-	ring->delta = ring->length = ring->max = 0;
 	g_slice_free(VteRing, ring);
 }
 
diff --git a/src/table.c b/src/table.c
index 39070c3..728f076 100644
--- a/src/table.c
+++ b/src/table.c
@@ -86,7 +86,6 @@ _vte_table_free(struct _vte_table *table
 		for (i = 0; i < VTE_TABLE_MAX_LITERAL; i++) {
 			if (table->table[i] != NULL) {
 				_vte_table_free(table->table[i]);
-				table->table[i] = NULL;
 			}
 		}
 		g_free(table->table);
@@ -103,9 +102,7 @@ _vte_table_free(struct _vte_table *table
 		g_assert(table->original != NULL);
 	}
 	if (table->original != NULL) {
-		table->original_length = 0;
 		g_free(table->original);
-		table->original = NULL;
 	}
 	g_slice_free(struct _vte_table, table);
 }
diff --git a/src/trie.c b/src/trie.c
index 559eb71..18015ca 100644
--- a/src/trie.c
+++ b/src/trie.c
@@ -682,7 +682,6 @@ _vte_trie_match(struct _vte_trie *trie, 
 	GValueArray *valuearray;
 	GValue *value;
 	const gunichar *dummyconsumed;
-	gpointer ptr;
 	gboolean greedy = FALSE;
 	int i;
 
@@ -705,10 +704,7 @@ _vte_trie_match(struct _vte_trie *trie, 
 			for (i = 0; i < valuearray->n_values; i++) {
 				value = g_value_array_get_nth(valuearray, i);
 				if (G_VALUE_HOLDS_POINTER(value)) {
-					ptr = g_value_get_pointer(value);
-					if (ptr != NULL) {
-						g_free(ptr);
-					}
+					g_free(g_value_get_pointer(value));
 					g_value_set_pointer(value, NULL);
 				}
 			}
diff --git a/src/vte.c b/src/vte.c
index e88623f..9a96dba 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -857,7 +857,7 @@ _vte_terminal_match_contents_clear(VteTe
 	g_assert(VTE_IS_TERMINAL(terminal));
 	if (terminal->pvt->match_contents != NULL) {
 		g_free(terminal->pvt->match_contents);
-		terminal->pvt->match_contents = NULL;;
+		terminal->pvt->match_contents = NULL;
 	}
 	if (terminal->pvt->match_attributes != NULL) {
 		g_array_free(terminal->pvt->match_attributes, TRUE);
@@ -2662,10 +2662,7 @@ _vte_terminal_fork_basic(VteTerminal *te
 	}
 
 	/* Clean up. */
-	for (i = 0; env_add[i] != NULL; i++) {
-		g_free(env_add[i]);
-	}
-	g_free(env_add);
+	g_strfreev(env_add);
 
 	/* Return the pid to the caller. */
 	return pid;
@@ -4868,9 +4865,7 @@ vte_terminal_get_text_range_maybe_wrappe
 		}
 	}
 	/* Sanity check. */
-	if (attributes) {
-		g_assert(string->len == attributes->len);
-	}
+	g_assert(attributes == NULL || string->len == attributes->len);
 	return g_string_free(string, FALSE);
 }
 
@@ -5019,9 +5014,7 @@ vte_terminal_copy(VteTerminal *terminal,
 	clipboard = vte_terminal_clipboard_get(terminal, board);
 
 	/* Chuck old selected text and retrieve the newly-selected text. */
-	if (terminal->pvt->selection != NULL) {
-		g_free(terminal->pvt->selection);
-	}
+	g_free(terminal->pvt->selection);
 	terminal->pvt->selection =
 		vte_terminal_get_text_range(terminal,
 					    terminal->pvt->selection_start.y,
@@ -7086,26 +7079,21 @@ #endif
 	if (terminal->pvt->draw != NULL) {
 		_vte_draw_free(terminal->pvt->draw);
 	}
-	terminal->pvt->draw = NULL;
 
 	/* The NLS maps. */
 	if (terminal->pvt->iso2022 != NULL) {
 		_vte_iso2022_state_free(terminal->pvt->iso2022);
-		terminal->pvt->iso2022 = NULL;
 	}
 
 	/* Free background info. */
 	if (terminal->pvt->bg_update_tag != VTE_INVALID_SOURCE) {
 		g_source_remove(terminal->pvt->bg_update_tag);
-		terminal->pvt->bg_update_tag = VTE_INVALID_SOURCE;
-		terminal->pvt->bg_update_pending = FALSE;
 		g_free(terminal->pvt->bg_file);
 	}
 
 	/* Free the font description. */
 	if (terminal->pvt->fontdesc != NULL) {
 		pango_font_description_free(terminal->pvt->fontdesc);
-		terminal->pvt->fontdesc = NULL;
 	}
 	terminal->pvt->fontantialias = VTE_ANTI_ALIAS_USE_DEFAULT;
 	vte_terminal_disconnect_xft_settings(terminal);
@@ -7113,11 +7101,9 @@ #endif
 	/* Free matching data. */
 	if (terminal->pvt->match_attributes != NULL) {
 		g_array_free(terminal->pvt->match_attributes, TRUE);
-		terminal->pvt->match_attributes = NULL;
 	}
 	if (terminal->pvt->match_contents != NULL) {
 		g_free(terminal->pvt->match_contents);
-		terminal->pvt->match_contents = NULL;
 	}
 	if (terminal->pvt->match_regexes != NULL) {
 		for (i = 0; i < terminal->pvt->match_regexes->len; i++) {
@@ -7130,15 +7116,10 @@ #endif
 			}
 			if (regex->cursor != NULL) {
 				gdk_cursor_unref(regex->cursor);
-				regex->cursor = NULL;
 			}
 			_vte_regex_free(regex->reg);
-			regex->reg = NULL;
-			regex->tag = 0;
 		}
 		g_array_free(terminal->pvt->match_regexes, TRUE);
-		terminal->pvt->match_regexes = NULL;
-		terminal->pvt->match_previous = -1;
 	}
 
 	/* Disconnect from toplevel window configure events. */
@@ -7155,17 +7136,12 @@ #endif
 	/* Cancel pending adjustment change notifications. */
 	if (terminal->pvt->adjustment_changed_tag) {
 		g_source_remove(terminal->pvt->adjustment_changed_tag);
-		terminal->pvt->adjustment_changed_tag = 0;
 	}
 
 	/* Tabstop information. */
 	if (terminal->pvt->tabstops != NULL) {
 		g_hash_table_destroy(terminal->pvt->tabstops);
-		terminal->pvt->tabstops = NULL;
 	}
-	terminal->pvt->text_modified_flag = FALSE;
-	terminal->pvt->text_inserted_count = 0;
-	terminal->pvt->text_deleted_count = 0;
 
 	/* Free any selected text, but if we currently own the selection,
 	 * throw the text onto the clipboard without an owner so that it
@@ -7179,24 +7155,18 @@ #endif
 					       -1);
 		}
 		g_free(terminal->pvt->selection);
-		terminal->pvt->selection = NULL;
 	}
 	if (terminal->pvt->word_chars != NULL) {
 		g_array_free(terminal->pvt->word_chars, TRUE);
-		terminal->pvt->word_chars = NULL;
 	}
 
 	/* Clear the output histories. */
 	_vte_ring_free(terminal->pvt->normal_screen.row_data, TRUE);
-	terminal->pvt->normal_screen.row_data = NULL;
 	_vte_ring_free(terminal->pvt->alternate_screen.row_data, TRUE);
-	terminal->pvt->alternate_screen.row_data = NULL;
 
 	/* Clear the status lines. */
-	terminal->pvt->normal_screen.status_line = FALSE;
 	g_string_free(terminal->pvt->normal_screen.status_line_contents,
 		      TRUE);
-	terminal->pvt->alternate_screen.status_line = FALSE;
 	g_string_free(terminal->pvt->alternate_screen.status_line_contents,
 		      TRUE);
 
@@ -7212,7 +7182,6 @@ #endif
 						     vte_terminal_catch_child_exited,
 						     terminal);
 		g_object_unref(terminal->pvt->pty_reaper);
-		terminal->pvt->pty_reaper = NULL;
 	}
 
 	/* Stop processing input. */
@@ -7222,19 +7191,15 @@ #endif
 	if (terminal->pvt->incoming != NULL) {
 		_vte_buffer_free(terminal->pvt->incoming);
 	}
-	terminal->pvt->incoming = NULL;
 	if (terminal->pvt->outgoing != NULL) {
 		_vte_buffer_free(terminal->pvt->outgoing);
 	}
-	terminal->pvt->outgoing = NULL;
 	if (terminal->pvt->pending != NULL) {
 		g_array_free(terminal->pvt->pending, TRUE);
 	}
-	terminal->pvt->pending = NULL;
 	if (terminal->pvt->conv_buffer != NULL) {
 		_vte_buffer_free(terminal->pvt->conv_buffer);
 	}
-	terminal->pvt->conv_buffer = NULL;
 
 	/* Stop the child and stop watching for input from the child. */
 	if (terminal->pvt->pty_pid != -1) {
@@ -7247,52 +7212,31 @@ #ifdef HAVE_GETPGID
 #endif
 		kill(terminal->pvt->pty_pid, SIGHUP);
 	}
-	terminal->pvt->pty_pid = -1;
 	_vte_terminal_disconnect_pty_read(terminal);
 	_vte_terminal_disconnect_pty_write(terminal);
 	if (terminal->pvt->pty_master != -1) {
 		_vte_pty_close(terminal->pvt->pty_master);
 		close(terminal->pvt->pty_master);
 	}
-	terminal->pvt->pty_master = -1;
-
-	/* Clear some of our strings. */
-	terminal->pvt->shell = NULL;
 
 	/* Remove hash tables. */
 	if (terminal->pvt->dec_saved != NULL) {
 		g_hash_table_destroy(terminal->pvt->dec_saved);
-		terminal->pvt->dec_saved = NULL;
 	}
 
 	/* Clean up emulation structures. */
-	memset(&terminal->pvt->flags, 0, sizeof(terminal->pvt->flags));
-	terminal->pvt->emulation = NULL;
-	terminal->pvt->termcap_path = NULL;
 	if (terminal->pvt->matcher != NULL) {
 		_vte_matcher_free(terminal->pvt->matcher);
-		terminal->pvt->matcher = NULL;
 	}
 	_vte_termcap_free(terminal->pvt->termcap);
-	terminal->pvt->termcap = NULL;
 
 	remove_update_timeout (terminal);
 
-	/* Done with our private data. */
-	terminal->pvt = NULL;
-
 	/* Free public-facing data. */
-	if (terminal->window_title != NULL) {
-		g_free(terminal->window_title);
-		terminal->window_title = NULL;
-	}
-	if (terminal->icon_title != NULL) {
-		g_free(terminal->icon_title);
-		terminal->icon_title = NULL;
-	}
+	g_free(terminal->window_title);
+	g_free(terminal->icon_title);
 	if (terminal->adjustment != NULL) {
 		g_object_unref(terminal->adjustment);
-		terminal->adjustment = NULL;
 	}
 
 	/* Call the inherited finalize() method. */
@@ -8726,7 +8670,7 @@ vte_terminal_draw_cells_with_attributes(
 	for (i = 0, cell_count = 0; i < n; i++) {
 		cell_count += g_unichar_to_utf8(items[i].c, scratch_buf);
 	}
-	cells = g_malloc(cell_count * sizeof(struct vte_charcell));
+	cells = g_new(struct vte_charcell, cell_count);
 	_vte_terminal_translate_pango_cells(terminal, attrs, cells, cell_count);
 	for (i = 0, j = 0; i < n; i++) {
 		vte_terminal_determine_colors(terminal, &cells[j],
diff --git a/src/vteaccess.c b/src/vteaccess.c
index 79dc3c6..6be937c 100644
--- a/src/vteaccess.c
+++ b/src/vteaccess.c
@@ -82,19 +82,15 @@ vte_terminal_accessible_free_private_dat
 	g_assert(priv != NULL);
 	if (priv->snapshot_text != NULL) {
 		g_string_free(priv->snapshot_text, TRUE);
-		priv->snapshot_text = NULL;
 	}
 	if (priv->snapshot_characters != NULL) {
 		g_array_free(priv->snapshot_characters, TRUE);
-		priv->snapshot_characters = NULL;
 	}
 	if (priv->snapshot_attributes != NULL) {
 		g_array_free(priv->snapshot_attributes, TRUE);
-		priv->snapshot_attributes = NULL;
 	}
 	if (priv->snapshot_linebreaks != NULL) {
 		g_array_free(priv->snapshot_linebreaks, TRUE);
-		priv->snapshot_linebreaks = NULL;
 	}
 	g_slice_free(VteTerminalAccessiblePrivate, priv);
 }
diff --git a/src/vtebg.c b/src/vtebg.c
index 3f61692..d5b53f7 100644
--- a/src/vtebg.c
+++ b/src/vtebg.c
@@ -144,9 +144,7 @@ #ifdef VTE_DEBUG
 			}
 #endif
 		}
-		if (pixmaps != NULL) {
-			g_free(pixmaps);
-		}
+		g_free(pixmaps);
 	}
 	_vte_bg_display_sync(bg);
 	gdk_error_trap_pop();
@@ -334,21 +332,15 @@ vte_bg_cache_item_free(struct VteBgCache
 	if (item->source_pixbuf != NULL) {
 		g_object_remove_weak_pointer(G_OBJECT(item->source_pixbuf),
 				(gpointer*)&item->source_pixbuf);
-		item->source_pixbuf = NULL;
-	}
-	if (item->source_file != NULL) {
-		g_free(item->source_file);
-		item->source_file = NULL;
 	}
+	g_free(item->source_file);
 	if (item->pixmap != NULL) {
 		g_object_remove_weak_pointer(G_OBJECT(item->pixmap),
 				(gpointer*)&item->pixmap);
-		item->pixmap = NULL;
 	}
 	if (item->pixbuf != NULL) {
 		g_object_remove_weak_pointer(G_OBJECT(item->pixbuf),
 				(gpointer*)&item->pixbuf);
-		item->pixbuf = NULL;
 	}
 
 	g_slice_free(struct VteBgCacheItem, item);
diff --git a/src/vteconv.c b/src/vteconv.c
index 0170adb..f69025b 100644
--- a/src/vteconv.c
+++ b/src/vteconv.c
@@ -185,19 +185,10 @@ _vte_conv_close(VteConv converter)
 		g_assert(converter->close != NULL);
 		converter->close(converter->conv);
 	}
-	converter->conv = NULL;
-	converter->convert = NULL;
-	converter->close = NULL;
-
-	/* Clear the rest of the structure. */
-	converter->in_unichar = FALSE;
-	converter->out_unichar = FALSE;
 
 	/* Free the scratch buffers. */
 	_vte_buffer_free(converter->in_scratch);
 	_vte_buffer_free(converter->out_scratch);
-	converter->in_scratch = NULL;
-	converter->out_scratch = NULL;
 
 	/* Free the structure itself. */
 	g_slice_free(struct _VteConv, converter);
diff --git a/src/vtedraw.c b/src/vtedraw.c
index 0426303..e35f682 100644
--- a/src/vtedraw.c
+++ b/src/vtedraw.c
@@ -102,14 +102,10 @@ void
 _vte_draw_free(struct _vte_draw *draw)
 {
 	draw->impl->destroy(draw);
-	draw->impl = NULL;
-	draw->impl_data = NULL;
 
 	if (draw->widget != NULL) {
 		g_object_unref(draw->widget);
-		draw->widget = NULL;
 	}
-	draw->started = FALSE;
 
 	g_slice_free(struct _vte_draw, draw);
 }
diff --git a/src/vteft2.c b/src/vteft2.c
index 1bf9ded..ea04287 100644
--- a/src/vteft2.c
+++ b/src/vteft2.c
@@ -70,17 +70,13 @@ _vte_ft2_destroy(struct _vte_draw *draw)
 	data = (struct _vte_ft2_data*) draw->impl_data;
 	if (data->cache != NULL) {
 		_vte_glyph_cache_free(data->cache);
-		data->cache = NULL;
 	}
 	if (data->rgb != NULL) {
 		_vte_rgb_buffer_free(data->rgb);
 	}
-	memset(&data->color, 0, sizeof(data->color));
 	if (data->pixbuf != NULL) {
 		g_object_unref(data->pixbuf);
-		data->pixbuf = NULL;
 	}
-	data->scrollx = data->scrolly = 0;
 	g_slice_free(struct _vte_ft2_data, data);
 }
 
diff --git a/src/vtegl.c b/src/vtegl.c
index 2450c63..2acad17 100644
--- a/src/vtegl.c
+++ b/src/vtegl.c
@@ -163,34 +163,22 @@ _vte_gl_destroy(struct _vte_draw *draw)
 	struct _vte_gl_data *data;
 	GdkDisplay *gdisplay;
 	Display *display;
-	GdkScreen *gscreen;
-	int screen;
 
 	data = (struct _vte_gl_data*) draw->impl_data;
 	gdisplay = gdk_display_get_default();
 	display = gdk_x11_display_get_xdisplay(gdisplay);
-	gscreen = gdk_screen_get_default();
-	screen = gdk_x11_screen_get_screen_number(gscreen);
 
 	_vte_buffer_free(data->buffer);
-	data->buffer = NULL;
 
 	_vte_glyph_cache_free(data->cache);
-	data->cache = NULL;
 
 	if (data->bgpixbuf != NULL) {
 		g_object_unref(data->bgpixbuf);
 	}
-	data->bgpixbuf = NULL;
 
 	glXMakeCurrent(display, None, data->context);
 
 	glXDestroyContext(display, data->context);
-	data->context = NULL;
-
-	data->scrollx = data->scrolly = 0;
-
-	memset(&data->color, 0, sizeof(data->color));
 
 	g_slice_free(struct _vte_gl_data, draw->impl_data);
 }
diff --git a/src/vteglyph.c b/src/vteglyph.c
index c50bd47..65e415f 100644
--- a/src/vteglyph.c
+++ b/src/vteglyph.c
@@ -103,32 +103,21 @@ _vte_glyph_cache_free(struct _vte_glyph_
 						       i));
 		}
 		g_array_free(cache->patterns, TRUE);
-		cache->patterns = NULL;
 	}
 
 	/* Close all faces. */
-	for (iter = cache->faces; iter != NULL; iter = g_list_next(iter)) {
-		FT_Done_Face((FT_Face) iter->data);
-		iter->data = NULL;
-	}
-	cache->faces = NULL;
+	g_list_foreach(cache->faces, (GFunc)FT_Done_Face, NULL);
+	g_list_free(cache->faces);
 
 	/* Free the glyph tree. */
 	g_tree_foreach(cache->cache, free_tree_value, NULL);
-	cache->cache = NULL;
 
 	/* Close the FT library. */
 	if (cache->ft_library) {
 		FT_Done_FreeType(cache->ft_library);
-		cache->ft_library = NULL;
 	}
 
 	/* Free the cache. */
-	cache->ft_load_flags = 0;
-	cache->ft_render_flags = 0;
-	cache->width = 0;
-	cache->height = 0;
-	cache->ascent = 0;
 	g_slice_free(struct _vte_glyph_cache, cache);
 }
 
diff --git a/src/vtepango.c b/src/vtepango.c
index 3210dda..38199ef 100644
--- a/src/vtepango.c
+++ b/src/vtepango.c
@@ -75,32 +75,22 @@ _vte_pango_destroy(struct _vte_draw *dra
 	struct _vte_pango_data *data;
 	data = (struct _vte_pango_data*) draw->impl_data;
 
-	data->scrollx = data->scrolly = 0;
-
 	if (data->pixmap != NULL) {
 		g_object_unref(data->pixmap);
-		data->pixmap = NULL;
-		data->pixmapw = data->pixmaph = 0;
 	}
 	if (data->font != NULL) {
 		pango_font_description_free(data->font);
-		data->font = NULL;
 	}
 	if (data->layout != NULL) {
 		g_object_unref(data->layout);
-		data->layout = NULL;
 	}
 	if (data->ctx != NULL) {
 		g_object_unref(data->ctx);
-		data->ctx = NULL;
 	}
 	if (data->gc != NULL) {
 		g_object_unref(data->gc);
-		data->gc = NULL;
 	}
 
-	memset(&data->color, 0, sizeof(data->color));
-
 	g_slice_free(struct _vte_pango_data, draw->impl_data);
 }
 
diff --git a/src/vtepangox.c b/src/vtepangox.c
index c3a2730..03da8c1 100644
--- a/src/vtepangox.c
+++ b/src/vtepangox.c
@@ -81,32 +81,22 @@ _vte_pango_x_destroy(struct _vte_draw *d
 	struct _vte_pango_x_data *data;
 	data = (struct _vte_pango_x_data*) draw->impl_data;
 
-	data->scrollx = data->scrolly = 0;
-
 	if (data->pixmap != NULL) {
 		g_object_unref(data->pixmap);
-		data->pixmap = NULL;
-		data->pixmapw = data->pixmaph = 0;
 	}
 	if (data->font != NULL) {
 		pango_font_description_free(data->font);
-		data->font = NULL;
 	}
 	if (data->layout != NULL) {
 		g_object_unref(data->layout);
-		data->layout = NULL;
 	}
 	if (data->gc != NULL) {
 		g_object_unref(data->gc);
-		data->gc = NULL;
 	}
 	if (data->ctx != NULL) {
 		g_object_unref(data->ctx);
-		data->ctx = NULL;
 	}
 
-	memset(&data->color, 0, sizeof(data->color));
-
 	g_slice_free(struct _vte_pango_x_data, draw->impl_data);
 }
 
diff --git a/src/vtergb.c b/src/vtergb.c
index f2bd905..03d2ccb 100644
--- a/src/vtergb.c
+++ b/src/vtergb.c
@@ -37,7 +37,7 @@ _vte_rgb_buffer_new(gint width, gint hei
 {
 	struct _vte_rgb_buffer_p *ret;
 
-	ret = g_malloc0(sizeof(*ret));
+	ret = g_slice_new(struct _vte_rgb_buffer_p);
 
 	width = MAX(width, 1);
 	height = MAX(height, 1);
@@ -57,14 +57,7 @@ _vte_rgb_buffer_free(struct _vte_rgb_buf
 	struct _vte_rgb_buffer_p *buf = (struct _vte_rgb_buffer_p *) buffer;
 
 	g_free(buf->pixels);
-
-	buf->length = 0;
-	buf->stride = 0;
-	buf->height = 0;
-	buf->width = 0;
-	buf->pixels = NULL;
-
-	g_free(buf);
+	g_slice_free(struct _vte_rgb_buffer_p, buf);
 }
 
 void
diff --git a/src/vteseq.c b/src/vteseq.c
index b60c7a1..eff303e 100644
--- a/src/vteseq.c
+++ b/src/vteseq.c
@@ -2231,21 +2231,11 @@ vte_sequence_handler_se(VteTerminal *ter
 		terminal->pvt->screen->defaults.standout = 0;
 	}
 
-	if (blink) {
-		g_free(blink);
-	}
-	if (bold) {
-		g_free(bold);
-	}
-	if (half) {
-		g_free(half);
-	}
-	if (reverse) {
-		g_free(reverse);
-	}
-	if (underline) {
-		g_free(underline);
-	}
+	g_free(blink);
+	g_free(bold);
+	g_free(half);
+	g_free(reverse);
+	g_free(underline);
 	g_free(standout);
 	return FALSE;
 }
@@ -2396,21 +2386,11 @@ vte_sequence_handler_so(VteTerminal *ter
 		terminal->pvt->screen->defaults.standout = 1;
 	}
 
-	if (blink) {
-		g_free(blink);
-	}
-	if (bold) {
-		g_free(bold);
-	}
-	if (half) {
-		g_free(half);
-	}
-	if (reverse) {
-		g_free(reverse);
-	}
-	if (underline) {
-		g_free(underline);
-	}
+	g_free(blink);
+	g_free(bold);
+	g_free(half);
+	g_free(reverse);
+	g_free(underline);
 	g_free(standout);
 	return FALSE;
 }
diff --git a/src/vteskel.c b/src/vteskel.c
index 5718d0f..7717967 100644
--- a/src/vteskel.c
+++ b/src/vteskel.c
@@ -65,16 +65,10 @@ _vte_skel_destroy(struct _vte_draw *draw
 	struct _vte_skel_data *data;
 	data = (struct _vte_skel_data*) draw->impl_data;
 
-	data->scrollx = data->scrolly = 0;
-
 	if (data->pixmap != NULL) {
 		g_object_unref(data->pixmap);
-		data->pixmap = NULL;
-		data->pixmapw = data->pixmaph = 0;
 	}
 
-	memset(&data->color, 0, sizeof(data->color));
-
 	g_slice_free(struct _vte_skel_data, draw->impl_data);
 }
 
diff --git a/src/vtexft.c b/src/vtexft.c
index 2126d23..8de6002 100644
--- a/src/vtexft.c
+++ b/src/vtexft.c
@@ -130,7 +130,6 @@ _vte_xft_font_close(struct _vte_xft_font
 		FcPatternDestroy(pattern);
 	}
 	g_array_free(font->patterns, TRUE);
-	font->patterns = NULL;
 
 	gdisplay = gdk_display_get_default();
 	display = gdk_x11_display_get_xdisplay(gdisplay);
@@ -141,12 +140,9 @@ _vte_xft_font_close(struct _vte_xft_font
 		}
 	}
 	g_array_free(font->fonts, TRUE);
-	font->fonts = NULL;
 
 	_vte_tree_destroy(font->fontmap);
-	font->fontmap = NULL;
 	_vte_tree_destroy(font->widths);
-	font->widths = NULL;
 
 	g_slice_free(struct _vte_xft_font, font);
 }
@@ -314,30 +310,14 @@ _vte_xft_destroy(struct _vte_draw *draw)
 	data = (struct _vte_xft_data*) draw->impl_data;
 	if (data->font != NULL) {
 		_vte_xft_font_close(data->font);
-		data->font = NULL;
 	}
-	data->display = NULL;
-	data->drawable = -1;
-	data->x_offs = data->y_offs = 0;
-	data->visual = NULL;
 	data->colormap = -1;
 	if (data->draw != NULL) {
 		XftDrawDestroy(data->draw);
-		data->draw = NULL;
-		data->display = NULL;
-		data->drawable = -1;
-		data->visual = NULL;
-		data->colormap = -1;
 	}
 	if (data->gc != NULL) {
 		XFreeGC(data->display, data->gc);
-		data->gc = NULL;
 	}
-	memset(&data->color, 0, sizeof(data->color));
-	data->pixmap = NULL;
-	data->xpixmap = -1;
-	data->pixmapw = data->pixmaph = -1;
-	data->scrollx = data->scrolly = 0;
 	g_slice_free(struct _vte_xft_data, data);
 }
 
