From: Bruno Haible Date: Sat, 13 Jan 2007 14:47:41 +0000 (+0000) Subject: Align the temporary buffer. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48079a8c38f504873d4ab2b4e892d4cf84099898;p=pspp Align the temporary buffer. --- diff --git a/ChangeLog b/ChangeLog index 8cb85f08c1..688ac05694 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-01-10 Bruno Haible + + * lib/striconv.c (mem_cd_iconv): Align the temporary buffer. + 2007-01-12 Eric Blake Provide a robust . Further simplifications are now diff --git a/lib/striconv.c b/lib/striconv.c index 5326376883..35769bf757 100644 --- a/lib/striconv.c +++ b/lib/striconv.c @@ -1,5 +1,5 @@ /* Charset conversion. - Copyright (C) 2001-2006 Free Software Foundation, Inc. + Copyright (C) 2001-2007 Free Software Foundation, Inc. Written by Bruno Haible and Simon Josefsson. This program is free software; you can redistribute it and/or modify @@ -59,7 +59,10 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, /* Determine the length we need. */ { size_t count = 0; - char tmpbuf[tmpbufsize]; + /* The alignment is needed when converting e.g. to glibc's WCHAR_T or + libiconv's UCS-4-INTERNAL encoding. */ + union { unsigned int align; char buf[tmpbufsize]; } tmp; +# define tmpbuf tmp.buf const char *inptr = src; size_t insize = srclen; @@ -107,6 +110,7 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd, } # endif length = count; +# undef tmpbuf } if (length == 0)