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

Back to archive index

Takuro Ashie makei****@users*****
2006年 11月 27日 (月) 10:26:01 JST


Index: tomoe/lib/tomoe-dict.c
diff -u tomoe/lib/tomoe-dict.c:1.83 tomoe/lib/tomoe-dict.c:1.84
--- tomoe/lib/tomoe-dict.c:1.83	Sun Nov 26 16:34:52 2006
+++ tomoe/lib/tomoe-dict.c	Mon Nov 27 10:26:00 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.83 2006/11/26 07:34:52 makeinu Exp $
+ *  $Id: tomoe-dict.c,v 1.84 2006/11/27 01:26:00 makeinu Exp $
  */
 
 #include <stdio.h>
@@ -445,6 +445,7 @@
     gboolean in_dict;
     gboolean in_literal;
     gboolean in_stroke;
+    gboolean in_readings;
     gboolean in_reading;
     gboolean in_meta;
 
@@ -464,8 +465,6 @@
                        gpointer             user_data,
                        GError             **error)
 {
-#warning FIXME: need error check
-
     ParseData *data = user_data;
 
     if (!strcmp ("tomoe_dictionary", element_name)) {
@@ -480,36 +479,46 @@
         return;
     }
 
+    if (!data->in_dict)
+        return;
+
     if (!strcmp ("character", element_name)) {
         data->chr = tomoe_char_new ();
         return;
     }
 
     if (!strcmp ("literal", element_name)) {
+        g_return_if_fail (data->chr);
         data->in_literal = TRUE;
         return;
     }
 
     if (!strcmp ("strokelist", element_name)) {
+        g_return_if_fail (data->chr);
         data->writing = tomoe_writing_new ();
         return;
     }
 
     if (!strcmp ("s", element_name)) {
+        g_return_if_fail (data->writing);
         data->in_stroke = TRUE;
         return;
     }
 
     if (!strcmp ("readings", element_name)) {
+        g_return_if_fail (data->chr);
+        data->in_readings = TRUE;
         return;
     }
 
     if (!strcmp ("r", element_name)) {
+        g_return_if_fail (data->in_readings);
         data->in_reading = TRUE;
         return;
     }
 
     if (!strcmp ("meta", element_name)) {
+        g_return_if_fail (data->chr);
         data->in_meta = TRUE;
         return;
     }
@@ -564,6 +573,7 @@
     }
 
     if (!strcmp ("readings", element_name)) {
+        data->in_readings = FALSE;
         return;
     }
 
@@ -630,6 +640,7 @@
 
     if (data->in_reading && data->chr) {
         TomoeReading *reading;
+
 #warning FIXME: detect reading type?
         reading = tomoe_reading_new (TOMOE_READING_INVALID, text);
         tomoe_char_add_reading (data->chr, reading);
@@ -681,16 +692,17 @@
     f = fopen (priv->filename, "rb");
     g_return_val_if_fail (f, FALSE);
 
-    data.dict    = dict;
-    data.priv    = priv;
-    data.in_dict = FALSE;
-    data.in_literal = FALSE;
-    data.in_stroke = FALSE;
-    data.in_reading = FALSE;
-    data.chr     = NULL;
-    data.writing = NULL;
-    data.key = NULL;
-    data.value = NULL;
+    data.dict        = dict;
+    data.priv        = priv;
+    data.in_dict     = FALSE;
+    data.in_literal  = FALSE;
+    data.in_stroke   = FALSE;
+    data.in_readings = FALSE;
+    data.in_reading  = FALSE;
+    data.chr         = NULL;
+    data.writing     = NULL;
+    data.key         = NULL;
+    data.value       = NULL;
 
     context = g_markup_parse_context_new (&parser, 0, &data, NULL);
 


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