crm_free(section_name);
cib_process_replace(	const char *op, int options, const char *section, xmlNodePtr input,	xmlNodePtr *answer){	gboolean verbose       = FALSE;	xmlNodePtr tmpCib      = NULL;	xmlNodePtr cib_update  = NULL;	xmlNodePtr the_update  = NULL;	char *section_name = NULL;	enum cib_errors result = cib_ok;		crm_debug("Processing \"%s\" event", op);	if(answer != NULL) *answer = NULL;	if (options & cib_verbose) {		verbose = TRUE;	}	if(safe_str_eq(XML_CIB_TAG_SECTION_ALL, section)) {		section = NULL;	}		cib_update = find_xml_node(input, XML_TAG_CIB, TRUE);		if (cib_update == NULL) {		result = cib_NOOBJECT;			} else if (section == NULL) {		tmpCib = copy_xml_node_recursive(cib_update);		the_update = cib_update;		section_name = crm_strdup(tmpCib->name);			} else {		tmpCib = copy_xml_node_recursive(get_the_CIB());		section_name = crm_strdup(section);		replace_section(section_name, tmpCib, input);		the_update = get_object_root(section_name, cib_update);	}	cib_pre_notify(		op, get_object_root(section_name, get_the_CIB()), the_update);	cib_update_counter(tmpCib, XML_ATTR_NUMUPDATES, FALSE);	result = revision_check(the_update, tmpCib, options);			copy_in_properties(tmpCib, cib_update);	if (result == cib_ok && activateCibXml(tmpCib, CIB_FILENAME) < 0) {		crm_warn("Replacment of section=%s failed", section);		result = cib_ACTIVATION;	}	if (verbose || result != cib_ok) {		*answer = createCibFragmentAnswer(section_name, NULL);	}		cib_post_notify(op, the_update, result,			get_object_root(section_name, get_the_CIB()));	return result;}