On Mon, Sep 28, 2015 at 2:05 PM, Bernd Schmidt <bschm...@redhat.com> wrote: > On 09/28/2015 02:00 PM, Jakub Jelinek wrote: >> >> On Mon, Sep 28, 2015 at 01:27:32PM +0200, Bernd Schmidt wrote: >>>> >>>> I've removed obstack_ptr_grow for arrays with known sizes after this >>>> review: >>>> https://gcc.gnu.org/ml/gcc-patches/2014-10/msg02210.html >>> >>> >>> That's unfortunate, I think that made the code less future-proof. IMO we >>> should revert to the obstack method especially if Thomas -v patch goes >>> in. >> >> >> Why? If the number of arguments is bound by a small constant, using >> automatic fixed size array is certainly more efficient, and I really don't >> see it as less readable or maintainable. > > > The code becomes harder to modify, with more room for error, and you no > longer have consistency in how you build argv arrays within the same file. > The obstack method is pretty much foolproof and doesn't even remotely allow > for the possibility of a buffer overflow, and adding new arguments, even > conditionally, is entirely trivial. Efficiency is really not an issue for > building arguments compared to the cost of executing another binary.
I agree that obstacks are better here. Efficiency shouldn't matter here. But we're in C++ now so can't we statically construct the array with sth like const char *new_argv[] = { "objcopy", ... }; ? Thus have the compiler figure out the number of args. That would work for me as well. Richard. > > Bernd