--------------------------------------------------------------
                      [BUG/PRB.] VFP 9.0 FIX - SET RESOURCE OFF AT STARTUP
                                 January 2024
                 --------------------------------------------------------------
                                    CCB



1. BUG:

     Usually, VFP will open the resource file at startup.
     If there is no the resource file, it will create the resource file.
 
     But in some cases, for example,
     VFP Runtime, VFP Multi-threaded Runtime,
     usually we need not to create the resource file,
     so we can set resource off at startup in these cases.


2. CAUSE:

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     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


     ;
     ;                 ---------------------------------------------------
     ;                      VFP 9.0 FIX - SET RESOURCE OFF AT STARTUP
     ;                                February 2017
     ;                 ---------------------------------------------------
     ;                                     CCB
     ;
     ; VFP IDE: SET RESOURCE ON at startup.
     ; VFP Runtime: SET RESOURCE OFF at startup.
     ; VFP Multi-threaded Runtime: SET RESOURCE OFF at startup.
     ;
     ; 2017/2/22, by ccb
     ;

     ;         push 00h
     ;         push 01h
     ;         push ebx
     ;         push offset vfpa_setresource_data
     ;         call Fun40a45d


     Label4062c8 ::
             push ebx                                                        ;0x004062c8 :        53
             call Fun40a140                                                  ;0x004062c9 :        e8723e0000
             mov  edx , dword ptr [ Data93a780 ]                             ;0x004062ce :        8b1580a79300
             xor eax , eax                                                   ;0x004062d4 :        33c0
             inc eax                                                         ;0x004062d6 :        40
             mov ecx , 090h                                                  ;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 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

     2, microsoft.com:
     https://social.msdn.microsoft.com/Forums/en-US/aa67e00c-ce8e-42f9-af05-6143739448ef/foxuserdbf-on-desktop
     https://social.msdn.microsoft.com/Forums/en-US/ecfa0280-4953-42e4-bb10-9e1b437bd3e4/error-reading-foxuserdbf

     3, tek-tips.com:
     http://www.tek-tips.com/viewthread.cfm?qid=1711792
     http://www.tek-tips.com/viewthread.cfm?qid=604896

     4, narkive.com:
     http://microsoft.public.fox.vfp.dbc.narkive.com/IZETNP3d/foxuser-dbf-file-cause-application-crash
     http://profox.leafe.narkive.com/NZrOndgI/vfp9-resource-file-not-valid


6. OTHER:

     For reference only, there is no guarantees.

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