forked from KolibriOS/kolibrios
Fix for r. 1275 - to use the CLI command is not a good solution. Much better to use a mutex!
git-svn-id: svn://kolibrios.org@2486 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
3bd1f7b7ce
commit
b4268eda9f
@ -437,10 +437,25 @@ proc load_file stdcall, file_name:dword
|
|||||||
jz .cleanup
|
jz .cleanup
|
||||||
|
|
||||||
mov [file2], eax
|
mov [file2], eax
|
||||||
pushfd
|
|
||||||
cli
|
push eax
|
||||||
|
.wait_lock:
|
||||||
|
cmp [unpack_mutex], 0
|
||||||
|
je .get_lock
|
||||||
|
call change_task
|
||||||
|
jmp .wait_lock
|
||||||
|
|
||||||
|
.get_lock:
|
||||||
|
mov eax, 1
|
||||||
|
xchg eax, [unpack_mutex]
|
||||||
|
test eax, eax
|
||||||
|
jnz .wait_lock
|
||||||
|
pop eax
|
||||||
|
|
||||||
stdcall unpack, [file], eax
|
stdcall unpack, [file], eax
|
||||||
popfd
|
|
||||||
|
mov [unpack_mutex], 0
|
||||||
|
|
||||||
stdcall kernel_free, [file]
|
stdcall kernel_free, [file]
|
||||||
mov eax, [file2]
|
mov eax, [file2]
|
||||||
mov ebx, [file_size]
|
mov ebx, [file_size]
|
||||||
@ -470,6 +485,11 @@ proc load_file stdcall, file_name:dword
|
|||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
iglobal
|
||||||
|
align 4
|
||||||
|
unpack_mutex dd 0
|
||||||
|
endg
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
proc get_proc_ex stdcall, proc_name:dword, imports:dword
|
proc get_proc_ex stdcall, proc_name:dword, imports:dword
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user