public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@polymtl.ca>
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA v2 22/24] Introduce gdb_argv, a class wrapper for buildargv
Date: Mon, 31 Jul 2017 20:22:00 -0000	[thread overview]
Message-ID: <5caf2c2b83a56438a2df4cbd3525ef89@polymtl.ca> (raw)
In-Reply-To: <20170725172107.9799-23-tom@tromey.com>

On 2017-07-25 19:21, Tom Tromey wrote:
> @@ -254,11 +253,10 @@ gdbscm_string_to_argv (SCM string_scm)
>        return SCM_EOL;
>      }
> 
> -  c_argv = gdb_buildargv (string);
> +  gdb_argv c_argv (string);
>    for (i = 0; c_argv[i] != NULL; ++i)

Range-based for loop?

> diff --git a/gdb/procfs.c b/gdb/procfs.c
> index a0d2270..34e1996 100644
> --- a/gdb/procfs.c
> +++ b/gdb/procfs.c
> @@ -5113,11 +5113,8 @@ procfs_info_proc (struct target_ops *ops, const
> char *args,
>      }
> 
>    old_chain = make_cleanup (null_cleanup, 0);
> -  if (args)
> -    {
> -      argv = gdb_buildargv (args);
> -      make_cleanup_freeargv (argv);
> -    }
> +  gdb_argv built_argv (args);
> +  argv = built_argv.get ();
>    while (argv != NULL && *argv != NULL)

An opportunity to use a range based for ?

> @@ -890,7 +888,7 @@ pipe_windows_open (struct serial *scb, const char 
> *name)
>      const char *err_msg
>        = pex_run (ps->pex, PEX_SEARCH | PEX_BINARY_INPUT | 
> PEX_BINARY_OUTPUT
>  		 | PEX_STDERR_TO_PIPE,
> -                 argv[0], argv, NULL, NULL,
> +                 argv[0], argv.get (), NULL, NULL,
>                   &err);
> 
>      if (err_msg)
> @@ -920,6 +918,7 @@ pipe_windows_open (struct serial *scb, const char 
> *name)
> 
>    scb->state = (void *) ps;
> 
> +  argv.release ();

This .release() seems to match previous behavior, but that previous 
behavior looks fishy to me.  Nothing seems to take ownership of that 
argv.  The only candidate would be pex_run, but as far as I can see it 
doesn't.

> diff --git a/gdb/stack.c b/gdb/stack.c
> index 7f8a51c..9c6d87e 100644
> --- a/gdb/stack.c
> +++ b/gdb/stack.c
> @@ -1872,13 +1872,14 @@ backtrace_command (char *arg, int from_tty)
>    int fulltrace_arg = -1, arglen = 0, argc = 0, no_filters  = -1;
>    int user_arg = 0;
> 
> +  gdb_argv built_argv;

Can this go in the "if" scope?

> diff --git a/gdb/utils.c b/gdb/utils.c
> index 06f4168..8a7a60f 100644
> --- a/gdb/utils.c
> +++ b/gdb/utils.c
> @@ -2863,11 +2863,25 @@ ldirname (const char *filename)
>    return dirname;
>  }
> 
> +/* See utils.h.  */
> +
> +void
> +gdb_argv::reset (const char *s)
> +{
> +  char **argv = buildargv (s);
> +
> +  if (s != NULL && argv == NULL)
> +    malloc_failure (0);
> +
> +  freeargv (m_argv);
> +  m_argv = argv;
> +}
> +
>  /* Call libiberty's buildargv, and return the result.
>     If buildargv fails due to out-of-memory, call nomem.
>     Therefore, the returned value is guaranteed to be non-NULL,
>     unless the parameter itself is NULL.  */
> -
> +

Spurious space added here.

The patch LGTM (the .release() in the mingw code can be check later).  
You can address the other comments at your discretion before pushing.

Thanks,

Simon

  reply	other threads:[~2017-07-31 20:22 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-25 17:24 [RFA v2 00/24] More miscellaneous C++-ification Tom Tromey
2017-07-25 17:21 ` [RFA v2 19/24] Replace do_restore_instream_cleanup with scoped_restore Tom Tromey
2017-07-25 17:21 ` [RFA v2 18/24] Use a scoped_restore for command_nest_depth Tom Tromey
2017-07-25 17:21 ` [RFA v2 22/24] Introduce gdb_argv, a class wrapper for buildargv Tom Tromey
2017-07-31 20:22   ` Simon Marchi [this message]
2017-07-25 17:21 ` [RFA v2 23/24] Use gdb_argv in Python Tom Tromey
2017-07-31 20:26   ` Simon Marchi
2017-07-25 17:22 ` [RFA v2 16/24] Remove in_user_command Tom Tromey
2017-07-25 17:22 ` [RFA v2 12/24] More uses of scoped_restore Tom Tromey
2017-07-25 17:22 ` [RFA v2 05/24] Use gdb_file_up in source.c Tom Tromey
2017-07-30 18:59   ` Simon Marchi
2017-07-25 17:24 ` [RFA v2 06/24] Change open_terminal_stream to return a gdb_file_up Tom Tromey
2017-07-30 19:04   ` Simon Marchi
2017-07-25 17:24 ` [RFA v2 08/24] Remove an unlink cleanup Tom Tromey
2017-07-31 18:47   ` Simon Marchi
2017-07-25 17:24 ` [RFA v2 09/24] Remove close cleanup Tom Tromey
2017-07-31 19:09   ` Simon Marchi
2017-07-25 17:24 ` [RFA v2 24/24] Remove make_cleanup_freeargv and gdb_buildargv Tom Tromey
2017-07-31 20:26   ` Simon Marchi
2017-07-25 17:25 ` [RFA v2 10/24] Remove make_cleanup_restore_current_language Tom Tromey
2017-07-31 19:21   ` Simon Marchi
2017-07-31 22:17     ` Tom Tromey
2017-08-01  8:44       ` Simon Marchi
2017-07-25 17:26 ` [RFA v2 07/24] Remove make_cleanup_fclose Tom Tromey
2017-07-30 19:05   ` Simon Marchi
2017-07-25 17:26 ` [RFA v2 01/24] Introduce and use ui_out_emit_table Tom Tromey
2017-07-29 23:10   ` Simon Marchi
2017-07-30 16:23     ` Tom Tromey
2017-07-30 18:29       ` Simon Marchi
2017-07-31 22:12         ` Tom Tromey
2017-07-25 17:26 ` [RFA v2 02/24] Introduce and use gdb_file_up Tom Tromey
2017-07-29 23:40   ` Simon Marchi
2017-07-30 16:25     ` Tom Tromey
2017-07-30 18:31       ` Simon Marchi
2017-07-25 17:26 ` [RFA v2 21/24] Remove a cleanup in Python Tom Tromey
2017-07-25 17:26 ` [RFA v2 04/24] Use gdb_file_up in fbsd-nat.c Tom Tromey
2017-07-29 23:56   ` Simon Marchi
2017-07-25 17:27 ` [RFA v2 15/24] Use containers to avoid cleanups Tom Tromey
2017-07-31 19:42   ` Simon Marchi
2017-07-25 17:27 ` [RFA v2 13/24] Replace tui_restore_gdbout with scoped_restore Tom Tromey
2017-07-25 17:27 ` [RFA v2 14/24] Use unique_xmalloc_ptr in jit.c Tom Tromey
2017-07-31 19:25   ` Simon Marchi
2017-07-25 17:27 ` [RFA v2 03/24] Change return type of find_and_open_script Tom Tromey
2017-07-29 23:54   ` Simon Marchi
2017-07-30 16:27     ` Tom Tromey
2017-07-25 17:51 ` [RFA v2 20/24] Avoid some manual memory management in Python Tom Tromey
2017-07-25 18:02 ` [RFA v2 17/24] Remove user_call_depth Tom Tromey
2017-07-31 19:46   ` Simon Marchi
2017-07-25 18:04 ` [RFA v2 11/24] Remove make_cleanup_free_so Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5caf2c2b83a56438a2df4cbd3525ef89@polymtl.ca \
    --to=simon.marchi@polymtl.ca \
    --cc=gdb-patches@sourceware.org \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).