[gtk+/native-layout] Fixed GtkCellRendererText invalid pointer access.
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/native-layout] Fixed GtkCellRendererText invalid pointer access.
- Date: Sun, 4 Apr 2010 02:47:33 +0000 (UTC)
commit 894e887370bc1b9f9f2e085e681b422448d50a54
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Sat Apr 3 19:48:14 2010 -0400
Fixed GtkCellRendererText invalid pointer access.
Fixed get_desired_size() to not access parameters when NULL and
also not to access priv->object if it hasnt yet been assigned.
gtk/gtkcellrenderertext.c | 50 ++++++++++++++++++++++++++++++--------------
1 files changed, 34 insertions(+), 16 deletions(-)
---
diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c
index 8529c08..37c5eb7 100644
--- a/gtk/gtkcellrenderertext.c
+++ b/gtk/gtkcellrenderertext.c
@@ -1946,25 +1946,43 @@ gtk_cell_renderer_text_extended_layout_get_desired_size (GtkExtendedLayout *layo
priv = GTK_CELL_RENDERER_TEXT_GET_PRIVATE (layout);
- if (minimal_size)
+ if (priv->owner)
{
- get_size (GTK_CELL_RENDERER (layout),
- priv->owner, NULL, NULL, NULL, NULL,
- &minimal_size->width, &minimal_size->height);
- }
- if (desired_size)
+ if (minimal_size)
+ {
+ get_size (GTK_CELL_RENDERER (layout),
+ priv->owner, NULL, NULL, NULL, NULL,
+ &minimal_size->width, &minimal_size->height);
+ }
+
+ if (desired_size)
+ {
+ PangoEllipsizeMode ellipsize;
+
+ ellipsize = priv->ellipsize;
+ priv->ellipsize = PANGO_ELLIPSIZE_NONE;
+
+ get_size (GTK_CELL_RENDERER (layout),
+ priv->owner, NULL, NULL, NULL, NULL,
+ &desired_size->width, &desired_size->height);
+
+ priv->ellipsize = ellipsize;
+ }
+ }
+ else
{
- PangoEllipsizeMode ellipsize;
-
- ellipsize = priv->ellipsize;
- priv->ellipsize = PANGO_ELLIPSIZE_NONE;
-
- get_size (GTK_CELL_RENDERER (layout),
- priv->owner, NULL, NULL, NULL, NULL,
- &desired_size->width, &desired_size->height);
-
- priv->ellipsize = ellipsize;
+ if (minimal_size)
+ {
+ minimal_size->height = 0;
+ minimal_size->width = 0;
+ }
+
+ if (desired_size)
+ {
+ desired_size->height = 0;
+ desired_size->width = 0;
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]