mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-18 01:30:27 +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,12 +1106,14 @@ unmemoize (const SCM expr)
|
||||||
case SCM_M_TOPLEVEL_SET:
|
case SCM_M_TOPLEVEL_SET:
|
||||||
return scm_list_3 (scm_sym_set_x, CAR (args), unmemoize (CDR (args)));
|
return scm_list_3 (scm_sym_set_x, CAR (args), unmemoize (CDR (args)));
|
||||||
case SCM_M_MODULE_REF:
|
case SCM_M_MODULE_REF:
|
||||||
return scm_list_3 (scm_is_true (CDDR (args)) ? scm_sym_at : scm_sym_atat,
|
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)),
|
scm_i_finite_list_copy (CAR (args)),
|
||||||
CADR (args));
|
CADR (args));
|
||||||
case SCM_M_MODULE_SET:
|
case SCM_M_MODULE_SET:
|
||||||
return scm_list_3 (scm_sym_set_x,
|
return scm_list_3 (scm_sym_set_x,
|
||||||
scm_list_3 (scm_is_true (CDDDR (args))
|
SCM_VARIABLEP (CDR (args)) ? CDR (args)
|
||||||
|
: scm_list_3 (scm_is_true (CDDDR (args))
|
||||||
? scm_sym_at : scm_sym_atat,
|
? scm_sym_at : scm_sym_atat,
|
||||||
scm_i_finite_list_copy (CADR (args)),
|
scm_i_finite_list_copy (CADR (args)),
|
||||||
CADDR (args)),
|
CADDR (args)),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue