summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2014-02-21 21:54:40 +0100
committerBenjamin Otte <otte@redhat.com>2014-02-23 15:40:46 +0100
commit10fa786dfa718188243935c32deedfa8bec1f208 (patch)
treed0eaa3d5d27fc4cafef60e8dd2e783601a47bf94
parentb4ddc0b58ec7387de634d57433c312e7de7b93e5 (diff)
downloadgtk+-10fa786dfa718188243935c32deedfa8bec1f208.tar.gz
csskeyframes: Split new() into alloc() and new()
The new() function is supposed to return an empty fully initialized GtkCssKeyframes object, while the alloc() function just allocates and initializes static values. So alloc() can be used for copying or resolving keyframes. Fixes a memleak when resolving keyframes.
-rw-r--r--gtk/gtkcsskeyframes.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/gtk/gtkcsskeyframes.c b/gtk/gtkcsskeyframes.c
index f25b0c4100..5fe905593d 100644
--- a/gtk/gtkcsskeyframes.c
+++ b/gtk/gtkcsskeyframes.c
@@ -170,13 +170,23 @@ gtk_css_keyframes_lookup_property (GtkCssKeyframes *keyframes,
}
static GtkCssKeyframes *
-gtk_css_keyframes_new (void)
+gtk_css_keyframes_alloc (void)
{
GtkCssKeyframes *keyframes;
keyframes = g_slice_new0 (GtkCssKeyframes);
keyframes->ref_count = 1;
+ return keyframes;
+}
+
+static GtkCssKeyframes *
+gtk_css_keyframes_new (void)
+{
+ GtkCssKeyframes *keyframes;
+
+ keyframes = gtk_css_keyframes_alloc ();
+
gtk_css_keyframes_add_keyframe (keyframes, 0);
gtk_css_keyframes_add_keyframe (keyframes, 1);
@@ -439,7 +449,7 @@ _gtk_css_keyframes_compute (GtkCssKeyframes *keyframes,
g_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL);
g_return_val_if_fail (parent_values == NULL || GTK_IS_CSS_COMPUTED_VALUES (parent_values), NULL);
- resolved = gtk_css_keyframes_new ();
+ resolved = gtk_css_keyframes_alloc ();
resolved->n_keyframes = keyframes->n_keyframes;
resolved->keyframe_progress = g_memdup (keyframes->keyframe_progress, keyframes->n_keyframes * sizeof (double));
resolved->n_properties = keyframes->n_properties;