Mercurial > hg > xemacs-beta
diff src/data.c @ 410:de805c49cfc1 r21-2-35
Import from CVS: tag r21-2-35
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:19:21 +0200 |
parents | b8cc9ab3f761 |
children | 697ef44129c6 |
line wrap: on
line diff
--- a/src/data.c Mon Aug 13 11:18:12 2007 +0200 +++ b/src/data.c Mon Aug 13 11:19:21 2007 +0200 @@ -770,7 +770,7 @@ { CHECK_CHAR_COERCE_INT (newval); if (idx >= XSTRING_CHAR_LENGTH (array)) goto range_error; - set_string_char (XSTRING (array), idx, (unsigned char) XCHAR (newval)); + set_string_char (XSTRING (array), idx, XCHAR (newval)); bump_string_modiff (array); } else @@ -1064,7 +1064,7 @@ p++; #ifdef LISP_FLOAT_TYPE - if (isfloat_string (p)) + if (isfloat_string (p) && b == 10) return make_float (atof (p)); #endif /* LISP_FLOAT_TYPE */ @@ -1744,6 +1744,23 @@ } break; + case WEAK_LIST_FULL_ASSOC: + if (!CONSP (elem)) + { + /* just leave bogus elements there */ + need_to_mark_cons = 1; + need_to_mark_elem = 1; + } + else if (marked_p (XCAR (elem)) || + marked_p (XCDR (elem))) + { + need_to_mark_cons = 1; + /* We still need to mark elem and XCAR (elem); + marking elem does both */ + need_to_mark_elem = 1; + } + break; + default: abort (); } @@ -1884,6 +1901,7 @@ if (EQ (symbol, Qold_assoc)) return WEAK_LIST_ASSOC; /* EBOLA ALERT! */ if (EQ (symbol, Qkey_assoc)) return WEAK_LIST_KEY_ASSOC; if (EQ (symbol, Qvalue_assoc)) return WEAK_LIST_VALUE_ASSOC; + if (EQ (symbol, Qfull_assoc)) return WEAK_LIST_FULL_ASSOC; signal_simple_error ("Invalid weak list type", symbol); return WEAK_LIST_SIMPLE; /* not reached */ @@ -1898,6 +1916,7 @@ case WEAK_LIST_ASSOC: return Qassoc; case WEAK_LIST_KEY_ASSOC: return Qkey_assoc; case WEAK_LIST_VALUE_ASSOC: return Qvalue_assoc; + case WEAK_LIST_FULL_ASSOC: return Qfull_assoc; default: abort (); } @@ -1936,6 +1955,8 @@ and the car is not pointed to. `value-assoc' Objects in the list disappear if they are conses and the cdr is not pointed to. +`full-assoc' Objects in the list disappear if they are conses + and neither the car nor the cdr is pointed to. */ (type)) {