diff options
Diffstat (limited to 'pango/pango-utils.c')
-rw-r--r-- | pango/pango-utils.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/pango/pango-utils.c b/pango/pango-utils.c index 38083f18..9c570230 100644 --- a/pango/pango-utils.c +++ b/pango/pango-utils.c @@ -945,37 +945,46 @@ pango_matrix_get_type (void) /** * pango_matrix_copy: - * @matrix: a #PangoMatrix + * @matrix: a #PangoMatrix, can be %NULL * * Copies a #PangoMatrix. * * Return value: the newly allocated #PangoMatrix, which should - * be freed with pango_matrix_free(). + * be freed with pango_matrix_free(), or %NULL if + * @matrix was %NULL. * * Since: 1.6 **/ PangoMatrix * pango_matrix_copy (const PangoMatrix *matrix) { - g_return_val_if_fail (matrix != NULL, NULL); + PangoMatrix *new_matrix; + + if (matrix) + { + new_matrix = g_slice_new (PangoMatrix); + *new_matrix = *matrix; + } + else + new_matrix = NULL; - return g_memdup (matrix, sizeof (PangoMatrix)); + return new_matrix; } /** * pango_matrix_free: - * @matrix: a #PangoMatrix + * @matrix: a #PangoMatrix, or %NULL * * Free a #PangoMatrix created with pango_matrix_copy(). + * Does nothing if @matrix is %NULL. * * Since: 1.6 **/ void pango_matrix_free (PangoMatrix *matrix) { - g_return_if_fail (matrix != NULL); - - g_free (matrix); + if (matrix) + g_slice_free (PangoMatrix, matrix); } /** |