[gnumeric] Borders: check if "none" border is leaked too.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Borders: check if "none" border is leaked too.
- Date: Tue, 8 May 2018 14:30:51 +0000 (UTC)
commit 50f2039501898a7c297c2511502a7f6bc70144c8
Author: Morten Welinder <terra gnome org>
Date: Tue May 8 10:30:01 2018 -0400
Borders: check if "none" border is leaked too.
src/style-border.c | 31 ++++++++++++++++++++++++++-----
1 files changed, 26 insertions(+), 5 deletions(-)
---
diff --git a/src/style-border.c b/src/style-border.c
index 0250164..e071a8a 100644
--- a/src/style-border.c
+++ b/src/style-border.c
@@ -136,6 +136,11 @@ style_border_hash (gconstpointer v)
return (GPOINTER_TO_UINT(b->color) ^ b->line_type);
}
+/**
+ * gnm_style_border_none:
+ *
+ * Returns: (transfer none): A #GnmBorder with no borders.
+ */
GnmBorder *
gnm_style_border_none (void)
{
@@ -155,7 +160,7 @@ gnm_style_border_none (void)
/**
* gnm_style_border_none_set_color:
- * @color:
+ * @color: (transfer full): #GnmColor
*
* This function updates the color of gnm_style_border_none when the wanted grid
* color is known. gnm_style_border_none tells how to render the grid. Because
@@ -165,7 +170,6 @@ gnm_style_border_none (void)
* color is default (which is black), the grid color is gray, as returned by
* style_color_grid (). - otherwise, the auto pattern color is used for the
* grid.
- * NOTE : Absorbs a reference to @color.
*/
void
gnm_style_border_none_set_color (GnmColor *color)
@@ -186,7 +190,7 @@ gnm_style_border_none_set_color (GnmColor *color)
/**
* gnm_style_border_fetch:
* @line_type: dash style
- * @color: (transfer full): colour
+ * @color: (transfer full) (nullable): colour
* @orientation: Not currently used.
*
* Fetches a GnmBorder from the cache, creating one if necessary. Absorbs
@@ -280,6 +284,12 @@ gnm_style_border_get_orientation (GnmStyleBorderLocation type)
}
}
+/**
+ * gnm_style_border_ref:
+ * @border: (nullable): #GnmBorder
+ *
+ * Returns: (transfer full): a reference to @border
+ */
GnmBorder *
gnm_style_border_ref (GnmBorder *border)
{
@@ -291,6 +301,10 @@ gnm_style_border_ref (GnmBorder *border)
return border;
}
+/**
+ * gnm_style_border_unref:
+ * @border: (transfer full) (nullable): #GnmBorder
+ */
void
gnm_style_border_unref (GnmBorder *border)
{
@@ -334,12 +348,19 @@ cb_border_leak (gpointer key, gpointer value, gpointer user_data)
border->ref_count);
}
+/**
+ * gnm_border_shutdown: (skip)
+ */
void
gnm_border_shutdown (void)
{
if (border_none) {
- style_color_unref (border_none->color);
- g_free (border_none);
+ if (border_none->ref_count == 1) {
+ style_color_unref (border_none->color);
+ g_free (border_none);
+ } else {
+ cb_border_leak (NULL, border_none, NULL);
+ }
border_none = NULL;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]