diff --git a/runtime/Clib/cstring.c b/runtime/Clib/cstring.c --- a/runtime/Clib/cstring.c +++ b/runtime/Clib/cstring.c @@ -31,7 +31,7 @@ string_to_bstring_len( char *c_string, i #endif string->string_t.length = len; - dst = (char *)&(string->string_t.char0); + dst = BSTRING_TO_STRING( BSTRING( string ) ); for( ; len > 0; len-- ) *dst++ = *c_string++; @@ -83,7 +83,7 @@ make_string( int len, unsigned char c ) string->string_t.length = len; memset( &(string->string_t.char0), c, len ); - (&(string->string_t.char0))[ len ] = '\0'; + STRING_SET( BSTRING( string ), len, '\0' ); return BSTRING( string ); } @@ -105,7 +105,7 @@ make_string_sans_fill( int len ) { #endif string->string_t.length = len; - (&(string->string_t.char0))[ len ] = '\0'; + STRING_SET( BSTRING( string ), len, '\0' ); return BSTRING( string ); } @@ -183,7 +183,7 @@ c_substring( obj_t src_string, int min, memcpy( &(dst_string->string_t.char0), &STRING_REF( src_string, min ), len ); - (&(dst_string->string_t.char0))[ len ] = '\0'; + STRING_SET( BSTRING( dst_string ), len, '\0' ); return BSTRING( dst_string ); } diff --git a/runtime/Include/bigloo.h b/runtime/Include/bigloo.h --- a/runtime/Include/bigloo.h +++ b/runtime/Include/bigloo.h @@ -273,7 +273,7 @@ typedef union scmobj { header_t header; /* longueur, la chaine C suit. */ #endif int length; - unsigned char char0; + unsigned char char0[ 1 ]; } string_t; struct ucs2_string { /* Ucs2 strings: */