------------------------------------------------------------ [BUG/PRB.] VFP 9.0 FIX - DO FORM COMMAND January 2024 ------------------------------------------------------------ CCB 1. BUG: In vfp9, if we use the DO FORM command in the ON SELECTION BAR statement, sometimes VFP will crash. The bug only occurs in vfp9 sp2, it does not occur in vfp6, vfp7, vfp8 and vfp9 sp1. The bug occurs in the following commands: ON BAR command ON ERROR command ON ESCAPE command ON EXIT BAR command ON EXIT MENU command ON EXIT PAD command ON EXIT POPUP command ON KEY command ON KEY LABEL command ON PAD command ON PAGE command ON READERROR command ON SELECTION BAR command ON SELECTION MENU command ON SELECTION PAD command ON SELECTION POPUP command ON SHUTDOWN command 2. CAUSE: There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Label49c145 :: mov esi , dword ptr [ Data93e6f0 ] ;0x0049c145 : 8b35f0e69300 test esi , esi ;0x0049c14b : 85f6 je Label49c17a ;0x0049c14d : 742b ; ; ------------------------------------------------- ; VFP 9.0 FIX - DO FORM COMMAND ; November 2017 ; ------------------------------------------------- ; CCB ; ; If we use the DO FORM command in the ON SELECTION BAR statement, sometimes VFP will crash. ; ; 2017/11/30, by ccb ; cmp dword ptr vfpa_sys9112_data,00h je Label49c14f mov eax , dword ptr [esi] cmp dword ptr [eax] , 00h jge Label49c158 cmp dword ptr [ eax + 12 ] , 00h je Label49c17a Label49c14f :: call Fun54977a ;0x0049c14f : e826d60a00 test eax , eax ;0x0049c154 : 85c0 je Label49c17a ;0x0049c156 : 7422 Label49c158 :: mov eax , dword ptr [ Data93e6f0 ] ;0x0049c158 : a1f0e69300 mov ecx , dword ptr [eax] ;0x0049c15d : 8b08 mov ecx , dword ptr [ecx] ;0x0049c15f : 8b09 lea eax , dword ptr [ ebp - 24 ] ;0x0049c161 : 8d45e8 call Fun41975b ;0x0049c164 : e8f2d5f7ff push edi ;0x0049c169 : 57 lea edi , dword ptr [ ebp - 24 ] ;0x0049c16a : 8d7de8 call Fun433e2f ;0x0049c16d : e8bd7cf9ff test eax , eax ;0x0049c172 : 85c0 jne Label5b7616 ;0x0049c174 : 0f859cb41100 Label49c17a :: mov eax , dword ptr [ ebp - 32 ] ;0x0049c17a : 8b45e0 test eax , eax ;0x0049c17d : 85c0 mov edi , dword ptr [ ebp + 0108h ] ;0x0049c17f : 8bbd08010000 mov ebx , dword ptr [ ebp + 0110h ] ;0x0049c185 : 8b9d10010000 je Label5098c3 ;0x0049c18b : 0f8432d70600 mov edx , ebx ;0x0049c191 : 8bd3 mov byte ptr [ ebp - 28 ] , 050h ;0x0049c193 : c645e450 mov dword ptr [edx] , offset Data93d5c0 ;0x0049c197 : c702c0d59300 jmp Label5098c3 ;0x0049c19d : e921d70600 4. APPLIES TO: 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_vfp9fix230.asp 2, foxite.com: https://www.foxite.com/archives/another-vfp9-sp2-bug-0000150951.htm 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |