forked from KolibriOS/kolibrios
fix crash opendial if corrypt filter
git-svn-id: svn://kolibrios.org@7048 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
bd2c40668c
commit
478054d8c2
@ -95,7 +95,7 @@ od_y_start equ [ebp+54] ; Window Y position
|
|||||||
.init:
|
.init:
|
||||||
pusha
|
pusha
|
||||||
mov ebp,dword [esp+36]
|
mov ebp,dword [esp+36]
|
||||||
mcall 9,od_procinfo,-1
|
mcall SF_THREAD_INFO,od_procinfo,-1
|
||||||
mov ebx,[ebx+30]
|
mov ebx,[ebx+30]
|
||||||
mov edi,od_com_area_name
|
mov edi,od_com_area_name
|
||||||
add edi,7
|
add edi,7
|
||||||
@ -116,7 +116,7 @@ od_y_start equ [ebp+54] ; Window Y position
|
|||||||
jnz @r
|
jnz @r
|
||||||
cld
|
cld
|
||||||
|
|
||||||
mcall 68,22,od_com_area_name,8192,0x09
|
mcall SF_SYS_MISC,SSF_MEM_OPEN,od_com_area_name,8192,0x09
|
||||||
mov od_com_area,eax
|
mov od_com_area,eax
|
||||||
|
|
||||||
mov esi,od_openfile_pach
|
mov esi,od_openfile_pach
|
||||||
@ -139,7 +139,7 @@ OpenDialog_exit
|
|||||||
mov [eax],word 2 ; folder for open
|
mov [eax],word 2 ; folder for open
|
||||||
|
|
||||||
pusha
|
pusha
|
||||||
mcall 9,od_procinfo,-1
|
mcall SF_THREAD_INFO,od_procinfo,-1
|
||||||
|
|
||||||
mov eax,[ebx+42] ;main window x size
|
mov eax,[ebx+42] ;main window x size
|
||||||
shr eax,1
|
shr eax,1
|
||||||
@ -216,7 +216,7 @@ OpenDialog_exit
|
|||||||
mov [ebx+8],eax
|
mov [ebx+8],eax
|
||||||
mov eax,od_start_path
|
mov eax,od_start_path
|
||||||
mov [ebx+21],eax
|
mov [ebx+21],eax
|
||||||
mcall 70
|
mcall SF_FILE
|
||||||
|
|
||||||
shr eax,31
|
shr eax,31
|
||||||
test eax,eax
|
test eax,eax
|
||||||
@ -229,9 +229,9 @@ OpenDialog_exit
|
|||||||
; is not cleared without call of func 0.
|
; is not cleared without call of func 0.
|
||||||
; In this case is suitable only func 5 and 11,
|
; In this case is suitable only func 5 and 11,
|
||||||
; or 68.1 and 11 for better response.
|
; or 68.1 and 11 for better response.
|
||||||
mcall 68,1
|
mcall SF_SYS_MISC,SSF_SWITCH_TASK
|
||||||
mcall 5,10 ; because OS uses a new scheduler for kernel(SVN r.3534)
|
mcall SF_SLEEP,10 ; because OS uses a new scheduler for kernel(SVN r.3534)
|
||||||
mcall 11
|
mcall SF_CHECK_EVENT
|
||||||
cmp eax,1
|
cmp eax,1
|
||||||
je .draw
|
je .draw
|
||||||
cmp eax,2
|
cmp eax,2
|
||||||
@ -240,10 +240,10 @@ OpenDialog_exit
|
|||||||
je .button
|
je .button
|
||||||
jmp .no_draw
|
jmp .no_draw
|
||||||
.key:
|
.key:
|
||||||
mcall 2
|
mcall SF_GET_KEY
|
||||||
jmp .no_draw
|
jmp .no_draw
|
||||||
.button:
|
.button:
|
||||||
mcall 17
|
mcall SF_GET_BUTTON
|
||||||
jmp .no_draw
|
jmp .no_draw
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.draw:
|
.draw:
|
||||||
@ -256,7 +256,7 @@ OpenDialog_exit
|
|||||||
jz @f
|
jz @f
|
||||||
|
|
||||||
mov ecx,eax ; WINDOW SLOT
|
mov ecx,eax ; WINDOW SLOT
|
||||||
mcall 18,7
|
mcall SF_SYSTEM,SSF_GET_ACTIVE_WINDOW
|
||||||
cmp eax,ecx ; compare ACTIVE and WINDOW SLOT
|
cmp eax,ecx ; compare ACTIVE and WINDOW SLOT
|
||||||
jne @f
|
jne @f
|
||||||
|
|
||||||
@ -264,7 +264,7 @@ OpenDialog_exit
|
|||||||
mov ecx,[eax+12]
|
mov ecx,[eax+12]
|
||||||
test ecx,ecx
|
test ecx,ecx
|
||||||
jz @f
|
jz @f
|
||||||
mcall 18,3
|
mcall SF_SYSTEM,SSF_FOCUS_WINDOW
|
||||||
@@:
|
@@:
|
||||||
popa
|
popa
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
@ -315,14 +315,14 @@ OpenDialog_exit
|
|||||||
call .prepare_PID
|
call .prepare_PID
|
||||||
jz @f
|
jz @f
|
||||||
mov ecx,eax ; WINDOW SLOT
|
mov ecx,eax ; WINDOW SLOT
|
||||||
mcall 18,3
|
mcall SF_SYSTEM,SSF_FOCUS_WINDOW
|
||||||
@@:
|
@@:
|
||||||
OpenDialog_exit
|
OpenDialog_exit
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.prepare_PID:
|
.prepare_PID:
|
||||||
mcall 9,od_procinfo,-1
|
mcall SF_THREAD_INFO,od_procinfo,-1
|
||||||
mov ecx,[ebx+30] ; PID
|
mov ecx,[ebx+30] ; PID
|
||||||
mcall 18,21
|
mcall SF_SYSTEM,SSF_GET_THREAD_SLOT
|
||||||
test eax,eax
|
test eax,eax
|
||||||
ret
|
ret
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
@ -340,6 +340,13 @@ OpenDialog_exit
|
|||||||
mov edi,od_com_area
|
mov edi,od_com_area
|
||||||
mov [edi+4096],dword 0
|
mov [edi+4096],dword 0
|
||||||
ret
|
ret
|
||||||
|
@@:
|
||||||
|
cmp ecx,4091 ;max filter len = 8192-4100-1
|
||||||
|
jle @f
|
||||||
|
;todo ... error message: corrypt filter
|
||||||
|
mov edi,od_com_area
|
||||||
|
mov [edi+4096],dword 0
|
||||||
|
ret
|
||||||
@@:
|
@@:
|
||||||
inc ecx
|
inc ecx
|
||||||
cld
|
cld
|
||||||
|
@ -12,6 +12,7 @@ public EXPORTS
|
|||||||
section '.flat' code readable align 16
|
section '.flat' code readable align 16
|
||||||
include '../../../../macros.inc'
|
include '../../../../macros.inc'
|
||||||
;include '../../../../proc32.inc'
|
;include '../../../../proc32.inc'
|
||||||
|
include '../../../../KOSfuncs.inc'
|
||||||
include 'opendial.mac'
|
include 'opendial.mac'
|
||||||
include 'colrdial.mac'
|
include 'colrdial.mac'
|
||||||
;include 'debug.inc'
|
;include 'debug.inc'
|
||||||
|
Loading…
Reference in New Issue
Block a user