diff options
author | 2014-08-22 21:52:41 +0200 | |
---|---|---|
committer | 2014-08-22 21:52:41 +0200 | |
commit | 1f3a93a3afd81d842732ba96ecf11466e5be6255 (patch) | |
tree | 40b996e052152976c1c71b4f8bf8d73cb4504c2e /builtin.cpp | |
parent | f9f773cc284c430bbf2fe1fd9613bbef4f3734be (diff) |
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.
Diffstat (limited to 'builtin.cpp')
-rw-r--r-- | builtin.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/builtin.cpp b/builtin.cpp index efe28f90..da9429b1 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); |