skip menu and go to main content

body start

MoniWiki

  editlog 읽는 부분의 버그 2 ]

06.03.15-00:12:53

308636

Submitted by 채 영구

 

View207

 

release 1.1.1 의 editlog 파일을 읽어들이는 부분에 버그가 있습니다.

이 버그는 editlog 파일의 크기가 작을 때만 발생합니다.

버그 수정할 부분은 다음과 같습니다.

wiki.php 에서...

930c930
< $lines=explode("\n",$ll);
---
> $lines=array_reverse(explode("\n",$ll));

editlog 파일의 크기가 1024 미만일 때
RecentChanges 의 출력순서가 거꾸로 되는 버그가 나타납니다.

editlog 파일은 시간순으로 정렬되어 있고,
moniwiki 에서 출력할 때는 역순으로 해야 하기 때문에
array_reverse() 같은 것으로 뒤집어 줘야 합니다.

937,938c937,941
< $a-=1024;
< if (-$a > $fz) { $a=-$fz;}
---
> $readlen=$fz+$a;
> if ($readlen <= 0) break;
> else if ($readlen > 1024) $readlen=1024;
>
> $a-=$readlen;
940c943,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 만큼 읽는 것이 아니다
아직 읽지않은 남은 부분만 읽도록 해야 합니다.

Comments on this artfact

2 Comments

release 1.1.1 의 editlog 파일을 읽어들이는 부분에 버그가 있습니다.

이 버그는 editlog 파일의 크기가 작을 때만 발생합니다.

버그 수정할 부분은 다음과 같습니다.

wiki.php 에서...

930c930
< $lines=explode("\n",$ll);
---
> $lines=array_reverse(explode("\n",$ll));

editlog 파일의 크기가 1024 미만일 때
RecentChanges 의 출력순서가 거꾸로 되는 버그가 나타납니다.

editlog 파일은 시간순으로 정렬되어 있고,
moniwiki 에서 출력할 때는 역순으로 해야 하기 때문에
array_reverse() 같은 것으로 뒤집어 줘야 합니다.

937,938c937,941
< $a-=1024;
< if (-$a > $fz) { $a=-$fz;}
---
> $readlen=$fz+$a;
> if ($readlen <= 0) break;
> else if ($readlen > 1024) $readlen=1024;
>
> $a-=$readlen;
940c943,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 만큼 읽는 것이 아니다
아직 읽지않은 남은 부분만 읽도록 해야 합니다.

06.03.15-00:12:53

eseo

같은 버그로 고민하고 있었는데, 말씀대로 수정하니 원하는대로 동작하네요.
고맙습니다.

06.03.16-10:19:41