- VFS_ReadAt(Disk->fileHandle, base + (Previous>>1)*3, 3, &val);
- if( ret & 1 ) {
- val &= 0x000FFF;
- val |= ret << 12;
- }
- else {
- val &= 0xFFF000;
- val |= ret << 0;
+ if( Previous != -1 )
+ {
+ LOG("Updating cluster %x to point to %x (offset %x)", Previous, ret,
+ base + (Previous>>1)*3);
+ VFS_ReadAt(Disk->fileHandle, base + (Previous>>1)*3, 3, &val);
+ if( Previous & 1 ) {
+ val &= 0x000FFF;
+ val |= ret << 12;
+ }
+ else {
+ val &= 0xFFF000;
+ val |= ret << 0;
+ }
+ VFS_WriteAt(Disk->fileHandle, base + (Previous>>1)*3, 3, &val);