gtk-css-engine r131 - in trunk: . libccd/ccd



Author: robsta
Date: Fri Sep 26 15:08:20 2008
New Revision: 131
URL: http://svn.gnome.org/viewvc/gtk-css-engine?rev=131&view=rev

Log:
* libccd/ccd/ccd-border.c:
* libccd/ccd/ccd-color.c:
* libccd/ccd/ccd-color.h:
* libccd/ccd/ccd-parser.c:
Work around random startup crashes caused by libcroco, see bug #553937.


Modified:
   trunk/   (props changed)
   trunk/ChangeLog
   trunk/libccd/ccd/ccd-border.c
   trunk/libccd/ccd/ccd-color.c
   trunk/libccd/ccd/ccd-color.h
   trunk/libccd/ccd/ccd-parser.c

Modified: trunk/libccd/ccd/ccd-border.c
==============================================================================
--- trunk/libccd/ccd/ccd-border.c	(original)
+++ trunk/libccd/ccd/ccd-border.c	Fri Sep 26 15:08:20 2008
@@ -323,6 +323,8 @@
 	ccd_property_spec_t	 width_spec;
 	ccd_property_spec_t	 style_spec;
 
+	ccd_color_init (&color);
+
 	/* Radius */
 	iter = values;
 	if (0 == strcmp ("border-top-right-radius", property)) {

Modified: trunk/libccd/ccd/ccd-color.c
==============================================================================
--- trunk/libccd/ccd/ccd-color.c	(original)
+++ trunk/libccd/ccd/ccd-color.c	Fri Sep 26 15:08:20 2008
@@ -178,6 +178,14 @@
   { "yellowgreen",		{ CCD_PROPERTY_SPEC_SET, 0x9a/255., 0xcd/255., 0x32/255. } },
 };
 
+void
+ccd_color_init (ccd_color_t *self)
+{
+	memset (self, 0, sizeof (*self));
+
+	self->spec = CCD_PROPERTY_SPEC_UNSET;
+}
+
 static bool
 parse_name (ccd_color_t	*self,
 	    char const	*css_color_name)

Modified: trunk/libccd/ccd/ccd-color.h
==============================================================================
--- trunk/libccd/ccd/ccd-color.h	(original)
+++ trunk/libccd/ccd/ccd-color.h	Fri Sep 26 15:08:20 2008
@@ -41,6 +41,8 @@
 	double			blue;
 } ccd_color_t;
 
+void ccd_color_init (ccd_color_t *self);
+
 bool ccd_color_parse (ccd_color_t *self, CRTerm const **values);
 
 #ifdef CCD_DEBUG

Modified: trunk/libccd/ccd/ccd-parser.c
==============================================================================
--- trunk/libccd/ccd/ccd-parser.c	(original)
+++ trunk/libccd/ccd/ccd-parser.c	Fri Sep 26 15:08:20 2008
@@ -261,10 +261,16 @@
 	handler->end_selector = end_selector_cb;
 
 	cr_parser_set_sac_handler (parser, handler);
-	ret = cr_parser_parse (parser);
 
-	cr_doc_handler_destroy (handler);	
-	cr_parser_destroy (parser);
+	ret = cr_parser_parse (parser);
+	if (ret != CR_OK) {
+		/* From the department of awesome error handling: */
+		g_warning ("Parsing failed but all I can offer for consolation is this: %d\n", ret);
+	}
+
+	/* See http://bugzilla.gnome.org/show_bug.cgi?id=553937 .
+	 * cr_doc_handler_unref (handler), handler = NULL; */
+	cr_parser_destroy (parser), parser = NULL;
 
 	return info.blocks;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]