diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/scheme/ao_scheme.h | 1 | ||||
| -rw-r--r-- | src/scheme/ao_scheme_cons.c | 6 | 
2 files changed, 4 insertions, 3 deletions
| diff --git a/src/scheme/ao_scheme.h b/src/scheme/ao_scheme.h index 521ec105..48d0149b 100644 --- a/src/scheme/ao_scheme.h +++ b/src/scheme/ao_scheme.h @@ -150,6 +150,7 @@ ao_scheme_is_const(ao_poly poly) {  #define AO_SCHEME_IS_CONST(a)	(ao_scheme_const <= ((uint8_t *) (a)) && ((uint8_t *) (a)) < ao_scheme_const + AO_SCHEME_POOL_CONST)  #define AO_SCHEME_IS_POOL(a)	(ao_scheme_pool <= ((uint8_t *) (a)) && ((uint8_t *) (a)) < ao_scheme_pool + AO_SCHEME_POOL)  #define AO_SCHEME_IS_INT(p)	(ao_scheme_poly_base_type(p) == AO_SCHEME_INT) +#define AO_SCHEME_IS_CONS(p)	(ao_scheme_poly_base_type(p) == AO_SCHEME_CONS)  void *  ao_scheme_ref(ao_poly poly); diff --git a/src/scheme/ao_scheme_cons.c b/src/scheme/ao_scheme_cons.c index 02512e15..912100a9 100644 --- a/src/scheme/ao_scheme_cons.c +++ b/src/scheme/ao_scheme_cons.c @@ -24,8 +24,8 @@ static void cons_mark(void *addr)  		ao_scheme_poly_mark(cons->car, 1);  		if (!cdr)  			break; -		if (ao_scheme_poly_type(cdr) != AO_SCHEME_CONS) { -			ao_scheme_poly_mark(cdr, 1); +		if (!AO_SCHEME_IS_CONS(cdr)) { +			ao_scheme_poly_mark(cdr, 0);  			break;  		}  		cons = ao_scheme_poly_cons(cdr); @@ -58,7 +58,7 @@ static void cons_move(void *addr)  		cdr = cons->cdr;  		if (!cdr)  			break; -		if (ao_scheme_poly_base_type(cdr) != AO_SCHEME_CONS) { +		if (!AO_SCHEME_IS_CONS(cdr)) {  			(void) ao_scheme_poly_move(&cons->cdr, 0);  			break;  		} | 
