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);