From 1f3a93a3afd81d842732ba96ecf11466e5be6255 Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Fri, 22 Aug 2014 21:52:41 +0200 Subject: [PATCH] Fix the compilation under gcc 4.9.0. gcc interpretes C99's compound literals more strictly by invalid the compound literal on implicit to pointer cast (because of automatic storage duration, 6.5.2.5.6 in C99 standard draft). This fixes the issue by not using compound literals at all. --- builtin.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/builtin.cpp b/builtin.cpp index efe28f90e..da9429b17 100644 --- a/builtin.cpp +++ b/builtin.cpp @@ -2636,7 +2636,13 @@ static int builtin_read(parser_t &parser, wchar_t **argv) size_t j = 0; for (; i+1 < argc; ++i) { - env_set(argv[i], j < bufflen ? (wchar_t[2]){buff[j], 0} : L"", place); + if (j < bufflen) { + wchar_t buffer[2] = {buff[j], 0}; + env_set(argv[i], buffer, place); + } + else { + env_set(argv[i], L"", place); + } if (j < bufflen) ++j; } if (i < argc) env_set(argv[i], &buff[j], place);