------------------------------------------------------------------------------------------
                      [BUG/PRB.] VFP 9.0 FIX - THE NUMBER OF TIMES TO TRY AGAIN AFTER MOVE FILE FAILED
                                 January 2021
                 ------------------------------------------------------------------------------------------
                                     CCB



1. BUG:

     In vfp9 (and vfp6, vfp7, vfp8), somtimes the move file (or RENAME) command runs failed on Windows Vista or later.


2. CAUSE:

     There are some compatible problems when the move file (or RENAME) command calls the MoveFileA Windows API
     for the Windows Defender program or the antivirus programs.
     Now if the move file (or RENAME) command calls the MoveFileA Windows API failed,
     it will call the MoveFileA Windows API many times again.

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Fun488609 :: ; proc near


     ;
     ;                 -------------------------------------------------------------------------------
     ;                      VFP 9.0 FIX - THE NUMBER OF TIMES TO TRY AGAIN AFTER MOVE FILE FAILED
     ;                                December 2020
     ;                 -------------------------------------------------------------------------------
     ;                                     CCB
     ;
     ; The number of times to try again after move file failed.
     ;
     ; 2020/12/26, by ccb
     ;

     ;         push edi                                                        ;0x00488609 :        57
     ;         push eax                                                        ;0x0048860a :        50
     ;         call  MoveFileA                                   ;0x0048860b :        ff1580709100

             mov dword ptr vfpa_movefile_movefile_cnt,00h
             mov dword ptr vfpa_movefile_sourcefile,eax
             mov dword ptr vfpa_movefile_destinationfile,edi

     Label48860a ::
             push dword ptr vfpa_movefile_destinationfile
             push dword ptr vfpa_movefile_sourcefile
             call  MoveFileA
             test eax , eax
             jne Label488611
             mov ecx,dword ptr vfpa_sys9047_data
             inc dword ptr vfpa_movefile_movefile_cnt
             cmp dword ptr vfpa_movefile_movefile_cnt,ecx
             ja Label488611
             pushd 032h
             call  Sleep
             jmp Label48860a


     Label488611 ::
             test eax , eax                                                  ;0x00488611 :        85c0
             je Label5986bc                                                  ;0x00488613 :        0f84a3001100
             xor eax , eax                                                   ;0x00488619 :        33c0
             ret                                                             ;0x0048861b :        c3


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.


5. REFERENCE WEBSITES:

     1, baiyujia.com:
     http://www.baiyujia.com
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix145.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

     2, microsoft.com:
     https://devblogs.microsoft.com/oldnewthing/20120907-00/?p=6663


6. OTHER:

     For reference only, there is no guarantees.

     Any questions or suggestions, please send me an email at ccb2000@163.com.