---------------------------------------------------------------------------------
                      [ENHANCED] VFP 9.0 FIX - THE DEFAULT VALUE FOR THE SET ODOMETER COMMAND
                                   May 2021
                 ---------------------------------------------------------------------------------
                                     CCB



1. BUG:

     In vfp9 (and vfp6, vfp7, vfp8), the default value is 100 records for the SET ODOMETER command,
     now the default value is 10000 records for the SET ODOMETER command.


2. CAUSE:

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Fun52c83b :: ; proc near
             push ebp                                                        ;0x0052c83b :        55
             lea ebp ,  dword ptr [ esp - 120 ]                              ;0x0052c83c :        8d6c2488
             sub esp , 0708h                                                 ;0x0052c840 :        81ec08070000
             mov eax ,  dword ptr [ Data937090 ]                             ;0x0052c846 :        a190709300
             push ebx                                                        ;0x0052c84b :        53
             mov  ebx , dword ptr [ Data9393ac ]                             ;0x0052c84c :        8b1dac939300
             mov  dword ptr [ ebp + 116 ] , eax                              ;0x0052c852 :        894574
             mov  al , byte ptr [ebx]                                        ;0x0052c855 :        8a03
             movzx eax , al                                                  ;0x0052c857 :        0fb6c0
             inc ebx                                                         ;0x0052c85a :        43
             dec eax                                                         ;0x0052c85b :        48
             cmp eax , 094h                                                  ;0x0052c85c :        3d94000000
             push esi                                                        ;0x0052c861 :        56
             push edi                                                        ;0x0052c862 :        57
             mov  dword ptr [ Data9393ac ] , ebx                             ;0x0052c863 :        891dac939300
             ja Label52c900                                                  ;0x0052c869 :        0f8791000000
             movzx eax ,byte ptr [ eax + offset Data52c918 ]                          ;0x0052c86f :        0fb68018c95200
             jmp  dword ptr [ 4 * eax + offset DataPtr52c6d3 ]                           ;0x0052c876 :        ff2485d3c65200

     Label52c900 ::
             xor eax , eax                                                   ;0x0052c900 :        33c0
             lea esp ,  dword ptr [ ebp + 0FFFFF964h ]                       ;0x0052c902 :        8da564f9ffff
             mov  ecx , dword ptr [ ebp + 116 ]                              ;0x0052c908 :        8b4d74
             call Fun42bf1d                                                  ;0x0052c90b :        e80df6efff
             pop edi                                                         ;0x0052c910 :        5f
             pop esi                                                         ;0x0052c911 :        5e
             pop ebx                                                         ;0x0052c912 :        5b
             add ebp , 078h                                                  ;0x0052c913 :        83c578
             leave                                                           ;0x0052c916 :        c9
             ret                                                             ;0x0052c917 :        c3

     Label5e1bb7 ::
             inc ebx                                                         ;0x005e1bb7 :        43
             cmp  byte ptr [ebx] , 0FEh                                      ;0x005e1bb8 :        803bfe
             mov  dword ptr [ Data9393ac ] , ebx                             ;0x005e1bbb :        891dac939300
             jne Label5e1bd2                                                 ;0x005e1bc1 :        750f


     ;
     ;                 ----------------------------------------------------------------------
     ;                      VFP 9.0 FIX - THE DEFAULT VALUE FOR THE SET ODOMETER COMMAND
     ;                                   May 2021
     ;                 ----------------------------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, the default value is 100 records for the SET ODOMETER command,
     ; now the default value is 10000 records for the SET ODOMETER command.
     ;
     ; 2021/5/18, by ccb
     ;

     ;         mov  dword ptr [ Data945444 ] , 064h                            ;0x005e1bc3 :        c7054454940064000000
             mov  dword ptr [ Data945444 ] , 02710h                            ;0x005e1bc3 :        c7054454940064000000


             jmp Label52c900                                                 ;0x005e1bcd :        e92eadf4ff


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_vfp9fix11.asp
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix175.asp
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix176.asp


6. OTHER:

     For reference only, there is no guarantees.

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