free memory
* add mem rule to Makefile * add free_numeral() * free all memory allocations Signed-off-by: Daniel Santos <dacs.git@brilhante.top>
This commit is contained in:
parent
06bb8994d4
commit
90c869857b
3
Makefile
3
Makefile
|
@ -55,3 +55,6 @@ clean:
|
|||
run: decimal-earth
|
||||
./decimal-earth 21
|
||||
|
||||
mem: decimal-earth
|
||||
valgrind --leak-check=full --show-leak-kinds=all -s decimal-earth 999
|
||||
|
||||
|
|
28
numericx.c
28
numericx.c
|
@ -177,7 +177,8 @@ reverse_string(char* string)
|
|||
}
|
||||
}
|
||||
|
||||
bool is_valid_number(char* numeral_system, char *number)
|
||||
bool
|
||||
is_valid_number(char* numeral_system, char *number)
|
||||
{
|
||||
/*
|
||||
if( *number == '-' || *number == '+' )
|
||||
|
@ -193,6 +194,19 @@ bool is_valid_number(char* numeral_system, char *number)
|
|||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
free_numeral(numeral_ptr* numeral)
|
||||
{
|
||||
numeral_ptr* tmp = NULL;
|
||||
|
||||
while( !(numeral == NULL) )
|
||||
{
|
||||
tmp = numeral->next;
|
||||
free(numeral);
|
||||
numeral = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
|
@ -218,6 +232,8 @@ main(int argc, char* argv[])
|
|||
/* Check if number belongs to it's numerical system */
|
||||
if( !is_valid_number(from, number) )
|
||||
{
|
||||
free(from);
|
||||
free(to);
|
||||
fprintf(stderr, "error: %s.\n", strerror(EDOM));
|
||||
exit(EDOM);
|
||||
}
|
||||
|
@ -252,6 +268,10 @@ main(int argc, char* argv[])
|
|||
{
|
||||
if( strlen(number) == 1 && *number == *from_first )
|
||||
{
|
||||
free(from);
|
||||
free(to);
|
||||
free_numeral(counting);
|
||||
free_numeral(result);
|
||||
fprintf(stderr, "error: unrepresentable void number\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
@ -295,5 +315,11 @@ main(int argc, char* argv[])
|
|||
print_numeral(result);
|
||||
printf("\n");
|
||||
|
||||
/* free memory */
|
||||
free(from);
|
||||
free(to);
|
||||
free_numeral(counting);
|
||||
free_numeral(result);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue