mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 17:20:29 +02:00
fix unmemoization bug
* libguile/memoize.c (unmemoize): Fix unmemoization of memoized toplevel-ref and module-ref forms.
This commit is contained in:
parent
f3a8d1b745
commit
c08899ff24
1 changed files with 9 additions and 7 deletions
|
@ -1106,15 +1106,17 @@ unmemoize (const SCM expr)
|
|||
case SCM_M_TOPLEVEL_SET:
|
||||
return scm_list_3 (scm_sym_set_x, CAR (args), unmemoize (CDR (args)));
|
||||
case SCM_M_MODULE_REF:
|
||||
return scm_list_3 (scm_is_true (CDDR (args)) ? scm_sym_at : scm_sym_atat,
|
||||
scm_i_finite_list_copy (CAR (args)),
|
||||
CADR (args));
|
||||
return SCM_VARIABLEP (args) ? args
|
||||
: scm_list_3 (scm_is_true (CDDR (args)) ? scm_sym_at : scm_sym_atat,
|
||||
scm_i_finite_list_copy (CAR (args)),
|
||||
CADR (args));
|
||||
case SCM_M_MODULE_SET:
|
||||
return scm_list_3 (scm_sym_set_x,
|
||||
scm_list_3 (scm_is_true (CDDDR (args))
|
||||
? scm_sym_at : scm_sym_atat,
|
||||
scm_i_finite_list_copy (CADR (args)),
|
||||
CADDR (args)),
|
||||
SCM_VARIABLEP (CDR (args)) ? CDR (args)
|
||||
: scm_list_3 (scm_is_true (CDDDR (args))
|
||||
? scm_sym_at : scm_sym_atat,
|
||||
scm_i_finite_list_copy (CADR (args)),
|
||||
CADDR (args)),
|
||||
unmemoize (CAR (args)));
|
||||
default:
|
||||
abort ();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue