Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Corrigir vazamento de memória na classe ArquivoRetornoCrb643.cs devido ao StreamReader não sendo descartado corretamente #1011

Open
renansj opened this issue Jan 8, 2025 · 1 comment

Comments

@renansj
Copy link

renansj commented Jan 8, 2025

Na classe ArquivoRetornoCrb643.cs, atualmente não há um controle adequado para liberar os recursos utilizados pelo StreamReader, o que pode resultar em um vazamento de memória durante a leitura do arquivo de retorno.

O código atual da função LerArquivoRetorno não faz uso de um bloco using ou de um fechamento explícito do StreamReader, o que impede a liberação adequada do recurso.

Solução proposta:

A solução seria garantir que o StreamReader seja descartado corretamente, utilizando o método Dispose() no final da execução, para liberar os recursos de maneira apropriada. Isso pode ser feito colocando o Dispose() dentro de um bloco finally, assegurando que o StreamReader seja fechado corretamente, independentemente de exceções ocorrendo durante a leitura do arquivo.

A modificação sugerida para a função LerArquivoRetorno seria a seguinte:

public override void LerArquivoRetorno(IBanco banco, Stream arquivo)
{
    var streamReader = new StreamReader(arquivo);
    try
    {
        var linha = streamReader.ReadLine();
        var textPosReader = new TextPosReader();
        while (!string.IsNullOrEmpty(linha))
        {
            var linhaCbr643 = textPosReader.Read(linha);
            OnLinhaLida(linhaCbr643);
            linha = streamReader.ReadLine();
        }
    }
    finally
    {
        streamReader.Dispose();
    }
}

Explicação da mudança

O método Dispose() é chamado no bloco finally para garantir que o StreamReader seja fechado e seus recursos sejam liberados, independentemente de ocorrerem exceções durante a leitura do arquivo.

Caso necessário, estou à disposição para implementar e subir o PR com a correção proposta. Basta me informar e eu ficarei feliz em contribuir com a implementação da solução.

@carloscds
Copy link
Contributor

@renansj Pode enviar o PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants