- ret = ao_lisp_move_memory(&ao_lisp_cons_type, (void **) &cdr);
- if (cdr != ao_lisp_poly_cons(cons->cdr))
- cons->cdr = ao_lisp_cons_poly(cdr);
+ if (ao_lisp_poly_type(cdr) != AO_LISP_CONS) {
+ (void) ao_lisp_poly_move(&cons->cdr, 1);
+ break;
+ }
+ c = ao_lisp_poly_cons(cdr);
+ ret = ao_lisp_move_memory(&ao_lisp_cons_type, (void **) &c);
+ if (c != ao_lisp_poly_cons(cons->cdr))
+ cons->cdr = ao_lisp_cons_poly(c);