This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] Dwarf2 fix


Andreas Jaeger wrote:
> Michal Ludvig <mludvig@suse.cz> writes:

>>   context_cpy (struct context *dst, struct context *src)
>>   {
>>     int regs_size = sizeof (struct context_reg) * NUM_REGS;
>>+   struct context_reg *dreg;
>>
>>+   dreg = dst->reg;
>>     *dst = *src;
>>+   dst->reg = dreg;
>>+
>>     memcpy (dst->reg, src->reg, regs_size);
>>   }

 > Can you add a comment here, why this is needed?

Structure dst contains a pointer to an array of registers of a given 
frame as well as src does. This array was already allocated before dst 
was passed to context_cpy but the pointer to it was overriden by
'*dst = *src' and the array was lost. This led to the situation, that 
I've had a copy of src placed in dst, but both of them pointed to the 
same regs array and thus I've sometimes blindly rewritten it.
Now I save the pointer before I copy src to dst, return it back after 
that and copy the registers into their new place finally.

Michal Ludvig
-- 
* SuSE CR, s.r.o     * mludvig@suse.cz
* +420 2 9654 5373   * http://www.suse.cz


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]