struct cYAML *obj;
if (tree->state != TREE_STATE_SEQ_START &&
- tree->state != TREE_STATE_BLK_STARTED)
+ tree->state != TREE_STATE_BLK_STARTED &&
+ tree->state != TREE_STATE_VALUE)
return CYAML_ERROR_UNEXPECTED_STATE;
if (tree->state == TREE_STATE_SEQ_START) {
static bool free_node(struct cYAML *node, void *user_data, void **out)
{
- if (node)
- free(node);
+ if (!node)
+ return true;
+
+ if (node->cy_type == CYAML_TYPE_STRING)
+ free(node->cy_valuestring);
+ if (node->cy_string)
+ free(node->cy_string);
+ free(node);
return true;
}
if (cpi->array_first_elem)
fprintf(f, "%*s- ", INDENT * level, "");
- fprintf(f, "%*s""%s: %d\n", (cpi->array_first_elem) ? 0 :
+ fprintf(f, "%*s""%s: %" PRId64 "\n", (cpi->array_first_elem) ? 0 :
INDENT * level + ind, "", node->cy_string,
node->cy_valueint);
}
if ((fabs(((double)node->cy_valueint) - d) <= DBL_EPSILON) &&
(d <= INT_MAX) && (d >= INT_MIN))
- fprintf(f, "%*s""%s: %d\n", (cpi->array_first_elem) ? 0 :
+ fprintf(f, "%*s""%s: %" PRId64 "\n", (cpi->array_first_elem) ? 0 :
INDENT * level + ind, "",
node->cy_string, node->cy_valueint);
else {