diff --git a/du6/program.c b/du6/program.c index 7dbc15c..dbdf58b 100644 --- a/du6/program.c +++ b/du6/program.c @@ -44,18 +44,23 @@ Tree* read_tree() { // inak nacitat oboch potomkov node->left = read_tree(); - if (!node->left) { - valid_db = 0; - free(node); - return NULL; + node->right = read_tree(); + + if (!node->left || !node->right) { + valid_db = 0; + destroy_tree(node->left); + destroy_tree(node->right); + free(node); + return NULL; } - node->right = read_tree(); - if (!node->right) { - free(node->left); - valid_db = 0; - free(node); - return NULL; + long cur = ftell(stdin); + if (fgets(buffer, SIZE, stdin)) { + if (strcmp(buffer, "\n") != 0 && buffer[0] != '*') { + valid_db = 0; + } else { + fseek(stdin, cur, SEEK_SET); + } } return node;