Correção de bug no código base do projeto

15 dezembro 2021, 07:08 João Pedro Faria Mendonça Barreto

Foi detetado um bug na versão que foi originalmente publicada do código base do projeto (TecnicoFS v1).

Mais precisamente, o bloco “if” das linhas 162-165 do operations.c deve ser removido:

if (file->of_offset + to_read >= BLOCK_SIZE) {...}
Todos os grupos de projeto devem corrigir este bug (removendo o bloco "if" indicado acima).
Também publicámos uma v2 do código base (secção "Laboratórios > Projeto") que já incorpora esta correção.

Outras modificações (opcionais):
Além do bug reportado acima, a v2 também incorpora duas outras modificações menores que não têm qualquer impacto na correção do programa e, por isso, são meramente opcionais:

1. O ciclo de “insert_delay” da função inode_create (linha 93 do state.c) deve ser retificado para passar a ter um número de iterações mais realista.
O original (v1) era 
if ((inumber * (int) sizeof(allocation_state_t)) == 0)
Este deve ser modificado para
if ((inumber * (int) sizeof(allocation_state_t) % BLOCK_SIZE) == 0)

2. O comentário obsoleto nas linhas 159-160 do state.c deve ser removido.


O nosso muito obrigado aos alunos que nos ajudaram a detetar o bug atempadamente e, dessa forma, preveniram que o mesmo tivesse impacto nos trabalhos em curso.