----------------------------------------------------------------------------------------- [BUG/PRB.] VFP 9.0 FIX - THE NUMBER OF TIMES TO TRY AGAIN AFTER PACK DBF FAILED January 2024 ----------------------------------------------------------------------------------------- CCB 1. BUG: In vfp9 (and vfp6, vfp7, vfp8), somtimes the pack dbf function runs failed on Windows Vista or later. 2. CAUSE: There are some compatible problems when vfp calls the pack dbf function for the Windows Defender program or the antivirus programs. Now if vfp calls the pack dbf function failed, it will call the pack dbf function many times again. There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Label441dfa :: mov eax , dword ptr [edi] ;0x00441dfa : 8b07 mov eax , dword ptr [eax] ;0x00441dfc : 8b00 push esi ;0x00441dfe : 56 call Fun413b37 ;0x00441dff : e8331dfdff mov eax , dword ptr [edi] ;0x00441e04 : 8b07 mov ecx , dword ptr [ ebp - 52 ] ;0x00441e06 : 8b4dcc push dword ptr [ ebp - 60 ] ;0x00441e09 : ff75c4 mov esi , edi ;0x00441e0c : 8bf7 mov dword ptr [ eax + 8 ] , ecx ;0x00441e0e : 894808 call Fun52e00c ;0x00441e11 : e8f6c10e00 mov ecx , edi ;0x00441e16 : 8bcf call Fun43f9b2 ;0x00441e18 : e895dbffff push ebx ;0x00441e1d : 53 call Fun441949 ;0x00441e1e : e826fbffff mov esi , eax ;0x00441e23 : 8bf0 xor ecx , ecx ;0x00441e25 : 33c9 cmp esi , ecx ;0x00441e27 : 3bf1 jne Label5c42b0 ;0x00441e29 : 0f8581241800 Label441e2f :: mov dword ptr [ ebx + 76 ] , ecx ;0x00441e2f : 894b4c mov dword ptr [ ebx + 80 ] , ecx ;0x00441e32 : 894b50 mov ecx , ebx ;0x00441e35 : 8bcb call Fun43f9b2 ;0x00441e37 : e876dbffff ; ; ------------------------------------------------------------------------------ ; VFP 9.0 FIX - THE NUMBER OF TIMES TO TRY AGAIN AFTER PACK DBF FAILED ; December 2020 ; ------------------------------------------------------------------------------ ; CCB ; ; The number of times to try again after pack dbf failed. ; ; 2020/12/26, by ccb ; ; lea edi , dword ptr [ ebp + 0358h ] ;0x00441e3c : 8dbd58030000 ; call Fun546c56 ;0x00441e42 : e80f4e1000 ; lea eax , dword ptr [ ebp + 0250h ] ;0x00441e47 : 8d8550020000 ; call Fun488609 ;0x00441e4d : e8b7670400 mov dword ptr vfpa_packdbf_packdbf_cnt,00h Label441e3d :: lea edi , dword ptr [ ebp + 0358h ] call Fun546c56 test eax , eax je Label441e47 mov ecx,dword ptr vfpa_sys9048_data inc dword ptr vfpa_packdbf_packdbf_cnt cmp dword ptr vfpa_packdbf_packdbf_cnt,ecx ja Label441e47 push dword ptr vfpa_sys9074_data call Sleep jmp Label441e3d Label441e47 :: mov dword ptr vfpa_packdbf_packdbf_cnt,00h Label441e48 :: lea eax , dword ptr [ ebp + 0250h ] call Fun488609 test eax , eax je Label441e52 mov ecx,dword ptr vfpa_sys9048_data inc dword ptr vfpa_packdbf_packdbf_cnt cmp dword ptr vfpa_packdbf_packdbf_cnt,ecx ja Label441e52 push dword ptr vfpa_sys9074_data call Sleep jmp Label441e48 Label441e52 :: mov ebx , dword ptr [ ebp - 48 ] ;0x00441e52 : 8b5dd0 mov edi , eax ;0x00441e55 : 8bf8 call Fun41de4e ;0x00441e57 : e8f2bffdff mov ebx , eax ;0x00441e5c : 8bd8 mov eax , dword ptr [ ebp - 40 ] ;0x00441e5e : 8b45d8 pushd 080004h ;0x00441e61 : 6804000800 push dword ptr [ ebp - 8 ] ;0x00441e66 : ff75f8 lea edx , dword ptr [ ebp + 0128h ] ;0x00441e69 : 8d9528010000 mov ecx , ebx ;0x00441e6f : 8bcb mov dword ptr [ ebp + 0470h ] , ebx ;0x00441e71 : 899d70040000 mov dword ptr [ ebx + 68 ] , eax ;0x00441e77 : 894344 call Fun53170a ;0x00441e7a : e88bf80e00 test edi , edi ;0x00441e7f : 85ff jne Label5c42c0 ;0x00441e81 : 0f8539241800 push dword ptr [ ebp + 0 ] ;0x00441e87 : ff7500 mov edi , dword ptr [ebx] ;0x00441e8a : 8b3b push esi ;0x00441e8c : 56 call Fun441efb ;0x00441e8d : e869000000 mov dword ptr [ edi + 104 ] , eax ;0x00441e92 : 894768 mov eax , dword ptr [ebx] ;0x00441e95 : 8b03 lea ecx , dword ptr [ ebp + 24 ] ;0x00441e97 : 8d4d18 push ecx ;0x00441e9a : 51 mov ecx , dword ptr [ eax + 104 ] ;0x00441e9b : 8b4868 call Fun441db6 ;0x00441e9e : e813ffffff test eax , eax ;0x00441ea3 : 85c0 mov dword ptr [ ebx + 52 ] , eax ;0x00441ea5 : 894334 jne Label5c42c8 ;0x00441ea8 : 0f851a241800 Label441eae :: pushd 00h ;0x00441eae : 6a00 push ebx ;0x00441eb0 : 53 call Fun4d16fb ;0x00441eb1 : e845f80800 mov eax , dword ptr [ ebp - 56 ] ;0x00441eb6 : 8b45c8 mov ecx , dword ptr [ ebp - 32 ] ;0x00441eb9 : 8b4de0 push dword ptr [ ebp - 36 ] ;0x00441ebc : ff75dc mov dword ptr [ ebx + 76 ] , eax ;0x00441ebf : 89434c mov eax , dword ptr [ ebp - 28 ] ;0x00441ec2 : 8b45e4 mov dword ptr [ ebx + 80 ] , eax ;0x00441ec5 : 894350 mov eax , dword ptr [ebx] ;0x00441ec8 : 8b03 shl ecx , 011h ;0x00441eca : c1e111 xor ecx , dword ptr [ eax + 32 ] ;0x00441ecd : 334820 mov esi , ebx ;0x00441ed0 : 8bf3 and ecx , 020000h ;0x00441ed2 : 81e100000200 xor dword ptr [ eax + 32 ] , ecx ;0x00441ed8 : 314820 mov eax , dword ptr [ ebp - 12 ] ;0x00441edb : 8b45f4 call Fun41dd89 ;0x00441ede : e8a6befdff mov eax , dword ptr [ebx] ;0x00441ee3 : 8b03 mov ecx , dword ptr [ ebp - 16 ] ;0x00441ee5 : 8b4df0 mov dword ptr [ eax + 0C0h ] , ecx ;0x00441ee8 : 8988c0000000 mov eax , dword ptr [ebx] ;0x00441eee : 8b03 mov ecx , dword ptr [ ebp - 24 ] ;0x00441ef0 : 8b4de8 mov dword ptr [ eax + 80 ] , ecx ;0x00441ef3 : 894850 jmp Label4ec48b ;0x00441ef6 : e990a50a00 4. APPLIES TO: VFP 6.0.8167.0 VFP 6.0.8961.0 (SP5) 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. IMPORTANT NOTE: The following commands and functions have been fixed for the pack dbf function: PACK command COMPILE command MODIFY CLASS command MODIFY PROJECT command: check project BUILD command: check project SOURCE CONTROL: check project RESOURCE FILE: check resource file ; for the pack dbf function, please refer to the following pseudo code: ; ; * temp.dbf is a temporary file name, for example, 000001aa000a.tmp. ; ; use test.dbf ; copy to temp.dbf for !dele() ; use ; ; delete file test.dbf && if delete file failed, it will try many (SYS(9048)) times again. ; ; rename temp.dbf to test.dbf && if rename file failed, it will try many (SYS(9048)) times again. ; ; * there is no any changes for the memo file test.fpt. 5. REFERENCE WEBSITES: 1, baiyujia.com: http://www.baiyujia.com http://www.baiyujia.com/vfpdocuments/f_vfp9fix147.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix65.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix66.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix67.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix68.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix69.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix70.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix71.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix72.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix73.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix74.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix84.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix85.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix107.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix108.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix109.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix110.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix143.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix144.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix145.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix146.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix149.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix150.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix203.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix261.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix262.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix269.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix270.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix278.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix279.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix348.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix349.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix350.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix351.asp 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |