diff options
| author | Damien Laniel <dlaniel@entrouvert.com> | 2007-10-11 07:28:31 +0000 |
|---|---|---|
| committer | Damien Laniel <dlaniel@entrouvert.com> | 2007-10-11 07:28:31 +0000 |
| commit | 007c08916217b5b706598e1060fe5c8e8454aefe (patch) | |
| tree | 8adcf33a29a7cf7d8090f0453a9594ee26e89366 | |
| parent | 0a611ce8af9b9a05f2821ab8f56ee4731bbd1572 (diff) | |
fixed modifyng root node
| -rw-r--r-- | lasso/id-wsf/data_service.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lasso/id-wsf/data_service.c b/lasso/id-wsf/data_service.c index ae4de06f..1bcbc401 100644 --- a/lasso/id-wsf/data_service.c +++ b/lasso/id-wsf/data_service.c @@ -726,7 +726,14 @@ lasso_data_service_build_modify_response_msg(LassoDataService *service) if (xpathObj && xpathObj->nodesetval && xpathObj->nodesetval->nodeNr) { xmlNode *node = xpathObj->nodesetval->nodeTab[0]; if (node != NULL) { - xmlReplaceNode(node, newNode); + /* If we must replace the root element, change it in the xmlDoc */ + if (node == cur_data) { + xmlDocSetRootElement(doc, newNode); + xmlFreeNode(cur_data); + cur_data = NULL; + } else { + xmlReplaceNode(node, newNode); + } } } else { res = LASSO_DST_ERROR_MODIFY_FAILED; @@ -735,10 +742,10 @@ lasso_data_service_build_modify_response_msg(LassoDataService *service) xpathObj = NULL; } - if (res == 0) { + if (res == 0 && doc->children != NULL) { /* Save new service resource data */ xmlFreeNode(service->resource_data); - service->resource_data = xmlCopyNode(cur_data, 1); + service->resource_data = xmlCopyNode(doc->children, 1); } xmlXPathFreeContext(xpathCtx); |
