[prev in list] [next in list] [prev in thread] [next in thread] 

List:       axis-c-dev
Subject:    [jira] Closed: (AXIS2C-1528)
From:       "Aleksey Mokhonko (JIRA)" <jira () apache ! org>
Date:       2011-01-16 10:45:48
Message-ID: 23286717.393531295174748028.JavaMail.jira () thor
[Download RAW message or body]


     [ https://issues.apache.org/jira/browse/AXIS2C-1528?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]

Aleksey Mokhonko closed AXIS2C-1528.
------------------------------------


Ok, hope there will be less Copy-Paste in the future.

> axiom_util_get_first_child_element_with_localname() returns wrong child_node if a \
>                 sibling is present and the first node does not match
> --------------------------------------------------------------------------------------------------------------------------------------
>  
> Key: AXIS2C-1528
> URL: https://issues.apache.org/jira/browse/AXIS2C-1528
> Project: Axis2-C
> Issue Type: Bug
> Components: util
> Affects Versions: 1.6.0
> Environment: Linux
> Reporter: Aleksey Mokhonko
> Assignee: Nandika Jayawardana
> Fix For: Next Version
> 
> 
> Bug is obvious. I just show what to fix.
> File: om_util.c
> Routine: axiom_util_get_first_child_element_with_localname_attr()
> Line: 830
> Present: 
> if (om_attr_name && NULL != om_attr_value &&
> axutil_strcmp(om_attr_name, attr_name) == 0
> && axutil_strcmp(om_attr_value,
> attr_value) == 0)
> {
> *child_node = child; /* <--------------------------------  !!!!!!!!!!!!!!!! */
> return om_ele;
> }
> Must be:
> if (om_attr_name && NULL != om_attr_value &&
> axutil_strcmp(om_attr_name, attr_name) == 0
> && axutil_strcmp(om_attr_value,
> attr_value) == 0)
> {
> *child_node = next_sibling; /* <-------------------------------- !!!!!!!!!!!!!!!! \
> */ return om_ele;
> }
> ===============================================
> More detailed:
> ===============================================
> next_sibling = axiom_node_get_next_sibling(child, env);
> while (next_sibling)
> {
> if (axiom_node_get_node_type(next_sibling, env) == AXIOM_ELEMENT)
> {
> om_ele =
> (axiom_element_t *) axiom_node_get_data_element(next_sibling,
> env);
> if (om_ele)
> {
> child_localname = axiom_element_get_localname(om_ele, env);
> if (child_localname &&
> axutil_strcmp(child_localname, localname) == 0)
> {
> attr_ht = axiom_element_get_all_attributes(om_ele, env);
> if (attr_ht)
> {
> for (hi = axutil_hash_first(attr_ht, env); hi;
> hi = axutil_hash_next(env, hi))
> {
> void *val = NULL;
> axutil_hash_this(hi, NULL, NULL, &val);
> if (val)
> {
> om_attr = (axiom_attribute_t *) val;
> om_attr_name =
> axiom_attribute_get_localname(om_attr, env);
> om_attr_value =
> axiom_attribute_get_value(om_attr, env);
> if (om_attr_name && NULL != om_attr_value &&
> axutil_strcmp(om_attr_name, attr_name) == 0
> && axutil_strcmp(om_attr_value,
> attr_value) == 0)
> {
> *child_node = next_sibling; /* !!!!!!!!!!!!!!!! */ \
> <-----------------------------------------  !!!!!!!!!!!!!!!!!!!!!!!!! return \
> om_ele; }
> om_attr = NULL;
> om_attr_name = NULL;
> om_attr_value = NULL;
> }
> }
> }
> }
> 
> }
> om_ele = NULL;
> child_localname = NULL;
> }
> next_sibling = axiom_node_get_next_sibling(next_sibling, env);
> }
> return NULL;
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic