*** empty log message ***
[m17n/m17n-lib.git] / src / database.c
index 63699af..e26999d 100644 (file)
@@ -666,6 +666,16 @@ update_database_list ()
                          ((MDatabaseInfo*) mdb2.extra_info)->filename
                            = strdup (globbuf.gl_pathv[i]);
                          MLIST_APPEND1 (&mdb_list, mdbs, mdb2, MERROR_DB);
+                         if (mdb2.tag[0] == Mchar_table
+                             && mdb2.tag[2] != Mnil
+                             && (mdb2.tag[1] == Mstring
+                                 || mdb2.tag[1] == Mtext
+                                 || mdb2.tag[1] == Msymbol
+                                 || mdb2.tag[1] == Minteger
+                                 || mdb2.tag[1] == Mplist))
+                           mchar__define_prop (mdb2.tag[2], mdb2.tag[1],
+                                               (mdb_list.mdbs
+                                                + mdb_list.used - 1));
                        }
                    }
                  M17N_OBJECT_UNREF (p1);
@@ -686,6 +696,15 @@ update_database_list ()
                MEMORY_FULL (MERROR_DB);
              ((MDatabaseInfo*) mdb.extra_info)->filename = strdup (path);
              MLIST_APPEND1 (&mdb_list, mdbs, mdb, MERROR_DB);
+             if (mdb.tag[0] == Mchar_table
+                 && mdb.tag[2] != Mnil
+                 && (mdb.tag[1] == Mstring
+                     || mdb.tag[1] == Mtext
+                     || mdb.tag[1] == Msymbol
+                     || mdb.tag[1] == Minteger
+                     || mdb.tag[1] == Mplist))
+               mchar__define_prop (mdb.tag[2], mdb.tag[1], 
+                                   mdb_list.mdbs + mdb_list.used - 1);
            }
        }
       M17N_OBJECT_UNREF (pl);
@@ -741,7 +760,12 @@ mdatabase__fini (void)
   MPlist *plist; 
 
   MPLIST_DO (plist, mdatabase__dir_list)
-    free (MPLIST_VAL (plist));
+    {
+      MDatabaseInfo *dir_info = MPLIST_VAL (plist);
+
+      free (dir_info->filename);
+      free (dir_info);
+    }
   M17N_OBJECT_UNREF (mdatabase__dir_list);
 
   for (i = 0; i < mdb_list.used; i++)