---------------------------------------------------------------------------------------------------------
[BUG/PRB.] VFP 9.0 FIX - CLEAR THE COMPILED PROGRAM BUFFER AFTER CHANGING THE DEFAULT DIRECTORY
January 2025
---------------------------------------------------------------------------------------------------------
CCB
1. BUG:
In vfp9 (and vfp6, vfp7, vfp8), it will not clear the compiled program buffer after changing the default directory
with the CHDIR (or CD) command or the SET DEFAULT command.
In Visual FoxPro Advanced, if we enable clearing the compiled program buffer after changing the default directory,
it will clear the compiled program buffer after changing the default directory
with the CHDIR (or CD) command or the SET DEFAULT command when Visual FoxPro Advanced is not running in a VFP API Library routine.
Usually, the following commands will clear the compiled program buffer automatically:
Activate another application, when Visual FoxPro is running in interactive mode (in the command window)
CLEAR PROGRAM command
DOEVENTS command
MODIFY COMMAND command and MODIFY FILE command, specify the name of the text editor (TEDIT = [/N] editor) in the configuration file
RUN or ! command, when Visual FoxPro is not running in a VFP API Library routine
SET DEVELOPMENT ON command
CHDIR (or CD) command and SET DEFAULT command, when Visual FoxPro Advanced is not running in a VFP API Library routine
There is a test program:
*PROC testcdcommand
CD test1
DO testcdcommand2 && calls test1\testcdcommand2.prg
CD ..
CD test2
DO testcdcommand2 && calls test1\testcdcommand2.prg in vfp9! calls test2\testcdcommand2.prg in Visual FoxPro Advanced, ok.
CD ..
CD test2
CLEAR PROGRAM
DO testcdcommand2 && calls test2\testcdcommand2.prg, ok.
CD ..
RETURN
* END OF PROC TESTCDCOMMAND.
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Label45e0a0 ::
push ebp ;0x0045e0a0 : 55
mov ebp , esp ;0x0045e0a1 : 8bec
sub esp , 064h ;0x0045e0a3 : 83ec64
mov eax , dword ptr [ Data9393ac ] ;0x0045e0a6 : a1ac939300
cmp byte ptr [eax] , 0FEh ;0x0045e0ab : 8038fe
push ebx ;0x0045e0ae : 53
push esi ;0x0045e0af : 56
push edi ;0x0045e0b0 : 57
mov dword ptr [ ebp - 4 ] , 00h ;0x0045e0b1 : c745fc00000000
je Label598807 ;0x0045e0b8 : 0f8449a71300
pushd 00h ;0x0045e0be : 6a00
call Fun4b57e5 ;0x0045e0c0 : e820770500
;
; ----------------------------------------------------------------------------------------------
; VFP 9.0 FIX - CLEAR THE COMPILED PROGRAM BUFFER AFTER CHANGING THE DEFAULT DIRECTORY
; January 2023
; ----------------------------------------------------------------------------------------------
; CCB
;
; In vfp9 (and vfp6, vfp7, vfp8), it will not clear the compiled program buffer after changing the default directory
; with the CHDIR (or CD) command or the SET DEFAULT command.
; In Visual FoxPro Advanced, it will clear the compiled program buffer after changing the default directory
; with the CHDIR (or CD) command or the SET DEFAULT command when Visual FoxPro Advanced is not running in a VFP API Library routine.
;
; 2023/1/23, by ccb
;
cmp dword ptr vfpa_sys9118_data,00h
je Label45e0c5
cmp dword ptr vfpa_runafterbuild_isrunafterbuild,01h
jne Label45e0c2
mov dword ptr vfpa_runafterbuild_isrunafterbuild,00h
jmp Label45e0c5
Label45e0c2 ::
cmp dword ptr vfpa_optionsdialog_isoptionsdialog,01h
jne Label45e0c3
mov dword ptr vfpa_optionsdialog_isoptionsdialog,00h
jmp Label45e0c5
Label45e0c3 ::
mov eax , dword ptr [ Data941124 ]
test eax , eax
je Label45e0c4
cmp dword ptr [ eax + 16 ] , 00h
je Label45e0c4
jmp Label45e0c5
Label45e0c4 ::
cmp word ptr [ Data937100 ] , 00h
jne Label4b6a0b
call Fun4cf664
jmp Label4b6a0b
Label45e0c5 ::
pop edi ;0x0045e0c5 : 5f
pop esi ;0x0045e0c6 : 5e
pop ebx ;0x0045e0c7 : 5b
mov esp , ebp ;0x0045e0c8 : 8be5
pop ebp ;0x0045e0ca : 5d
ret ;0x0045e0cb : 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_vfp9fix239.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix33.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix229.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix376.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix377.asp
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|