Corrige possível utilização após liberar memória.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Thu, 2 Mar 2017 10:32:32 +0000 (07:32 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Thu, 2 Mar 2017 10:32:32 +0000 (07:32 -0300)
Se um erro ocorre ao atualizar os totais dos rendimentos isentos ou
exclusivos, liberamos a estrutura, mas não a removemos da lista. A
adição à lista deve ser a última ação, para prevenir tais erros.

lib/isento.c

index 25512f1..fd8f925 100644 (file)
@@ -151,13 +151,13 @@ static int run_isento(struct declaracao *dec, char **args, int argc)
                isento_free(isento);
                return -EINVAL;
        }
-       r = list_insert_ordered(&dec->isentos, isento, isento_cmp);
-       if (r < 0) {
+       r = isento_totais_update(dec, isento);
+       if (r) {
                isento_free(isento);
                return r;
        }
-       r = isento_totais_update(dec, isento);
-       if (r) {
+       r = list_insert_ordered(&dec->isentos, isento, isento_cmp);
+       if (r < 0) {
                isento_free(isento);
                return r;
        }