aboutsummaryrefslogtreecommitdiffhomepage
path: root/builtin.cpp
diff options
context:
space:
mode:
authorGravatar Konrad Borowski <x.fix@o2.pl>2014-08-22 21:52:41 +0200
committerGravatar Konrad Borowski <x.fix@o2.pl>2014-08-22 21:52:41 +0200
commit1f3a93a3afd81d842732ba96ecf11466e5be6255 (patch)
tree40b996e052152976c1c71b4f8bf8d73cb4504c2e /builtin.cpp
parentf9f773cc284c430bbf2fe1fd9613bbef4f3734be (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.cpp8
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);