update.
[chise/concord.git] / cos.c
diff --git a/cos.c b/cos.c
index 878b8c9..5df8af2 100644 (file)
--- a/cos.c
+++ b/cos.c
@@ -386,6 +386,12 @@ cos_release_ds (COS_Object obj)
   return concord_close_ds ((COS_DS)obj);
 }
 
+int
+concord_ds_p (COS_object obj)
+{
+  return COS_OBJECT_DS_P (obj);
+}
+
 
 COS_Genre
 concord_get_genre (COS_object ds, COS_object genre)
@@ -552,6 +558,7 @@ COS_object
 concord_object_get_feature_value (COS_object object, COS_object feature)
 {
   char id_buf[256];
+  CONCORD_Genre gobj;
   CONCORD_Feature fobj;
   CONCORD_String_Tank val_st;
   size_t end;
@@ -563,8 +570,17 @@ concord_object_get_feature_value (COS_object object, COS_object feature)
   else
     return NULL;
 
-  fobj = concord_get_feature (concord_current_env,
-                             "character", feature);
+  if (!COS_OBJECT_DS_P (concord_current_env))
+    {
+      concord_current_env = NULL;
+      return NULL;
+    }
+
+  gobj = concord_get_genre (concord_current_env, "character");
+  if (gobj == NULL)
+    return NULL;
+
+  fobj = concord_get_feature (concord_current_env, gobj, feature);
   if (fobj == NULL)
     return NULL;