diff options
Diffstat (limited to 'src/cmd/cc/pswt.c')
-rw-r--r-- | src/cmd/cc/pswt.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/cmd/cc/pswt.c b/src/cmd/cc/pswt.c index b94035faa..cc9c22763 100644 --- a/src/cmd/cc/pswt.c +++ b/src/cmd/cc/pswt.c @@ -102,28 +102,29 @@ newcase(void) } int32 -outlstring(ushort *s, int32 n) +outlstring(TRune *s, int32 n) { - char buf[2]; - int c; + char buf[sizeof(TRune)]; + uint c; + int i; int32 r; if(suppress) return nstring; - while(nstring & 1) + while(nstring & (sizeof(TRune)-1)) outstring("", 1); r = nstring; while(n > 0) { c = *s++; if(align(0, types[TCHAR], Aarg1, nil)) { - buf[0] = c>>8; - buf[1] = c; + for(i = 0; i < sizeof(TRune); i++) + buf[i] = c>>(8*(sizeof(TRune) - i - 1)); } else { - buf[0] = c; - buf[1] = c>>8; + for(i = 0; i < sizeof(TRune); i++) + buf[i] = c>>(8*i); } - outstring(buf, 2); - n -= sizeof(ushort); + outstring(buf, sizeof(TRune)); + n -= sizeof(TRune); } return r; } @@ -155,7 +156,7 @@ ieeedtod(Ieee *ieee, double native) return; } fr = frexp(native, &exp); - f = 2097152L; /* shouldnt use fp constants here */ + f = 2097152L; /* shouldn't use fp constants here */ fr = modf(fr*f, &ho); ieee->h = ho; ieee->h &= 0xfffffL; |