------------------------------------------------------------
[BUG/PRB.] VFP 9.0 FIX - SYS(2901) FUNCTION
January 2026
------------------------------------------------------------
CCB
1. BUG:
In vfp9 (and vfp8, vfp7), sometimes vfp will crash when calling the SYS(2901) function.
There is a test program:
*PROC testsys2901function
FOR n1=0 TO 0xffff
?TRANSFORM(n1,"@0")+" "+SYS(2901,n1)
=INKEY(0.01)
ENDFOR
RETURN
* END OF PROC TESTSYS2901FUNCTION.
Sometimes vfp will crash.
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Label60a3cb ::
call Fun7989a9 ;0x0060a3cb : e8d9e51800
test eax , eax ;0x0060a3d0 : 85c0
je Label52a11a ;0x0060a3d2 : 0f8442fdf1ff
cmp dword ptr [ ebp + 12 ] , 02h ;0x0060a3d8 : 837d0c02
jne Label52a11a ;0x0060a3dc : 0f8538fdf1ff
lea edi , dword ptr [ ebx + 44 ] ;0x0060a3e2 : 8d7b2c
call Fun529a6e ;0x0060a3e5 : e884f6f1ff
wait ;0x0060a3ea : 9b
mov dword ptr [ ebp - 4 ] , 01h ;0x0060a3eb : c745fc01000000
mov ecx , dword ptr [ ebx + 56 ] ;0x0060a3f2 : 8b4b38
call Fun42c583 ;0x0060a3f5 : e88921e2ff
lea ecx , dword ptr [ ebp + 0FFFFFDE0h ] ;0x0060a3fa : 8d8de0fdffff
;
; -------------------------------------------------
; VFP 9.0 FIX - SYS(2901) FUNCTION
; May 2021
; -------------------------------------------------
; CCB
;
; Sometimes vfp will crash when calling the SYS(2901) function.
;
; 2021/5/28, by ccb
;
; push ecx ;0x0060a400 : 51
; call Fun425524 ;0x0060a401 : e81eb1e1ff
; pop ecx ;0x0060a406 : 59
push 0FFh
push eax
push ecx
call dword ptr [ Data9392b8 ]
add esp , 0Ch
mov byte ptr [ ebp + 0FFFFFEDFh ] , 00h
wait ;0x0060a407 : 9b
or dword ptr [ ebp - 4 ] , 0FFFFFFFFh ;0x0060a408 : 834dfcff
jmp Label52a11a ;0x0060a40c : e909fdf1ff
4. APPLIES TO:
VFP 7.0.0.9262
VFP 7.0.0.9465 (SP1)
VFP 8.0.0.2521
VFP 8.0.0.3117 (SP1)
VFP 9.0.0.2412
VFP 9.0.0.3504 (SP1)
VFP 9.0.0.4611 (SP2)
VFP 9.0.0.5015 (SP2)
VFP 9.0.0.5411 (SP2)
VFP 9.0.0.5721 (SP2)
VFP 9.0.0.5815 (SP2)
VFP 9.0.0.6303 (SP2)
VFP 9.0.0.6602 (SP2)
VFP 9.0.0.7423 (SP2)
The bug has been fixed in VFP Advanced.
5. REFERENCE WEBSITES:
1, baiyujia.com:
http://www.baiyujia.com
http://www.baiyujia.com/vfpdocuments/f_vfpsysfunctions.asp
2, sweetpotatosoftware.com:
https://www.sweetpotatosoftware.com/blog/index.php/2005/08/15/undocument-sys-functions/
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|