Disable none-working stack overflow implementation on Windows x64 full AOT.
[mono.git] / mono / eglib / gstr.c
index 98d8faf2679e9822d47a3831b32f3160d766a194..e8a76e429cccd7ab887be324e7aa855ab3ef0eae 100644 (file)
@@ -231,10 +231,11 @@ g_strerror (gint errnum)
 #ifdef HAVE_STRERROR_R
                char tmp_buff [128]; //Quite arbitrary, should be large enough
                char *buff = tmp_buff;
-               int buff_len = sizeof (tmp_buff);
-               int r;
+               size_t buff_len = sizeof (tmp_buff);
                buff [0] = 0;
 
+#ifndef STRERROR_R_CHAR_P
+               int r;
                while ((r = strerror_r (errnum, buff, buff_len - 1))) {
                        if (r != ERANGE) {
                                buff = g_strdup_printf ("Invalid Error code '%d'", errnum);
@@ -251,10 +252,16 @@ g_strerror (gint errnum)
                        error_messages [errnum] = g_strdup (buff);
                if (buff != tmp_buff)
                        g_free (buff);
-#else
+#else /* STRERROR_R_CHAR_P */
+               buff = strerror_r (errnum, buff, buff_len);
+               if (!error_messages [errnum])
+                       error_messages [errnum] = g_strdup (buff);
+#endif /* STRERROR_R_CHAR_P */
+
+#else /* HAVE_STRERROR_R */
                if (!error_messages [errnum])
                        error_messages [errnum] = g_strdup_printf ("Error code '%d'", errnum);
-#endif
+#endif /* HAVE_STRERROR_R */
 
 
 #ifndef G_OS_WIN32