argv.c (expandargv): Correct check for dynamically allocated argv.
authorDaniel van Gerpen <daniel@vangerpen.de>
Wed, 10 Jan 2018 22:40:53 +0000 (22:40 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 10 Jan 2018 22:40:53 +0000 (15:40 -0700)
2018-01-10  Daniel van Gerpen  <daniel@vangerpen.de>

* argv.c (expandargv): Correct check for dynamically
allocated argv.

From-SVN: r256460

libiberty/ChangeLog
libiberty/argv.c

index f1f6d8dee5b26acd93d03ab2344fd77ff236c657..817ebc644ea68f458565f821c5b6b78f5e9b71eb 100644 (file)
@@ -1,3 +1,8 @@
+2018-01-10  Daniel van Gerpen  <daniel@vangerpen.de>
+
+       * argv.c (expandargv): Correct check for dynamically
+       allocated argv.
+
 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
 
        Update copyright years.
index c6a79d215e308a7e971ec3c073e2c8f74c8cfbbe..4f66c8979b2a5ee5fab8a62c9ea36682116e575a 100644 (file)
@@ -367,8 +367,8 @@ expandargv (int *argcp, char ***argvp)
 {
   /* The argument we are currently processing.  */
   int i = 0;
-  /* Non-zero if ***argvp has been dynamically allocated.  */
-  int argv_dynamic = 0;
+  /* To check if ***argvp has been dynamically allocated.  */
+  char ** const original_argv = *argvp;
   /* Limit the number of response files that we parse in order
      to prevent infinite recursion.  */
   unsigned int iteration_limit = 2000;
@@ -449,7 +449,7 @@ expandargv (int *argcp, char ***argvp)
        /* Parse the string.  */
        file_argv = buildargv (buffer);
       /* If *ARGVP is not already dynamically allocated, copy it.  */
-      if (!argv_dynamic)
+      if (*argvp == original_argv)
        *argvp = dupargv (*argvp);
       /* Count the number of arguments.  */
       file_argc = 0;