diff --git a/src/register/register-gnome/gnucash-sheet.c b/src/register/register-gnome/gnucash-sheet.c index 2c8f184e40..28078a823f 100644 --- a/src/register/register-gnome/gnucash-sheet.c +++ b/src/register/register-gnome/gnucash-sheet.c @@ -2367,7 +2367,8 @@ gnucash_sheet_init (GnucashSheet *sheet) sheet->width = 0; sheet->height = 0; - sheet->cursor_styles = g_hash_table_new (g_str_hash, g_str_equal); + sheet->cursor_styles = g_hash_table_new_full (g_str_hash, g_str_equal, + g_free, NULL); sheet->blocks = g_table_new (sizeof (SheetBlock), gnucash_sheet_block_construct, @@ -2426,8 +2427,9 @@ gnucash_sheet_new (Table *table) sheet->grid = item; /* some register data */ - sheet->dimensions_hash_table = g_hash_table_new (g_int_hash, - g_int_equal); + sheet->dimensions_hash_table = g_hash_table_new_full (g_int_hash, + g_int_equal, + g_free, NULL); /* The cursor */ sheet->cursor = gnucash_cursor_new (sheet_group); diff --git a/src/register/register-gnome/gnucash-style.c b/src/register/register-gnome/gnucash-style.c index f3df080b8a..8b767a5b4c 100644 --- a/src/register/register-gnome/gnucash-style.c +++ b/src/register/register-gnome/gnucash-style.c @@ -48,6 +48,15 @@ style_get_key (SheetBlockStyle *style) return &key; } +static gpointer +style_create_key (SheetBlockStyle *style) +{ + static gint key; + + key = style->cursor->num_rows; + + return g_memdup(&key, sizeof(key)); +} static void cell_dimensions_construct (gpointer _cd, gpointer user_data) @@ -103,7 +112,7 @@ gnucash_style_dimensions_init (GnucashSheet *sheet, SheetBlockStyle *style) if (!dimensions) { dimensions = style_dimensions_new (style); g_hash_table_insert (sheet->dimensions_hash_table, - style_get_key (style), dimensions); + style_create_key (style), dimensions); } dimensions->refcount++;