axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Damitha Kumarage <damith...@gmail.com>
Subject Re: [Axis2] Duplicating array list
Date Thu, 23 Nov 2006 09:28:35 GMT
Samisa Abeysinghe wrote:

> I would alway prefer a reference rather than a copy - specially 
> something like an array list. It is too costly yo copy.
> Rather it is far better to keep track of stuff and release based on 
> life time. Inside the engine, for most of the cases, just a reference 
> serves the purpose.

I agree. But think about this. In the scenario I pointed out I'm 
creating a completely new operation called create_seq_op.
app_msg_op_desc has flows and when it is freed those flows are freed. I 
am not clear how to share these flows between the two operations and 
avoid double free with the existing system. Could you please help me 
with this case?
Damitha

>
> Samisa...
>
> Damitha Kumarage wrote:
>
>> Hi,
>> In a situation like this
>>
>> outflow = AXIS2_OP_GET_OUT_FLOW(app_msg_op_desc, env);
>> AXIS2_OP_SET_OUT_FLOW(create_seq_op, env, outflow);
>>
>> Simply getting and setting the arraylist like this would leave to seg 
>> faults
>> when both operations try to free the flow. Therefore I would like to 
>> have
>> a new function in utilities
>>
>> axis2_status_t AXIS2_CALL
>> axis2_utils_array_copy(
>>    const axis2_env_t *env,
>>    const axis2_array_list_t *array_to_copy)
>> {
>>     int size = 0, i = 0;
>>     axis2_array_list_t *new_array = NULL;
>>     if(array_to_copy)
>>         size = AXIS2_ARRAY_LIST_SIZE(array_to_copy, env);
>>     if(size > 0)
>>     {
>>          new_array = axis2_array_list_create(env, 0);
>>          if(!new_array)
>>          {
>>               AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, 
>> AXIS2_FAILURE);
>>               return AXIS2_FAILURE;
>>           }
>>     }
>>     for(i = 0; i < size; i++)
>>    {
>>         void *item = AXIS2_ARRAY_LIST_GET(array_to_copy, env);
>>         AXIS2_ARRAY_LIST_ADD(new_array, env, item);
>>    }
>>    return new_array;
>> }
>>
>>
>> Or may be we can have this function in array_list it self
>>
>> Damitha
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-c-dev-help@ws.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-dev-help@ws.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-dev-help@ws.apache.org


Mime
View raw message