Hi Henrik,
At 23.18 08/01/2005, Henrik Nordstrom wrote:
>On Sat, 8 Jan 2005, Serassio Guido wrote:
>
>>> From my understanding of C++ the new operator is not supposed to 
>>> guarantee the memory is cleared. This is the job of the constructor and 
>>> related member initializers, where the default constructor memsets the 
>>> object to 0.
>>
>>So, in the Robert's patch something should be wrong: he changed a 
>>xcalloc() call with a new operator.
>
>No, I stand slightly corrected, there is no automatic default constructor 
>in C++. Just like in C if you do not explicity initialize allocated memory 
>you get garbage.
This was always clear to me. The problem, when using C++, can be to see 
where is the problem, particularly when the C++ knowledge is still little 
like mine ... :-(
My first time impact with C++ was the Robert's refactoring work in Squid: 
non exactly  a C++ implementation easy to understand for a newbe ... :-)
>There is nothing wrong with the patch. What is wrong is the 
>RemovalPolicySettings class which does not have a constructor and leaves 
>the object uninitialized.
Now is clear to me how fix similar problems.
>  This then crashes when parsing as the parsing routines tries to free the 
> old values (garbage).
>
>The following should fix it:
Yes, it works fine.
Regards
Guido
-
========================================================
Guido Serassio
Acme Consulting S.r.l. - Microsoft Certified Partner
Via Gorizia, 69             10136 - Torino - ITALY
Tel. : +39.011.3249426      Fax. : +39.011.3293665
Email: guido.serassio@acmeconsulting.it
WWW: http://www.acmeconsulting.it/
Received on Sun Jan 09 2005 - 10:48:50 MST
This archive was generated by hypermail pre-2.1.9 : Tue Feb 01 2005 - 12:00:02 MST