From e228a20323943a15d1023e093a8d129a5ee707b3 Mon Sep 17 00:00:00 2001 From: Keisuke Nishida Date: Fri, 16 Feb 2001 00:57:11 +0000 Subject: [PATCH] * dump.c (scm_undump): Bug fixed. --- libguile/ChangeLog | 7 +++++++ libguile/dump.c | 10 +++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 2b5ce5b49..ebeb3cc1c 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,10 @@ +2001-02-15 Keisuke Nishida + + * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the + address of car/cdr. (Thanks to Dirk Herrmann) + Use scm_sizet to obtain the length of strings. + (Thanks to Matthias Koeppe) + 2001-02-15 Marius Vollmer * symbols.c (scm_mem2symbol): Put a empty statement after the diff --git a/libguile/dump.c b/libguile/dump.c index de0b46d63..12c42bd41 100644 --- a/libguile/dump.c +++ b/libguile/dump.c @@ -408,7 +408,7 @@ scm_dump (SCM obj, SCM dstate) case scm_tc7_vector: { int i; - int len = SCM_VECTOR_LENGTH (obj); + scm_bits_t len = SCM_VECTOR_LENGTH (obj); SCM *base = SCM_VELTS (obj); scm_store_word (scm_tc7_vector, dstate); scm_store_word (len, dstate); @@ -458,8 +458,8 @@ scm_undump (SCM dstate) { SCM_NEWCELL (obj); /* cdr was stored first */ - scm_restore_object ((SCM *) &SCM_CDR (obj), dstate); - scm_restore_object ((SCM *) &SCM_CAR (obj), dstate); + scm_restore_object (SCM_CDRLOC (obj), dstate); + scm_restore_object (SCM_CARLOC (obj), dstate); goto store_object; } @@ -467,7 +467,7 @@ scm_undump (SCM dstate) { case scm_tc7_symbol: { - int len; + scm_sizet len; const char *mem; scm_restore_string (&mem, &len, dstate); obj = scm_mem2symbol (mem, len); @@ -475,7 +475,7 @@ scm_undump (SCM dstate) } case scm_tc7_string: { - int len; + scm_sizet len; const char *mem; scm_restore_string (&mem, &len, dstate); obj = scm_makfromstr (mem, len, 0);