forked from KolibriOS/kolibrios
ext2: fix bug in file read
git-svn-id: svn://kolibrios.org@3313 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e3364a8185
commit
33eee384bf
@ -895,15 +895,13 @@ ext2_HdRead:
|
|||||||
jae .size_great_great
|
jae .size_great_great
|
||||||
|
|
||||||
.size_great_less:
|
.size_great_less:
|
||||||
push 1
|
push 1 ;читаем по границе размера
|
||||||
; or [EXT2_files_in_folder], 1 ;читаем по границе размера
|
|
||||||
mov ecx, [ebp + EXT2_INODE_STRUC.i_size]
|
mov ecx, [ebp + EXT2_INODE_STRUC.i_size]
|
||||||
sub ecx, [esi] ;(размер - старт) = сколько читать
|
sub ecx, [esi] ;(размер - старт) = сколько читать
|
||||||
jmp @F
|
jmp @F
|
||||||
|
|
||||||
.size_great_great:
|
.size_great_great:
|
||||||
push 0
|
push 0 ;читаем столько сколько запросили
|
||||||
; and [EXT2_files_in_folder], 0 ;читаем столько сколько запросили
|
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
;здесь мы точно знаем сколько байт читать - ecx
|
;здесь мы точно знаем сколько байт читать - ecx
|
||||||
@ -919,7 +917,7 @@ ext2_HdRead:
|
|||||||
mov eax, [esi]
|
mov eax, [esi]
|
||||||
div [ext2_data.block_size]
|
div [ext2_data.block_size]
|
||||||
|
|
||||||
push eax ;номер блока запоминаем
|
push eax ;счетчик блоков ложим в стек
|
||||||
|
|
||||||
push ecx
|
push ecx
|
||||||
mov ecx, eax
|
mov ecx, eax
|
||||||
@ -949,7 +947,7 @@ ext2_HdRead:
|
|||||||
|
|
||||||
.zero_start:
|
.zero_start:
|
||||||
mov eax, ecx
|
mov eax, ecx
|
||||||
push 0 ;счетчик блоков
|
push 0 ;счетчик блоков ложим в стек
|
||||||
;теперь в eax кол-во оставшихся байт для чтения
|
;теперь в eax кол-во оставшихся байт для чтения
|
||||||
.calc_blocks_count:
|
.calc_blocks_count:
|
||||||
mov ebx, edi ;чтение блока прям в ->ebx
|
mov ebx, edi ;чтение блока прям в ->ebx
|
||||||
@ -994,9 +992,13 @@ ext2_HdRead:
|
|||||||
mov ecx, edx
|
mov ecx, edx
|
||||||
mov esi, ebx
|
mov esi, ebx
|
||||||
rep movsb ;кусок last блока
|
rep movsb ;кусок last блока
|
||||||
|
jmp @F
|
||||||
|
|
||||||
.end_read:
|
.end_read:
|
||||||
pop ebx
|
pop ecx ;счетчик блоков, который хранился в стеке
|
||||||
pop eax
|
@@:
|
||||||
|
pop ebx ;количество считанных байт
|
||||||
|
pop eax ; 1 или 0 - достигли ли конца файла
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz @F
|
jz @F
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user