I am using a tuxedo server to manipulate the incoming XML requests. (parse
the xml, Modify some elements, etc)

For each request, i insert an element and the corresponding value to the
input XML

i pass 1 for number of elements.

int
insert_element_and_text_nodes(DOM_Document doc, char *parent, uint16
no_of_child
ren(=1), domElement_t *elements,  char **response)
{

  DOM_Node root = doc.getDocumentElement();

  DOM_Node parent_node = findNode(root, parent);
  if(parent_node== 0)
  {
     lm_message(LM_NORMAL, GetProgramName(), -1, "saXmlEvtHandler", 1, "%d -
Can
not find the parent node", __LINE__);
       *response = SAFaultError(SVC_PARENT_NODE_MISSING, parent,
FaultActor);
       return SVC_SUCCESS;
  }

bool hasErrors = false;
  for(int ii=0; ii<no_of_children; ii++)
  {
    DOMString  el_name = DOMString::transcode((elements+ii)->element_name);
    DOMString  el_value =
DOMString::transcode((elements+ii)->element_value);
    DOM_Node el_node;

    try {
      DOM_Element elem = (DOM_Element) doc.createElement(el_name);  //mem
leak
      el_node = parent_node.appendChild(elem);
      } catch(const DOM_DOMException& e) {
        lm_message(LM_NORMAL, GetProgramName(), -1, "saXmlEvtHandler", 1,
"%d -
Cannot append child element node: %s", __LINE__,
(elements+ii)->element_name);
        hasErrors = true;
      }
      catch(...){
      hasErrors = true;
      }
     if(hasErrors)
     {
       *response = SAFaultError(SVC_ELEMENT_APPEND_ERROR,
(elements+ii)->element
_name, FaultActor);
       return SVC_SUCCESS;
     }

     try {
       DOM_Text value_text = doc.createTextNode(el_value); //mem leak
       el_node.appendChild(value_text);
     }catch(const DOM_DOMException& e) {
      lm_message(LM_NORMAL, GetProgramName(), -1, "saXmlEvtHandler", 1, "%d
- Ca
nnot append child text node %s", __LINE__, (elements+ii)->element_value);
      hasErrors = true;
    }

    catch(...){
      hasErrors = true;
    }if(hasErrors)
    {
      *response = SAFaultError(SVC_TEXT_APPEND_ERROR,
(elements+ii)->element_nam
e, FaultActor);
      return SVC_SUCCESS;
    }
  }
  return SVC_SUCCESS;
}


When i try to use purify to find out the memory leaks, it shows leaks at the
statement where i create the element (statement in  BOLD).


Also it shows leaks where i do the parsing.

Do i have to delete these variables? i believe DOM will take care of doing
it when the variables go out of scope

Can someone help on this?


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to