On Mon, May 6, 2019 at 12:32 PM Marek Polacek <pola...@redhat.com> wrote:
>
> This new code
>
>   vec_safe_push (call_args, (*call_args)[nargs-1]);
>
> doesn't seem to work well because "obj" points to garbage after the 
> vec_safe_reserve
> call:
>
> template<typename T, typename A>
> inline T *
> vec_safe_push (vec<T, A, vl_embed> *&v, const T &obj CXX_MEM_STAT_INFO)
> {
>   vec_safe_reserve (v, 1, false PASS_MEM_STAT);
>   return v->quick_push (obj);
> }

Ah, sneaky pass by reference.

> But using a dedicated variable works even when vec_safe_reserve actually
> extends.
>
> Bootstrapped/regtested on x86_64-linux, ok for trunk/9?

OK, thanks.

Jason

Reply via email to