[Tomoe-cvs 1123] CVS update: tomoe/lib

Back to archive index

Takuro Ashie makei****@users*****
2006年 11月 27日 (月) 14:52:21 JST


Index: tomoe/lib/tomoe-dict.c
diff -u tomoe/lib/tomoe-dict.c:1.96 tomoe/lib/tomoe-dict.c:1.97
--- tomoe/lib/tomoe-dict.c:1.96	Mon Nov 27 14:36:14 2006
+++ tomoe/lib/tomoe-dict.c	Mon Nov 27 14:52:21 2006
@@ -21,7 +21,7 @@
  *  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  *  Boston, MA  02111-1307  USA
  *
- *  $Id: tomoe-dict.c,v 1.96 2006/11/27 05:36:14 makeinu Exp $
+ *  $Id: tomoe-dict.c,v 1.97 2006/11/27 05:52:21 makeinu Exp $
  */
 
 #include <stdio.h>
@@ -478,6 +478,14 @@
     g_free (s);
 }
 
+static gint
+get_line_number (GMarkupParseContext *context)
+{
+    gint line;
+    g_markup_parse_context_get_position (context, &line, NULL);
+    return line;
+}
+
 static void
 start_element_handler (GMarkupParseContext *context,
                        const gchar         *element_name,
@@ -502,7 +510,8 @@
     }
 
     if (!data->in_dict) {
-        set_parse_error (error, "Invalid root element %s", element_name);
+        set_parse_error (error, "Invalid root element %s of %s.",
+                         element_name, data->priv->filename);
         return;
     }
 
@@ -511,14 +520,19 @@
         return;
     }
 
+    if (!data->chr) {
+        set_parse_error (error, "Invalid element %s at %d of %s.",
+                         element_name, get_line_number (context),
+                         data->priv->filename);
+        return;
+    }
+
     if (!strcmp ("code-point", element_name)) {
-        g_return_if_fail (data->chr);
         data->in_codepoint = TRUE;
         return;
     }
 
     if (!strcmp ("strokes", element_name)) {
-        g_return_if_fail (data->chr);
         data->writing = tomoe_writing_new ();
         return;
     }
@@ -553,7 +567,6 @@
     }
 
     if (!strcmp ("readings", element_name)) {
-        g_return_if_fail (data->chr);
         data->in_readings = TRUE;
         return;
     }
@@ -579,13 +592,11 @@
     }
 
     if (!strcmp ("meta", element_name)) {
-        g_return_if_fail (data->chr);
         data->in_meta = TRUE;
         return;
     }
 
     if (data->in_meta) {
-        g_return_if_fail (data->chr);
         g_free (data->key);
         g_free (data->value);
         data->key   = g_strdup (element_name);
@@ -673,7 +684,6 @@
     ParseData *data = user_data;
 
     if (data->in_codepoint) {
-        g_return_if_fail (data->chr);
         tomoe_char_set_code (data->chr, text);
         return;
     }
@@ -681,16 +691,12 @@
     if (data->in_reading) {
         TomoeReading *reading;
 
-        g_return_if_fail (data->chr);
-
         reading = tomoe_reading_new (data->reading_type, text);
         tomoe_char_add_reading (data->chr, reading);
         g_object_unref (reading);
     }
 
     if (data->in_meta) {
-        g_return_if_fail (data->chr);
-
         g_free (data->value);
         data->value = g_strdup (text);
     }


tomoe-cvs メーリングリストの案内
Back to archive index