libidav/xml.c

changeset 756
ea0e059bae72
parent 747
efbd59642577
child 789
378b5ab86f77
equal deleted inserted replaced
755:283d3d7a657a 756:ea0e059bae72
72 72
73 DavXmlNode *ret = NULL; 73 DavXmlNode *ret = NULL;
74 74
75 while(stack->size > 0) { 75 while(stack->size > 0) {
76 ConvXmlElm *c = cxListAt(stack, 0); 76 ConvXmlElm *c = cxListAt(stack, 0);
77 xmlNode *n = c->node;
78 DavXmlNode *c_parent = c->parent;
79 DavXmlNode *prev = NULL;
77 cxListRemove(stack, 0); 80 cxListRemove(stack, 0);
78
79 xmlNode *n = c->node;
80 DavXmlNode *prev = NULL;
81 while(n) { 81 while(n) {
82 DavXmlNode *newxn = cxCalloc(a, 1, sizeof(DavXmlNode)); 82 DavXmlNode *newxn = cxCalloc(a, 1, sizeof(DavXmlNode));
83 if(!ret) { 83 if(!ret) {
84 ret = newxn; 84 ret = newxn;
85 } 85 }
86 newxn->type = convert_type(n->type); 86 newxn->type = convert_type(n->type);
87 newxn->parent = c->parent; 87 newxn->parent = c_parent;
88 if(c->parent && !c->parent->children) { 88 if(c_parent && !c_parent->children) {
89 c->parent->children = newxn; 89 c_parent->children = newxn;
90 } 90 }
91 newxn->prev = prev; 91 newxn->prev = prev;
92 if(prev) { 92 if(prev) {
93 prev->next = newxn; 93 prev->next = newxn;
94 } 94 }

mercurial