mirror of
https://github.com/theoludwig/libcproject.git
synced 2024-12-11 21:13:00 +01:00
fix: more memory issues thanks to -fsanitize=address flag
Work In Progress #5
This commit is contained in:
parent
a0a1310f53
commit
209440588d
@ -56,7 +56,9 @@ string_t convert_number_to_string(const long long integer) {
|
|||||||
string_value[index++] = '-';
|
string_value[index++] = '-';
|
||||||
}
|
}
|
||||||
string_value[index] = '\0';
|
string_value[index] = '\0';
|
||||||
return string_reverse(string_value);
|
char* result = string_reverse(string_value);
|
||||||
|
free(string_value);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
string_t convert_number_from_base_10_to_base(unsigned long long number, unsigned int base) {
|
string_t convert_number_from_base_10_to_base(unsigned long long number, unsigned int base) {
|
||||||
|
@ -221,6 +221,7 @@ string_t *hash_map_get_keys(struct hash_map *hash_map) {
|
|||||||
void hash_map_free(struct hash_map *hash_map) {
|
void hash_map_free(struct hash_map *hash_map) {
|
||||||
for (size_t index = 0; index < hash_map->capacity; index++) {
|
for (size_t index = 0; index < hash_map->capacity; index++) {
|
||||||
if (hash_map->items[index] != NULL) {
|
if (hash_map->items[index] != NULL) {
|
||||||
|
free(hash_map->items[index]->head->data);
|
||||||
linked_list_free(hash_map->items[index]);
|
linked_list_free(hash_map->items[index]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ struct linked_list *linked_list_reverse(struct linked_list *list) {
|
|||||||
linked_list_add_after_last(linked_list_reversed, stack_node_current->data);
|
linked_list_add_after_last(linked_list_reversed, stack_node_current->data);
|
||||||
stack_node_current = stack_node_current->next;
|
stack_node_current = stack_node_current->next;
|
||||||
}
|
}
|
||||||
|
stack_free(stack);
|
||||||
return linked_list_reversed;
|
return linked_list_reversed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,11 +192,9 @@ string_t* string_split(const string_t string_value, char separator, size_t* resu
|
|||||||
size_t index_result = 0;
|
size_t index_result = 0;
|
||||||
string_t current = malloc(sizeof(char) * (string_length + 1));
|
string_t current = malloc(sizeof(char) * (string_length + 1));
|
||||||
string_t* result = NULL;
|
string_t* result = NULL;
|
||||||
|
|
||||||
if (current == NULL) {
|
if (current == NULL) {
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (index_string < string_length) {
|
while (index_string < string_length) {
|
||||||
if (string_value[index_string] == separator) {
|
if (string_value[index_string] == separator) {
|
||||||
current[index_current] = '\0';
|
current[index_current] = '\0';
|
||||||
@ -206,7 +204,7 @@ string_t* string_split(const string_t string_value, char separator, size_t* resu
|
|||||||
}
|
}
|
||||||
result[index_result] = string_copy(current);
|
result[index_result] = string_copy(current);
|
||||||
index_result++;
|
index_result++;
|
||||||
index_current = 0; // Reset index_current for the next substring
|
index_current = 0;
|
||||||
} else {
|
} else {
|
||||||
current[index_current] = string_value[index_string];
|
current[index_current] = string_value[index_string];
|
||||||
index_current++;
|
index_current++;
|
||||||
@ -281,6 +279,7 @@ bool string_get_has_unique_characters(const string_t string_value) {
|
|||||||
string_t key = convert_character_to_string(character);
|
string_t key = convert_character_to_string(character);
|
||||||
if (hash_map_contains_key(characters_already_seen, key)) {
|
if (hash_map_contains_key(characters_already_seen, key)) {
|
||||||
has_unique = false;
|
has_unique = false;
|
||||||
|
free(key);
|
||||||
} else {
|
} else {
|
||||||
hash_map_add(characters_already_seen, key, (void*)true);
|
hash_map_add(characters_already_seen, key, (void*)true);
|
||||||
}
|
}
|
||||||
@ -342,6 +341,7 @@ string_t string_get_formatted_number(const long long number, string_t separator)
|
|||||||
count = 0;
|
count = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(number_string);
|
||||||
result[formatted_length] = '\0';
|
result[formatted_length] = '\0';
|
||||||
result = string_reverse(result);
|
result = string_reverse(result);
|
||||||
if (is_negative) {
|
if (is_negative) {
|
||||||
|
@ -19,5 +19,6 @@ int main(int argc, string_t* argv) {
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
printf("Success: Version set to %s.\n", argv[1]);
|
printf("Success: Version set to %s.\n", argv[1]);
|
||||||
|
free(content);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,25 @@ void convert_test() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void convert_character_to_string_test() {
|
void convert_character_to_string_test() {
|
||||||
assert(assert_string_equal(convert_character_to_string('a'), "a"));
|
char* result = convert_character_to_string('a');
|
||||||
assert(assert_string_equal(convert_character_to_string('A'), "A"));
|
assert(assert_string_equal(result, "a"));
|
||||||
assert(assert_string_equal(convert_character_to_string('0'), "0"));
|
free(result);
|
||||||
assert(assert_string_equal(convert_character_to_string(' '), " "));
|
|
||||||
assert(assert_string_equal(convert_character_to_string('\0'), ""));
|
result = convert_character_to_string('A');
|
||||||
|
assert(assert_string_equal(result, "A"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_character_to_string('0');
|
||||||
|
assert(assert_string_equal(result, "0"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_character_to_string(' ');
|
||||||
|
assert(assert_string_equal(result, " "));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_character_to_string('\0');
|
||||||
|
assert(assert_string_equal(result, ""));
|
||||||
|
free(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
void convert_character_to_digit_test() {
|
void convert_character_to_digit_test() {
|
||||||
@ -63,33 +77,109 @@ void convert_string_to_number_test() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void convert_number_to_string_test() {
|
void convert_number_to_string_test() {
|
||||||
assert(assert_string_equal(convert_number_to_string(0), "0"));
|
char* result = convert_number_to_string(0);
|
||||||
assert(assert_string_equal(convert_number_to_string(1), "1"));
|
assert(assert_string_equal(result, "0"));
|
||||||
assert(assert_string_equal(convert_number_to_string(2), "2"));
|
free(result);
|
||||||
assert(assert_string_equal(convert_number_to_string(3), "3"));
|
|
||||||
assert(assert_string_equal(convert_number_to_string(4), "4"));
|
result = convert_number_to_string(1);
|
||||||
assert(assert_string_equal(convert_number_to_string(5), "5"));
|
assert(assert_string_equal(result, "1"));
|
||||||
assert(assert_string_equal(convert_number_to_string(6), "6"));
|
free(result);
|
||||||
assert(assert_string_equal(convert_number_to_string(7), "7"));
|
|
||||||
assert(assert_string_equal(convert_number_to_string(8), "8"));
|
result = convert_number_to_string(2);
|
||||||
assert(assert_string_equal(convert_number_to_string(9), "9"));
|
assert(assert_string_equal(result, "2"));
|
||||||
assert(assert_string_equal(convert_number_to_string(10), "10"));
|
free(result);
|
||||||
assert(assert_string_equal(convert_number_to_string(11), "11"));
|
|
||||||
assert(assert_string_equal(convert_number_to_string(20), "20"));
|
result = convert_number_to_string(3);
|
||||||
assert(assert_string_equal(convert_number_to_string(-0), "0"));
|
assert(assert_string_equal(result, "3"));
|
||||||
assert(assert_string_equal(convert_number_to_string(-1), "-1"));
|
free(result);
|
||||||
assert(assert_string_equal(convert_number_to_string(-20), "-20"));
|
|
||||||
|
result = convert_number_to_string(4);
|
||||||
|
assert(assert_string_equal(result, "4"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(5);
|
||||||
|
assert(assert_string_equal(result, "5"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(6);
|
||||||
|
assert(assert_string_equal(result, "6"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(7);
|
||||||
|
assert(assert_string_equal(result, "7"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(8);
|
||||||
|
assert(assert_string_equal(result, "8"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(9);
|
||||||
|
assert(assert_string_equal(result, "9"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(10);
|
||||||
|
assert(assert_string_equal(result, "10"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(11);
|
||||||
|
assert(assert_string_equal(result, "11"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(20);
|
||||||
|
assert(assert_string_equal(result, "20"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(-0);
|
||||||
|
assert(assert_string_equal(result, "0"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(-1);
|
||||||
|
assert(assert_string_equal(result, "-1"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_to_string(-20);
|
||||||
|
assert(assert_string_equal(result, "-20"));
|
||||||
|
free(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
void convert_number_from_base_to_another_test() {
|
void convert_number_from_base_to_another_test() {
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("15", 10, 16), "F"));
|
char* result = convert_number_from_base_to_another("15", 10, 16);
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("100000000", 2, 16), "100"));
|
assert(assert_string_equal(result, "F"));
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("FFFFFF", 16, 10), "16777215"));
|
free(result);
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("1D57", 17, 35), "75C"));
|
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("80E", 20, 5), "100324"));
|
result = convert_number_from_base_to_another("100000000", 2, 16);
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("99", 10, 10), "99"));
|
assert(assert_string_equal(result, "100"));
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("3433024", 6, 28), "8008"));
|
free(result);
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("30288G3A", 17, 36), "KF12OI"));
|
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("10", 9, 9), "10"));
|
result = convert_number_from_base_to_another("FFFFFF", 16, 10);
|
||||||
assert(assert_string_equal(convert_number_from_base_to_another("10E", 23, 8), "1037"));
|
assert(assert_string_equal(result, "16777215"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_from_base_to_another("1D57", 17, 35);
|
||||||
|
assert(assert_string_equal(result, "75C"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_from_base_to_another("80E", 20, 5);
|
||||||
|
assert(assert_string_equal(result, "100324"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_from_base_to_another("99", 10, 10);
|
||||||
|
assert(assert_string_equal(result, "99"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_from_base_to_another("3433024", 6, 28);
|
||||||
|
assert(assert_string_equal(result, "8008"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_from_base_to_another("30288G3A", 17, 36);
|
||||||
|
assert(assert_string_equal(result, "KF12OI"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_from_base_to_another("10", 9, 9);
|
||||||
|
assert(assert_string_equal(result, "10"));
|
||||||
|
free(result);
|
||||||
|
|
||||||
|
result = convert_number_from_base_to_another("10E", 23, 8);
|
||||||
|
assert(assert_string_equal(result, "1037"));
|
||||||
|
free(result);
|
||||||
}
|
}
|
||||||
|
@ -79,6 +79,7 @@ void linked_list_reverse_test() {
|
|||||||
assert((list_reversed->head->next->next->data) == (void *)'B');
|
assert((list_reversed->head->next->next->data) == (void *)'B');
|
||||||
assert((list_reversed->head->next->next->next->data) == (void *)'A');
|
assert((list_reversed->head->next->next->next->data) == (void *)'A');
|
||||||
linked_list_free(list);
|
linked_list_free(list);
|
||||||
|
linked_list_free(list_reversed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void linked_list_reverse_mutate_test() {
|
void linked_list_reverse_mutate_test() {
|
||||||
|
Loading…
Reference in New Issue
Block a user