snapshot_output_node; snapshot_output_node =
xmlNextElementSibling(snapshot_output_node)) {
char *name = NULL;
- uint64_t max_size = UINT64_MAX;
+ uint64_t max_size = DEFAULT_SNAPSHOT_MAX_SIZE;
struct consumer_output output = { 0 };
struct lttng_snapshot_output *snapshot_output = NULL;
goto error_snapshot_output;
}
+ if (!name) {
+ /* Generate a default name */
+ int pret;
+ pret = asprintf(&name, DEFAULT_SNAPSHOT_NAME "-%" PRIu32,
+ lttng_snapshot_output_get_id(snapshot_output));
+ if (pret < 0) {
+ name = NULL;
+ PERROR("snprintf output name");
+ goto error_snapshot_output;
+ }
+ }
+
ret = lttng_snapshot_output_set_name(name, snapshot_output);
if (ret) {
goto error_snapshot_output;
}
end:
+ fini_session_config_validation_ctx(&validation_ctx);
return document;
error:
xmlFreeDoc(document->document);
xmlFreeDoc(document->document);
document->document = NULL;
}
+
+ free(document);
}
LTTNG_HIDDEN
int config_document_replace_element_value(struct config_document *document,
const char *xpath, const char *value)
{
- int ret;
+ int ret = 0;
int xpath_result_size;
xmlXPathContextPtr xpath_context = NULL;
ret = load_session_from_document(document, session_name,
&validation_ctx, override);
end:
+ fini_session_config_validation_ctx(&validation_ctx);
return ret;
}
goto end;
}
-
old_node = xmlReplaceNode(xpath_result_set->nodeTab[0], copy);
+ if (xpath_result_set->nodeTab[0]->type != XML_NAMESPACE_DECL)
+ xpath_result_set->nodeTab[0] = NULL;
if (!old_node) {
ret = -LTTNG_ERR_CONFIG_REPLACEMENT;
xmlFreeNode(copy);
goto end;
}
- xmlFree(old_node);
+ xmlUnlinkNode(old_node);
+ xmlFreeNode(old_node);
end:
xmlXPathFreeContext(xpath_context);
xmlXPathFreeObject(xpath_object);
if (!element->element) {
free(element);
element = NULL;
+ goto end;
}
if (internal_value) {
LTTNG_HIDDEN
void config_element_free(struct config_element *element) {
- if (element->element) {
- xmlFree(element->element);
+ if (element && element->element) {
+ xmlFreeNode(element->element);
}
free(element);