그렇다. 가끔은 내 실수가 아닐 때도 있다.

pspsdk에는 File Io 관련 함수들이 다수 존재한다.

아마도 소니 자체 펌웨어의 시스템 콜과 연결된 것이라 예상되는데,

그들도 완벽하진 않을 터... 상당수 버그가 존재한다.

몇개의 버그는 전에 내가 sceIoDread란 제목으로 포스팅 한 적이 있으니 참고하길...

이번엔 sceIoOpen과 관련된 버그이다. 어떤 함수인지 설명은 생략하겠다.

sceIoOpen으로 열 때, 그 파일이 롱네임 엔트리를 포함하고 있으면(또는 멀티바이트 문자를 포함하고 있다면), 버그가 일어난다.

물론 처음 몇번은 버그가 일어나지 않을 수도 있다.

그러나 메모리 누수인지는 잘 모르겠으나, 파일명 이름이 길면 길수록 에러가 더 빨리 일어난다.

한 글자 한글 이름으로 파일을 만들고 테스트 해보았을 때는 약 30여회 정도 열고 닫을 수 있었다.

그 다음에 실행하면 sceIoOpen을 못한다. 비단 그 파일 뿐만이 아니라, 다른 파일도 열 수 없다는게 문제... (즉 한번 에러가 발생하면, 다른 모든 파일을 열 수가 없어진다.)

그런데 파일명의 길이가 길어질수록 사용할 수 있는 횟수가 점점 짧아진다.

처음엔 내 자체 코드의 문제인줄 알고 디버그를 해보았으나, 결국엔 sceIoOpen의 문제점으로 밝혀졌다.

이거, 또 직접 FAT에 접근해서 조작하는 함수를 만들어 놔야겠군...

(작업이 완료되면, FAT 관련 소스를 올리도록 하겠다.)

정정: sceIoOpen은 여러개를 사용해 놓으면 버그가 일어 나는 것 같다.
프로그램 시작점에서 FAT_Init()를 하고, 프로그램 종료점에서 FAT_End()를 하는데
여기서 각각 sceIoOpen으로 열어 두었던 파일핸들을 sceIoClose로 닫는다.
그런데, 그 사이에 sceIoOpen을 여러번 쓰니깐 이러한 버그가 일어 나는 것 같다.
필요할 때만 열어두는 습관을 들이자. (덕분에 버그는 해결...OK)
Posted by 키네낵
TAG