memset(dec, 0, sizeof(*dec));
dec->ano = ano;
dec->rendimento = list_new();
- if (!dec->rendimento) {
- free(dec);
- return NULL;
- }
+ if (!dec->rendimento)
+ goto out_rendimento;
+ dec->totais = pmhash_new();
+ if (!dec->totais)
+ goto out_totais;
dec->pago = 0;
dec->devido = 0;
dec->restituicao = 0;
dec->tipo = SIMPLES;
return dec;
+out_totais:
+ list_free(dec->rendimento, rendimento_free);
+out_rendimento:
+ free(dec);
+ return NULL;
}
void declaracao_free(struct declaracao *dec)
free(dec->cpf);
if (dec->nome)
free(dec->nome);
+ if (dec->recibo)
+ free(dec->recibo);
+ if (dec->retifica);
+ free(dec->retifica);
+ if (dec->banco)
+ free(dec->banco);
+ if (dec->agencia)
+ free(dec->agencia);
+ if (dec->contacorrente)
+ free(dec->contacorrente);
+ if (dec->dvconta)
+ free(dec->dvconta);
list_free(dec->rendimento, rendimento_free);
+ pmhash_del(dec->totais);
free(dec);
}