マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

エラー

ファイル読み込み時にエラーが発生。sizeが512以下になったときに、エラーがでるっぽい。1回の読み込みで512バイト読み込み、1250バイトのファイルを2回まで読み込んだら、1024バイト分読み込んでくれたが、残りの226バイトを読み込もうとするとエラーになる。buffにはfile->size + 1サイズの大きさを持たせてあるから、十分読み込めるはずだが…それに必要なサイズのメモリを確保してなくても、カーネルだとエラーにならずに読み込めてしまったりするもんだ。何か他にエラーの原因があるのだろうか?以下ソース

int FATFileReader::read(char* buff){
    int size = file->getSize();
    int cluster = 0x1F + file->getCluster();
    char data[512];
    int readIndex = 0;

    while(size > 0){
        fdc->read(cluster, data);

        int readSize = size;
        if(readSize > 512)
            readSize = 512;

        for(int i = 0; i < readSize; i++){
            buff[readIndex] = data[i];
            readIndex++;
        }

        size -= 512;
        cluster++;
    }

    return readIndex;
}