diff options
author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-09-20 21:49:12 +0000 |
---|---|---|
committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-09-20 21:49:12 +0000 |
commit | c9c81ef3c667aaa14c498a5449ec6d134b4b66ff (patch) | |
tree | 0ac440db6513ee01deb5e5dc6142769d1e5b7b2d /libiberty | |
parent | 12cdcb9d74f55c165366ca1b1eeec013a0ce72ef (diff) | |
parent | 891196d7325e4c55d92d5ac5cfe7161c4f36c0ce (diff) | |
download | gcc-fortran-dev.tar.gz |
Merge from trunk (r239915 to r240230)fortran-dev
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/fortran-dev@240290 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libiberty')
-rw-r--r-- | libiberty/ChangeLog | 10 | ||||
-rw-r--r-- | libiberty/cp-demangle.c | 10 | ||||
-rw-r--r-- | libiberty/pex-win32.c | 4 | ||||
-rw-r--r-- | libiberty/testsuite/test-pexecute.c | 14 |
4 files changed, 33 insertions, 5 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 0b97a904c6f..5934bc1fa8a 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,13 @@ +2016-09-19 Andrew Stubbs <ams@codesourcery.com> + + * pex-win32.c (argv_to_cmdline): Quote zero-length parameters. + * testsuite/test-pexecute.c (main): Insert check for zero-length parameters. + +2016-09-10 Mark Wielaard <mjw@redhat.com> + + * cp-demangle.c (d_substitution): Change struct demangle_component + variable name from c to dc. + 2016-08-12 Marek Polacek <polacek@redhat.com> PR c/7652 diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 1c2bce29179..a843dc38f98 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -3769,7 +3769,7 @@ d_substitution (struct d_info *di, int prefix) { const char *s; int len; - struct demangle_component *c; + struct demangle_component *dc; if (p->set_last_name != NULL) di->last_name = d_make_sub (di, p->set_last_name, @@ -3785,15 +3785,15 @@ d_substitution (struct d_info *di, int prefix) len = p->simple_len; } di->expansion += len; - c = d_make_sub (di, s, len); + dc = d_make_sub (di, s, len); if (d_peek_char (di) == 'B') { /* If there are ABI tags on the abbreviation, it becomes a substitution candidate. */ - c = d_abi_tags (di, c); - d_add_substitution (di, c); + dc = d_abi_tags (di, dc); + d_add_substitution (di, dc); } - return c; + return dc; } } diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c index 66d2f1157c7..4c15b0d11a0 100644 --- a/libiberty/pex-win32.c +++ b/libiberty/pex-win32.c @@ -370,6 +370,8 @@ argv_to_cmdline (char *const *argv) cmdline_len++; } } + if (j == 0) + needs_quotes = 1; /* Trailing backslashes also need to be escaped because they will be followed by the terminating quote. */ if (needs_quotes) @@ -394,6 +396,8 @@ argv_to_cmdline (char *const *argv) break; } } + if (j == 0) + needs_quotes = 1; if (needs_quotes) { diff --git a/libiberty/testsuite/test-pexecute.c b/libiberty/testsuite/test-pexecute.c index 8e01fda479a..f62239d49b8 100644 --- a/libiberty/testsuite/test-pexecute.c +++ b/libiberty/testsuite/test-pexecute.c @@ -285,6 +285,20 @@ main (int argc, char **argv) ERROR ("echo exit status failed"); pex_free (pex1); + /* Check empty parameters don't get lost. */ + pex1 = TEST_PEX_INIT (PEX_USE_PIPES, "temp"); + subargv[1] = "echo"; + subargv[2] = "foo"; + subargv[3] = ""; + subargv[4] = "bar"; + subargv[5] = NULL; + TEST_PEX_RUN (pex1, 0, "./test-pexecute", subargv, NULL, NULL); + e = TEST_PEX_READ_OUTPUT (pex1); + CHECK_LINE (e, "foo bar"); /* Two spaces! */ + if (TEST_PEX_GET_STATUS_1 (pex1) != 0) + ERROR ("echo exit status failed"); + pex_free (pex1); + pex1 = TEST_PEX_INIT (PEX_USE_PIPES, "temp"); subargv[1] = "echo"; subargv[2] = "bar"; |