axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Samisa Abeysinghe <samisa.abeysin...@gmail.com>
Subject Re: Why do we use Virtual destructors [ [jira] Commented: (AXISCPP-343) SIGSEGV deserializing an array of complex elements]
Date Tue, 20 Sep 2005 03:51:11 GMT
Dushshantha Chandradasa wrote:

>Hi All,
>Could somebody please explain why do we use a virtual destructor in
>complex type auto generated classes for RPC style? 
>  
>
In my understanding, it is not a problem to use the virtual destructors. 
But the problem is that we use both memset, followed by delete[] on the 
same object.
I think we got to do only one of those and see if there are memory leaks.
using delete[] without memset and checking for leaks would reveal 
whether delete[] alone would take care of memory cleaning.

Thanks,
Samisa...

>Thanks,
>Dushshantha
>
>-----Original Message-----
>From: Dushshantha Chandradasa (JIRA) [mailto:axis-c-dev@ws.apache.org] 
>Sent: Friday, September 16, 2005 11:49 AM
>To: axis-c-dev@ws.apache.org
>Subject: [jira] Commented: (AXISCPP-343) SIGSEGV deserializing an array
>of complex elements
>
>    [
>http://issues.apache.org/jira/browse/AXISCPP-343?page=comments#action_12
>329513 ] 
>
>Dushshantha Chandradasa commented on AXISCPP-343:
>-------------------------------------------------
>
>Hi Mark,
>
>why do we use a memset here?? And why we use a virtual destructor here
>in RPC?? 
>
>  
>
>>SIGSEGV deserializing an array of complex elements
>>--------------------------------------------------
>>
>>         Key: AXISCPP-343
>>         URL: http://issues.apache.org/jira/browse/AXISCPP-343
>>     Project: Axis-C++
>>        Type: Bug
>>  Components: Serialization
>>    Versions: 1.4 Final
>> Environment: RH9
>>    Reporter: Unai Uribarri
>>    Assignee: Dushshantha Chandradasa
>> Attachments: siaam.wsdl
>>
>>The function Axis_Create_* (in the following example, the mapItem
>>object) in the stubs generated by wsdl2ws java tool generates a
>>    
>>
>SIGSEGV
>  
>
>>when tring to enlarge an array of objects
>>        mapItem* pNew = new mapItem[nSize];
>>        memcpy(pNew, pObj, sizeof(mapItem)*nSize/2);
>>        memset(pObj, 0, sizeof(mapItem)*nSize/2);
>>        --> delete [] pObj; <-- SIGSEGV
>>memset clears the virtual table pointer of the mapItem objects and the
>>    
>>
>delete operator crash.
>
>  
>


Mime
View raw message