--------------------------------------------------------------------------------------- [BUG/PRB.] VFP 9.0 FIX - FIX THE ACTIVATE MENU BAR NAME IN THE ON PAD COMMAND January 2024 --------------------------------------------------------------------------------------- CCB 1. BUG: In VFP 9.0 and earlier versions, when we compile the code: ON PAD mymenutitlename OF mymenubarname ACTIVATE MENU mymenu the activate menu bar name is incorrect in the compiled p-code, it can't run correctly. There is the bug for the following ON ... commands: ON PAD ... OF ... ACTIVATE MENU ... ON MENUS ... ACTIVATE MENU ... ON POPUPS ... ACTIVATE MENU ... There is no the bug for the following ON ... commands: ON PAD ... OF ... ACTIVATE POPUP ... ON MENUS ... ACTIVATE POPUP ... ON POPUPS ... ACTIVATE POPUP ... ON BAR ... OF ... ACTIVATE MENU ... ON BAR ... OF ... ACTIVATE POPUP ... ON SELECTION PAD ... OF ... ACTIVATE MENU ... ON SELECTION PAD ... OF ... ACTIVATE POPUP ... ON SELECTION BAR ... OF ... ACTIVATE MENU ... ON SELECTION BAR ... OF ... ACTIVATE POPUP ... 2. CAUSE: In VFP 9.0 and earlier versions, the code: ON PAD mymenutitlename OF mymenubarname ACTIVATE POPUP mypop will be compiled to: 11 00 31 BC F7 00 00 C3 F7 01 00 BC C6 F7 02 00 FE -------------------------------------------------- the activate menu bar name (name #02) is saved in the name strings, it is correct. ON PAD mymenutitlename OF mymenubarname ACTIVATE MENU mymenu will be compiled to: 15 00 31 BC F7 00 00 C3 F7 01 00 BC FB 06 00 6D 79 6D 65 6E FE -------------------------------------------------------------- the activate menu bar name ("mymen", 5 bytes) is saved in the compiled p-code, it is incorrect. In VFP Advanced, the code: ON PAD mymenutitlename OF mymenubarname ACTIVATE POPUP mypop will be compiled to: 11 00 31 BC F7 00 00 C3 F7 01 00 BC C6 F7 02 00 FE -------------------------------------------------- the activate menu bar name (name #02) is saved in the name strings, it is correct. ON PAD mymenutitlename OF mymenubarname ACTIVATE MENU mymenu will be compiled to: 11 00 31 BC F7 00 00 C3 F7 01 00 BC 1C F7 02 00 FE -------------------------------------------------- the activate menu bar name (name #02) is saved in the name strings, it is correct. There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Label574844 :: pushd 00h ;0x00574844 : 6a00 pushd 01h ;0x00574846 : 6a01 pushd 00h ;0x00574848 : 6a00 push esi ;0x0057484a : 56 inc edi ;0x0057484b : 47 call Fun430428 ;0x0057484c : e8d7bbebff mov edx , edi ;0x00574851 : 8bd7 mov ecx , esi ;0x00574853 : 8bce call Fun476835 ;0x00574855 : e8db1ff0ff test eax , eax ;0x0057485a : 85c0 jl Label4b5fbf ;0x0057485c : 0f8c5d17f4ff je Label574770 ;0x00574862 : 0f8408ffffff add edi , eax ;0x00574868 : 03f8 lea ebp , dword ptr [ eax + 1 ] ;0x0057486a : 8d6801 Label57486d :: push edi ;0x0057486d : 57 mov ebx , 01BCh ;0x0057486e : bbbc010000 mov byte ptr [esi] , 07h ;0x00574873 : c60607 call Fun4345a7 ;0x00574876 : e82cfdebff test eax , eax ;0x0057487b : 85c0 mov byte ptr [esi] , 07h ;0x0057487d : c60607 je Label5748d1 ;0x00574880 : 744f inc edi ;0x00574882 : 47 push edi ;0x00574883 : 57 mov ebx , 02C6h ;0x00574884 : bbc6020000 call Fun4345a7 ;0x00574889 : e819fdebff ; ; ---------------------------------------------------------------------------- ; VFP 9.0 FIX - FIX THE ACTIVATE MENU BAR NAME IN THE ON PAD COMMAND ; March 2021 ; ---------------------------------------------------------------------------- ; CCB ; ; Fix the activate menu bar name in the ON PAD command. ; ; 2021/3/5, by ccb ; cmp dword ptr vfpa_sys9054_data,00h je Label57488e test eax , eax jne Label5748a9 jmp Label574896 Label57488e :: test eax , eax ;0x0057488e : 85c0 je Label4b5f64 ;0x00574890 : 0f84ce16f4ff Label574896 :: push edi ;0x00574896 : 57 mov ebx , 01Ch ;0x00574897 : bb1c000000 call Fun4345a7 ;0x0057489c : e806fdebff ; ; -------------------------------------------------------------------------- ; VFP 9.0 FIX - FIX THE ACTIVATE MENU BAR NAME IN THE ON PAD COMMAND ; March 2021 ; -------------------------------------------------------------------------- ; CCB ; ; Fix the activate menu bar name in the ON PAD command. ; ; 2021/3/5, by ccb ; cmp dword ptr vfpa_sys9054_data,00h je Label5748a1 test eax , eax jne Label5748a9 jmp Label5748c4 Label5748a1 :: test eax , eax ;0x005748a1 : 85c0 jne Label4b5f64 ;0x005748a3 : 0f85bb16f4ff Label5748a9 :: lea edx , dword ptr [ edi + 1 ] ;0x005748a9 : 8d5701 mov ecx , esi ;0x005748ac : 8bce mov byte ptr [esi] , 07h ;0x005748ae : c60607 call Fun476835 ;0x005748b1 : e87f1ff0ff test eax , eax ;0x005748b6 : 85c0 jl Label4b5fbf ;0x005748b8 : 0f8c0117f4ff jne Label57469b ;0x005748be : 0f85d7fdffff Label5748c4 :: mov eax , 0FFFFFF38h ;0x005748c4 : b838ffffff pop edi ;0x005748c9 : 5f pop esi ;0x005748ca : 5e pop ebp ;0x005748cb : 5d pop ebx ;0x005748cc : 5b mov esp , ebp ;0x005748cd : 8be5 pop ebp ;0x005748cf : 5d ret ;0x005748d0 : 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_vfp9fix159.asp 2, vfp.fr: http://www.vfp.fr/atoutfox.asp 3, atoutfox.org: http://www.atoutfox.org/articles.asp?action=fconsulter&ID=0000000920 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |