From: tomo Date: Wed, 4 Feb 2004 18:57:20 +0000 (+0000) Subject: (Fchar_feature): Check `<-denotational' to avoid inheritance itself; X-Git-Tag: r21-4-14-chise-0_21-23^2~71 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae977785fcb39b6933c9478d0f5eddaccdf745af;p=chise%2Fxemacs-chise.git- (Fchar_feature): Check `<-denotational' to avoid inheritance itself; fix typo; stop recursive search if cyclic inheritance is found. --- 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); */ } } }