release 1.1.1 의 editlog 파일을 읽어들이는 부분에 버그가 있습니다.
이 버그는 editlog 파일의 크기가 작을 때만 발생합니다.
버그 수정할 부분은 다음과 같습니다.
wiki.php 에서...
930
c930
< $lines=explode("\n",$ll);
---
> $lines=array_reverse(explode("\n",$ll));
editlog 파일의 크기가 1024 미만일 때
RecentChanges 의 출력순서가 거꾸로 되는 버그가 나타납니다.
editlog 파일은 시간순으로 정렬되어 있고,
moniwiki 에서 출력할 때는 역순으로 해야 하기 때문에
array_reverse() 같은 것으로 뒤집어 줘야 합니다.
937,938
c937,941
< $a-=1024;
< if (-$a > $fz) { $a=-$fz;}
---
> $readlen=$fz+$a;
> if ($readlen <= 0) break;
> else if ($readlen > 1024) $readlen=1024;
>
> $a-=$readlen;
940
c943,947
< $l=fread($fp,1024);
---
> $l=fread($fp,$readlen);
>
> // hack, cannot read first line because of beyond while condition
> if (-$a == $fz) $l="\n".$l;
>
editlog 파일의 크기가 1024 보다 조금만 클 때
RecentChanges 의 내용이 일부 출력되지 않는 버그가 발생합니다.
editlog 파일의 뒷부분부터 읽어오도록 하고 있는데
파일의 처음부분에 도달하면 fread() 로 1024 만큼 읽는 것이 아니다
아직 읽지않은 남은 부분만 읽도록 해야 합니다.