-----------------------------------------------------------------------------------------------------
                      [ENHANCED] VFP 9.0 FIX - THE DEFAULT VALUE FOR THE PROGCACHE TERM IN THE CONFIGURATION FILE
                                 January 2024
                 -----------------------------------------------------------------------------------------------------
                                     CCB



1. BUG:

     In vfp9, the default value is 144 pages (9 MB) for the PROGCACHE term in the configuration file,
     now the default value is 1024 pages (64 MB) for the PROGCACHE term in the configuration file.


2. CAUSE:

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Fun4061e7 :: ; proc near
             push ebp                                                        ;0x004061e7 :        55
             mov ebp , esp                                                   ;0x004061e8 :        8bec
             sub esp , 090h                                                  ;0x004061ea :        81ec90000000
             push ebx                                                        ;0x004061f0 :        53
             push esi                                                        ;0x004061f1 :        56
             push edi                                                        ;0x004061f2 :        57
             lea edx ,  dword ptr [ ebp - 12 ]                               ;0x004061f3 :        8d55f4
             lea eax ,  dword ptr [ ebp + 0FFFFFF74h ]                       ;0x004061f6 :        8d8574ffffff
             call Fun42c27f                                                  ;0x004061fc :        e87e600200
             xor esi , esi                                                   ;0x00406201 :        33f6
             push esi                                                        ;0x00406203 :        56
             push eax                                                        ;0x00406204 :        50
             call Fun42c2be                                                  ;0x00406205 :        e8b4600200
             cmp eax , esi                                                   ;0x0040620a :        3bc6
             pop ecx                                                         ;0x0040620c :        59
             pop ecx                                                         ;0x0040620d :        59
             mov  dword ptr [ ebp - 8 ] , eax                                ;0x0040620e :        8945f8
             jne Label406320                                                 ;0x00406211 :        0f8509010000
             call Fun40633f                                                  ;0x00406217 :        e823010000
             call Fun406405                                                  ;0x0040621c :        e8e4010000
             cmp  dword ptr [ Data93a88c ] , esi                             ;0x00406221 :        39358ca89300
             jne Label40625f                                                 ;0x00406227 :        7536
             push esi                                                        ;0x00406229 :        56
             push esi                                                        ;0x0040622a :        56
             pushd offset Label54df78                                                  ;0x0040622b :        6878df5400
             pushd offset Data93a88c                                                  ;0x00406230 :        688ca89300
             call Fun406452                                                  ;0x00406235 :        e818020000
             test eax , eax                                                  ;0x0040623a :        85c0
             jne Label5782fd                                                 ;0x0040623c :        0f85bb201700
             inc eax                                                         ;0x00406242 :        40
             pushd offset Data9181b8                                                  ;0x00406243 :        68b8819100
             mov dword ptr [ Data931e14 ] ,  eax                             ;0x00406248 :        a3141e9300
             call Fun406458                                                  ;0x0040624d :        e806020000
             cmp eax , 0FFFFFFFFh                                            ;0x00406252 :        83f8ff
             je Label40625f                                                  ;0x00406255 :        7408
             pushd 050h                                                      ;0x00406257 :        6a50
             push eax                                                        ;0x00406259 :        50
             call Fun43d5b3                                                  ;0x0040625a :        e854730300

     Label40625f ::
             mov edi , 080h                                                  ;0x0040625f :        bf80000000
             call Fun4068c6                                                  ;0x00406264 :        e85d060000
             xor ecx , ecx                                                   ;0x00406269 :        33c9
             inc ecx                                                         ;0x0040626b :        41
             call Fun42e42c                                                  ;0x0040626c :        e8bb810200
             call Fun40690d                                                  ;0x00406271 :        e897060000
             call Fun406a32                                                  ;0x00406276 :        e8b7070000
             call Fun406c91                                                  ;0x0040627b :        e8110a0000
             call Fun406e65                                                  ;0x00406280 :        e8e00b0000
             call Fun406ea0                                                  ;0x00406285 :        e8160c0000
             mov  ebx , dword ptr [ ebp + 8 ]                                ;0x0040628a :        8b5d08
             cmp  dword ptr [ ebx + 0430h ] , esi                            ;0x0040628d :        39b330040000
             jne Label57830d                                                 ;0x00406293 :        0f8574201700

     Label406299 ::
             call Fun409702                                                  ;0x00406299 :        e864340000
             call Fun40976e                                                  ;0x0040629e :        e8cb340000
             call Fun409926                                                  ;0x004062a3 :        e87e360000
             call Fun409acf                                                  ;0x004062a8 :        e822380000
             call Fun409b32                                                  ;0x004062ad :        e880380000
             call Fun409bef                                                  ;0x004062b2 :        e838390000
             call Fun409d23                                                  ;0x004062b7 :        e8673a0000
             call Fun40a000                                                  ;0x004062bc :        e83f3d0000
             mov eax , ebx                                                   ;0x004062c1 :        8bc3
             call Fun40a116                                                  ;0x004062c3 :        e84e3e0000
             push ebx                                                        ;0x004062c8 :        53
             call Fun40a140                                                  ;0x004062c9 :        e8723e0000
             mov  edx , dword ptr [ Data93a780 ]                             ;0x004062ce :        8b1580a79300
             xor eax , eax                                                   ;0x004062d4 :        33c0
             inc eax                                                         ;0x004062d6 :        40


     ;
     ;                 ------------------------------------------------------------------------------------------
     ;                      VFP 9.0 FIX - THE DEFAULT VALUE FOR THE PROGCACHE TERM IN THE CONFIGURATION FILE
     ;                                  August 2023
     ;                 ------------------------------------------------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, the default value is 144 pages (9 MB) for the PROGCACHE term in the configuration file,
     ; now the default value is 1024 pages (64 MB) for the PROGCACHE term in the configuration file.
     ;
     ; 2023/8/5, by ccb
     ;

     ;         mov ecx , 090h                                                  ;0x004062d7 :        b990000000
             mov ecx , 0400h                                                  ;0x004062d7 :        b990000000


             call Fun40a7ee                                                  ;0x004062dc :        e80d450000
             call Fun40a8a2                                                  ;0x004062e1 :        e8bc450000
             call Fun40a9e4                                                  ;0x004062e6 :        e8f9460000
             push ebx                                                        ;0x004062eb :        53
             call Fun40aae9                                                  ;0x004062ec :        e8f8470000
             call Fun40b071                                                  ;0x004062f1 :        e87b4d0000
             call Fun40b0aa                                                  ;0x004062f6 :        e8af4d0000
             call Fun40bee8                                                  ;0x004062fb :        e8e85b0000
             mov eax ,  dword ptr [ Data937794 ]                             ;0x00406300 :        a194779300
             call Fun41757a                                                  ;0x00406305 :        e870120100
             mov  dword ptr [ Data936de4 ] , 01388h                          ;0x0040630a :        c705e46d930088130000
             call Fun40c222                                                  ;0x00406314 :        e8095f0000
             call Fun40c29c                                                  ;0x00406319 :        e87e5f0000
             xor esi , esi                                                   ;0x0040631e :        33f6

     Label406320 ::
             lea eax ,  dword ptr [ ebp - 12 ]                               ;0x00406320 :        8d45f4
             push eax                                                        ;0x00406323 :        50
             lea eax ,  dword ptr [ ebp + 0FFFFFF74h ]                       ;0x00406324 :        8d8574ffffff
             call Fun42d200                                                  ;0x0040632a :        e8d16e0200
             cmp  dword ptr [ ebp - 8 ] , esi                                ;0x0040632f :        3975f8
             jne Label5783de                                                 ;0x00406332 :        0f85a6201700
             pop edi                                                         ;0x00406338 :        5f
             pop esi                                                         ;0x00406339 :        5e
             pop ebx                                                         ;0x0040633a :        5b
             leave                                                           ;0x0040633b :        c9
             ret 04h                                                         ;0x0040633c :        c20400


4. APPLIES TO:

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


6. OTHER:

     For reference only, there is no guarantees.

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