--------------------------------------------------------------------------------------
                      VFP 9.0 FIX - THE NUMBER OF TIMES TO TRY AGAIN AFTER REMOVE DIRECTORY FAILED
                                  March 2019
                 --------------------------------------------------------------------------------------
                                     CCB



1. BUG:

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


2. CAUSE:

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

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Label75fcb2 ::
             call Fun42c1e2                                                  ;0x0075fcb2 :        e82bc5ccff


     ;
     ;                 --------------------------------------------------------------------------------------
     ;                      VFP 9.0 FIX - THE NUMBER OF TIMES TO TRY AGAIN AFTER REMOVE DIRECTORY FAILED
     ;                                  March 2019
     ;                 --------------------------------------------------------------------------------------
     ;                                     CCB
     ;
     ; The number of times to try again after remove directory failed.
     ;
     ; 2019/3/6, by ccb
     ;

     ;         lea eax ,  dword ptr [ esp + 16 ]                               ;0x0075fcb7 :        8d442410
     ;         push eax                                                        ;0x0075fcbb :        50
     ;         call  _rmdir                                      ;0x0075fcbc :        ff1524799100
     ;         add esp , 04h                                                   ;0x0075fcc2 :        83c404
     ;         call Label42d319                                                ;0x0075fcc5 :        e84fd6ccff

             mov dword ptr vfpa_rmdir_rmdir_cnt,00h

     Label75fcb7 ::
             lea eax ,  dword ptr [ esp + 16 ]
             push eax
             call  _rmdir
             add esp , 04h
             call Label42d319
             test eax , eax
             je Label75fcca
             cmp eax , 078h
             je Label75fcca
             mov ecx,dword ptr vfpa_sys9017_data
             inc dword ptr vfpa_rmdir_rmdir_cnt
             cmp dword ptr vfpa_rmdir_rmdir_cnt,ecx
             ja Label75fcca
             pushd 032h
             call  Sleep
             jmp Label75fcb7


     Label75fcca ::
             cmp eax , 078h                                                  ;0x0075fcca :        83f878
             jne Label75fcd6                                                 ;0x0075fccd :        7507
             mov eax , 03C3h                                                 ;0x0075fccf :        b8c3030000
             jmp Label75fcda                                                 ;0x0075fcd4 :        eb04

     Label75fcd6 ::
             test eax , eax                                                  ;0x0075fcd6 :        85c0
             je Label75fce1                                                  ;0x0075fcd8 :        7407

     Label75fcda ::
             mov ecx , eax                                                   ;0x0075fcda :        8bc8
             call Fun544742                                                  ;0x0075fcdc :        e8614adeff

     Label75fce1 ::
             mov  ecx , dword ptr [ esp + 011Ch ]                            ;0x0075fce1 :        8b8c241c010000
             call Fun42bf1d                                                  ;0x0075fce8 :        e830c2ccff
             pop edi                                                         ;0x0075fced :        5f
             pop esi                                                         ;0x0075fcee :        5e
             mov esp , ebp                                                   ;0x0075fcef :        8be5
             pop ebp                                                         ;0x0075fcf1 :        5d
             ret                                                             ;0x0075fcf2 :        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_vfp9fix73.asp

     2, microsoft.com:
     https://blogs.msdn.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.