summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/ChangeLog9
-rw-r--r--libguile/gc.h4
-rw-r--r--libguile/hooks.c2
-rw-r--r--libguile/modules.c8
4 files changed, 16 insertions, 7 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index 51aab8bd5..dd9906c61 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,5 +1,14 @@
2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
+ * gc.h (SCM_FREE_CELL_CDR, SCM_SET_FREE_CELL_CDR), hooks.c
+ (make_hook), modules.c (OBARRAY, USES, BINDER): Pack and unpack
+ SCM values appropriately.
+
+ * modules.c (scm_standard_eval_closure): Don't pass an inum to
+ scm_makcclo, but rather a long value.
+
+2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
read.c (scm_lreadrecparen), srcprop.c (scm_set_source_property_x):
SCM_SETCDR and SCM_WHASHSET macros don't deliver a return value.
Thanks to Han-Wen Nienhuys for the bug report.
diff --git a/libguile/gc.h b/libguile/gc.h
index 9a647e843..7f1207671 100644
--- a/libguile/gc.h
+++ b/libguile/gc.h
@@ -154,11 +154,11 @@ typedef scm_cell * SCM_CELLPTR;
#define SCM_FREE_CELL_P(x) \
(!SCM_IMP (x) && (* (const scm_bits_t *) SCM2PTR (x) == scm_tc_free_cell))
#define SCM_FREE_CELL_CDR(x) \
- (((const scm_bits_t *) SCM2PTR (x)) [1])
+ (SCM_PACK (((const scm_bits_t *) SCM2PTR (x)) [1]))
#define SCM_SET_FREE_CELL_TYPE(x, v) \
(((scm_bits_t *) SCM2PTR (x)) [0] = (v))
#define SCM_SET_FREE_CELL_CDR(x, v) \
- (((scm_bits_t *) SCM2PTR (x)) [1] = (v))
+ (((scm_bits_t *) SCM2PTR (x)) [1] = SCM_UNPACK (v))
/* the allocated thing: The car of new cells is set to
scm_tc16_allocated to avoid the fragile state of newcells wrt the
diff --git a/libguile/hooks.c b/libguile/hooks.c
index 712debd87..14609cb5e 100644
--- a/libguile/hooks.c
+++ b/libguile/hooks.c
@@ -167,7 +167,7 @@ make_hook (SCM n_args, const char *subr)
if (n < 0 || n > 16)
scm_out_of_range (subr, n_args);
}
- SCM_RETURN_NEWSMOB (scm_tc16_hook + (n << 16), SCM_EOL);
+ SCM_RETURN_NEWSMOB (scm_tc16_hook + (n << 16), SCM_UNPACK (SCM_EOL));
}
diff --git a/libguile/modules.c b/libguile/modules.c
index 6e5d3413a..ad016582a 100644
--- a/libguile/modules.c
+++ b/libguile/modules.c
@@ -188,9 +188,9 @@ scm_system_module_env_p (SCM env)
* The code will be replaced by the low-level environments in next release.
*/
-#define OBARRAY(module) (SCM_STRUCT_DATA (module) [0])
-#define USES(module) (SCM_STRUCT_DATA (module) [1])
-#define BINDER(module) (SCM_STRUCT_DATA (module) [2])
+#define OBARRAY(module) (SCM_PACK (SCM_STRUCT_DATA (module) [0]))
+#define USES(module) (SCM_PACK (SCM_STRUCT_DATA (module) [1]))
+#define BINDER(module) (SCM_PACK (SCM_STRUCT_DATA (module) [2]))
static SCM module_make_local_var_x;
@@ -246,7 +246,7 @@ SCM_DEFINE (scm_standard_eval_closure, "standard-eval-closure", 1, 0, 0,
"")
#define FUNC_NAME s_scm_standard_eval_closure
{
- SCM cclo = scm_makcclo (f_eval_closure, SCM_MAKINUM (2));
+ SCM cclo = scm_makcclo (f_eval_closure, 2);
SCM_VELTS (cclo) [1] = module;
return cclo;
}