Árvore de páginas

String size underflow on fread

Esta ocorrência de erro é apresentada quando da utilização da função FRead() para leitura de um arquivo texto e/ou binário, quando informado erroneamente um tamanho de buffer negativo para leitura.

Para informações de como utilizar a função FRead(), consulte a documentação FRead().

 

Causas mais comum

O programa AdvPL está errado, possui um erro de lógica ou ausência de tratamento adequado para uso da função FRead().

A causa mais comum é uma rotina dinâmica codificada para ler um arquivo em um operação única, em que o arquivo é aberto, é obtido o seu tamanho total com a função FSeek() e depois o conteúdo total do arquivo é lido. Porém, não foi verificado se a abertura do arquivo foi bem sucessida e neste caso, a função FOpen() retorna o handle negativo inválido, que quando usado na função FSeek() faz a mesma retornar também -1, que não é um tamanho válido, e quando este retorno negativo é usado como argumento para o tamanho de buffer a ser lido pela função FRead(), a mesma aborta a execução da rotina com a ocorrência de erro acima.

 

Correção

o código-fonte AdvPL que está fazendo uso da função FRead(), deve ser revisado para não permitir uma situação em que seja utilizado um tamanho de buffer de leitura inválido.

  • Sem rótulos