ClutterText: Cannot pass NULL string to clutter_text_set_text()
authorDominique Bureau <burdo@touchtunes.com>
Fri, 11 May 2012 17:26:50 +0000 (13:26 -0400)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 21 May 2012 10:30:22 +0000 (11:30 +0100)
Passing a NULL buffer to clutter_text_set_text() does not behave the same
way as passing an empty string "" (as specified in the documentation).
This was working as expected previously, but somehow the behaviour changed
at some point and created 2 new issues:
- Passing a NULL pointer will not reset the string
- If the ClutterText is editable, it will segfault in strcmp

Validations have been added to prevent this.

https://bugzilla.gnome.org/show_bug.cgi?id=675890

clutter/clutter-text.c

index 0d58d3a..9917214 100644 (file)
@@ -4767,12 +4767,12 @@ clutter_text_set_text (ClutterText *self,
    */
   if (self->priv->editable)
     {
-      if (strcmp (clutter_text_buffer_get_text (get_buffer (self)), text) == 0)
+      if (g_strcmp0 (clutter_text_buffer_get_text (get_buffer (self)), text) == 0)
         return;
     }
 
   clutter_text_set_use_markup_internal (self, FALSE);
-  clutter_text_buffer_set_text (get_buffer (self), text, -1);
+  clutter_text_buffer_set_text (get_buffer (self), text ? text : "", -1);
 }
 
 /**