From a559d96009cd54ccb73a6a73701b55257e807331 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Tue, 31 May 2005 21:29:34 +0000 Subject: [PATCH] Fixed a stupid alignment bug on big-endian machines. svn: r29 --- src/foreign/foreign.c | 46 ++++++++++++++++++++--------------------- src/foreign/foreign.ssc | 7 ++++++- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/foreign/foreign.c b/src/foreign/foreign.c index 802af2a9e4..dbd976028e 100644 --- a/src/foreign/foreign.c +++ b/src/foreign/foreign.c @@ -979,29 +979,29 @@ static Scheme_Object *c_to_scheme(Scheme_Object *type, void *src) return (Scheme_Object*)src; } else switch (CTYPE_PRIMLABEL(type)) { case FOREIGN_void: return scheme_void; - case FOREIGN_int8: return scheme_make_integer(((Tsint8*)src)[0]); - case FOREIGN_uint8: return scheme_make_integer_from_unsigned(((Tuint8*)src)[0]); - case FOREIGN_int16: return scheme_make_integer(((Tsint16*)src)[0]); - case FOREIGN_uint16: return scheme_make_integer_from_unsigned(((Tuint16*)src)[0]); - case FOREIGN_int32: return scheme_make_realinteger_value(((Tsint32*)src)[0]); - case FOREIGN_uint32: return scheme_make_realinteger_value_from_unsigned(((Tuint32*)src)[0]); - case FOREIGN_int64: return scheme_make_integer_value_from_long_long(((Tsint64*)src)[0]); - case FOREIGN_uint64: return scheme_make_integer_value_from_unsigned_long_long(((Tuint64*)src)[0]); - case FOREIGN_fixint: return scheme_make_integer(((Tsint32*)src)[0]); - case FOREIGN_ufixint: return scheme_make_integer_from_unsigned(((Tuint32*)src)[0]); - case FOREIGN_fixnum: return scheme_make_integer(((long*)src)[0]); - case FOREIGN_ufixnum: return scheme_make_integer_from_unsigned(((unsigned long*)src)[0]); - case FOREIGN_float: return scheme_make_float(((float*)src)[0]); - case FOREIGN_double: return scheme_make_double(((double*)src)[0]); - case FOREIGN_doubleS: return scheme_make_double(((double*)src)[0]); - case FOREIGN_bool: return (((int*)src)[0]?scheme_true:scheme_false); - case FOREIGN_string_ucs_4: return scheme_make_char_string_without_copying(((mzchar**)src)[0]); - case FOREIGN_string_utf_16: return utf16_pointer_to_ucs4_string(((unsigned short**)src)[0]); - case FOREIGN_bytes: return (((char**)src)[0]==NULL)?scheme_false:scheme_make_byte_string_without_copying(((char**)src)[0]); - case FOREIGN_path: return (((char**)src)[0]==NULL)?scheme_false:scheme_make_path_without_copying(((char**)src)[0]); - case FOREIGN_symbol: return scheme_intern_symbol(((char**)src)[0]); - case FOREIGN_pointer: return scheme_make_foreign_cpointer(((void**)src)[0]); - case FOREIGN_scheme: return ((Scheme_Object**)src)[0]; + case FOREIGN_int8: return scheme_make_integer(((sizeof(Tsint8)s) (c->s x) (list c->s"("x")"))) "scheme_void")";")):} case FOREIGN_struct: return scheme_make_foreign_cpointer(src);