-------------------------------------------------
                         VFP 9.0 FIX - GETPEM() Function
                                 January 2018
                 -------------------------------------------------
                                    CCB



1. BUG:

     In vfp9 (and vfp6, vfp7, vfp8), the GETPEM() function can not return the user-defined method code in a program (.prg) file.

     The bug was reported by xinjie.


2. CAUSE:

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Label5ba392 ::
             mov  ecx , dword ptr [ esp + 8 ]                                ;0x005ba392 :        8b4c2408
             pushd 0FFFFFFFFh                                                ;0x005ba396 :        6aff
             lea eax ,  dword ptr [ esp + 16 ]                               ;0x005ba398 :        8d442410
             push eax                                                        ;0x005ba39c :        50
             push esi                                                        ;0x005ba39d :        56
             pushd 00h                                                       ;0x005ba39e :        6a00
             pushd 0FFFFFFFFh                                                ;0x005ba3a0 :        6aff
             push ecx                                                        ;0x005ba3a2 :        51
             mov edi , 020h                                                  ;0x005ba3a3 :        bf20000000
             push edx                                                        ;0x005ba3a8 :        52
             mov  dword ptr [ esp + 40 ] , edi                               ;0x005ba3a9 :        897c2428
             call Fun433a39                                                  ;0x005ba3ad :        e88796e7ff
             mov  eax , dword ptr [ esp + 40 ]                               ;0x005ba3b2 :        8b442428
             add esp , 01Ch                                                  ;0x005ba3b6 :        83c41c
             cmp eax , edi                                                   ;0x005ba3b9 :        3bc7
             jne Label5ba3cc                                                 ;0x005ba3bb :        750f


     ;
     ;                 -------------------------------------------------
     ;                         VFP 9.0 FIX - GETPEM() Function
     ;                                November 2017
     ;                 -------------------------------------------------
     ;                                     CCB
     ;
     ; Returns the user-defined method code in a program (.prg) file.
     ;
     ; 2017/11/13, by ccb
     ;

             cmp dword ptr vfpa_getpem_isgetpem,01h
             je Label5ba3c3


             cmp  dword ptr [ esi + 4 ] , 0FFFFFFFFh                         ;0x005ba3bd :        837e04ff
             je Label5ba3cc                                                  ;0x005ba3c1 :        7409

     Label5ba3c3 ::
             mov eax , 01h                                                   ;0x005ba3c3 :        b801000000
             pop edi                                                         ;0x005ba3c8 :        5f
             ret 08h                                                         ;0x005ba3c9 :        c20800


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, tek-tips.com:
     http://www.tek-tips.com/viewthread.cfm?qid=1283345

     3, foxite.com:
     https://www.foxite.com/archives/to-find-out-if-there-is-code-in-subclass-0000398070.htm


6. OTHER:

     For reference only, there is no guarantees.

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