Merge from trunk rev. 4530:
2011-10-08 Kai Tietz <ktietz@redhat.com>
* misc/wcrtomb.c: Fix an inlining bug occuring with newer gcc.
This can go away if bug on gcc side is fixed.
git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/stable/v2.x@4534 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/ChangeLog b/mingw-w64-crt/ChangeLog
index 58cce30..50df87f 100644
--- a/mingw-w64-crt/ChangeLog
+++ b/mingw-w64-crt/ChangeLog
@@ -1,3 +1,10 @@
+2011-10-09 Ozkan Sezer <sezeroz@gmail.com>
+
+ Merge from trunk rev. 4530:
+ 2011-10-08 Kai Tietz <ktietz@redhat.com>
+ * misc/wcrtomb.c: Fix an inlining bug occuring with newer gcc.
+ This can go away if bug on gcc side is fixed.
+
2011-10-09 Ruben Van Boxem <vanboxem.ruben@gmail.com>
* misc/isblank.c: Replaced _cdecl by __cdecl.
diff --git a/mingw-w64-crt/misc/wcrtomb.c b/mingw-w64-crt/misc/wcrtomb.c
index 5e0cb6a..385c2dc 100644
--- a/mingw-w64-crt/misc/wcrtomb.c
+++ b/mingw-w64-crt/misc/wcrtomb.c
@@ -13,7 +13,7 @@
#include <limits.h>
#include <windows.h>
-
+__attribute__((noinline))
static int __MINGW_ATTRIB_NONNULL(1)
__wcrtomb_cp (char *dst, wchar_t wc, const unsigned int cp,
const unsigned int mb_max)
@@ -48,7 +48,7 @@
wcrtomb (char *dst, wchar_t wc, mbstate_t * __UNUSED_PARAM (ps))
{
char byte_bucket [MB_LEN_MAX];
- char* tmp_dst = dst ? dst : byte_bucket;
+ char* tmp_dst = dst ? dst : &byte_bucket[0];
return (size_t)__wcrtomb_cp (tmp_dst, wc, __mingw_get_codepage (),
MB_CUR_MAX);
}
@@ -87,7 +87,7 @@
char byte_bucket [MB_LEN_MAX];
while (n < len)
{
- if ((ret = __wcrtomb_cp (byte_bucket, *pwc, cp, mb_max)) <= 0)
+ if ((ret = __wcrtomb_cp (&byte_bucket[0], *pwc, cp, mb_max)) <= 0)
return (size_t) -1;
n += ret;
if (byte_bucket [ret - 1] == '\0')