From ae977785fcb39b6933c9478d0f5eddaccdf745af Mon Sep 17 00:00:00 2001 From: tomo Date: Wed, 4 Feb 2004 18:57:20 +0000 Subject: [PATCH] (Fchar_feature): Check `<-denotational' to avoid inheritance itself; fix typo; stop recursive search if cyclic inheritance is found. --- src/chartab.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/chartab.c b/src/chartab.c index 264a7d0..69cf73a 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -3313,10 +3313,11 @@ Return DEFAULT-VALUE if the value is not exist. } } - if ( !(EQ (attribute, Q_unified_from)) - && ( (NILP (char_rel_max) - || (INTP (char_rel_max) && - XINT (char_rel_max) > 0)) ) ) + if ( !(EQ (attribute, Q_unified_from)) && + !(EQ (attribute, Q_denotational_from)) && + ( (NILP (char_rel_max) + || (INTP (char_rel_max) && + XINT (char_rel_max) > 0)) ) ) { Lisp_String* name = symbol_name (XSYMBOL (attribute)); Bufbyte *name_str = string_data (name); @@ -3334,7 +3335,7 @@ Return DEFAULT-VALUE if the value is not exist. { Lisp_Object ancestor = XCAR (ancestors); - if (!EQ (ancestors, character)) + if (!EQ (ancestor, character)) { ret = Fchar_feature (ancestor, attribute, Qunbound, Qnil, make_int (0)); @@ -3347,7 +3348,8 @@ Return DEFAULT-VALUE if the value is not exist. ancestors = nconc2 (Fcopy_sequence (ancestors), ret); } else - ancestors = XCDR (ancestors); + return default_value; + /* ancestors = XCDR (ancestors); */ } } } -- 1.7.10.4