Cente Compact FileSystem
・fopen関数修正
16BitCPUを使用してFS_SEEK_BFマクロを有効にした場合に、クラスタ個数を格納する変数がint型だとオーバーフローする可能性があるため、unsigned long型に変更しました。
・ct_ini_disk_sect関数修正
16BitCPUを使用する場合に、ct_ini_disk_sectで使用する変数sectSizeがint型だとオーバーフローする可能性があるため、unsigned long型に変更しました。
・fs_num_chk関数修正
16BitCPUを使用する場合に、変数sectSizeがint型だとオーバーフローする可能性があるため、unsigned long型に変更しました。
・ct_ini_disk_sect、ct_mount_disk変更
アロケーションユニットサイズが最大65536バイトのメディアまでマウントする様に変更しました。
・fs_original.c、fs_system.h修正
16BitCPUでクラスタサイズが64KByte以上のデバイスを使用した時に、コンパイラによってshort型の変数の演算を行い、演算結果を long型に代入する時に、演算結果が17Bit以上になった場合16Bitのみ代入し桁落ちしてしまう不具合を修正しました。
・fwrite、fread関数修正
-クラスタサイズが64KByte以上のデバイスを使用した時に、入出力データバッファ内オフセットをunsigned short型にキャストしている箇所があり、データ書き込み・読み込み時に、本来参照すべき入出力データバッファ内オフセットを参照できずにいた不具合を 修正しました。
-ST_FILE構造体のsectnoがクラスタ内の先頭セクタか終端セクタかでAPIが参照バッファ内のオフセット位置を間違えていた箇所を修正しました。
・fs_find_dir_entry、fs_find_dir_entry_root関数修正
.(ドット)で始まり、ドットを含む4文字以下全て大文字のファイルディレクトリ名の時にremoveできない不具合の修正しました。
・get_dev1関数修正
アロケーションユニットサイズが64Kbyteの時にscが負の値になる不具合を修正しました。
・fs_memory.c、fs_lock.cソース修正
OSのシステムコール発行時にIDのチェックを行い、不正IDの時はエラーを返しシステムコールを実行しない様に修正しました。
・ディレクトリキャッシュ機能追加
ディレクトリキャッシュ機能を追加しました。
・fwrite関数修正
ディスクフルまでの書込みを行なった時に、ファイルポインタの指すST_FILE構造体のsectnoに誤ったセクタ番号を格納してしまい、その後ディスクフルにも関わらず誤った場所にデータを書込めてしまう不具合を修正しました(FATを破壊してしまう)。
・fs_find_dir_entry関数修正
サブディレクトリ上のロングファイル名のショートエントリがセクタの先頭にあった場合、存在するはずのファイル検索に失敗する不具合を修正しました。
・fputc、fputs関数修正
1クラスタ確保前にモードチェックを行っていない不具合を修正しました。
・fopen関数修正
"a"モードでファイルを新規作成できなかった場合に、エラー処理を行っていない不具合を修正しました。
・unmount_disk関数修正
ディレクトリをオープンしたままストレージデバイスを抜くと、オープンディレクトリ用資源の枯渇を招いてしまう不具合を修正しました。
・fs_get_c_dent間数修正
FAT32フォーマットされたストレージデバイスを使用した時に、16BitCPU使用時に開始クラスタ番号上位を取得できない不具合を修正しました。