--------------------------------------------------------------------------------------------
[ENHANCED] VFP 9.0 FIX - THE MAXIMUM NUMBER OF CHARACTERS FOR THE SET PATH COMMAND
January 2026
--------------------------------------------------------------------------------------------
CCB
1. BUG:
In vfp9 (and vfp6, vfp7, vfp8), the maximum number of characters for the SET PATH command (and the SET("PATH") function) is 4095,
now the maximum number of characters for the SET PATH command (and the SET("PATH") function) is 8191.
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Label4b66d6 ::
inc ebx ;0x004b66d6 : 43
cmp byte ptr [ebx] , 0FEh ;0x004b66d7 : 803bfe
mov dword ptr [ Data9393ac ] , ebx ;0x004b66da : 891dac939300
je Label5e1c10 ;0x004b66e0 : 0f842ab51200
xor eax , eax ;0x004b66e6 : 33c0
call Fun42c118 ;0x004b66e8 : e82b5af7ff
mov eax , esp ;0x004b66ed : 8bc4
sub eax , dword ptr [ Data9370c4 ] ;0x004b66ef : 2b05c4709300
;
; ---------------------------------------------------------------------------------
; VFP 9.0 FIX - THE MAXIMUM NUMBER OF CHARACTERS FOR THE SET PATH COMMAND
; November 2019
; ---------------------------------------------------------------------------------
; CCB
;
; In vfp9, the maximum number of characters for the SET PATH command (and the SET("PATH") function) is 4095,
; now the maximum number of characters for the SET PATH command (and the SET("PATH") function) is 8191.
;
; 2019/11/20, by ccb
;
; mov esi , 01000h ;0x004b66f5 : be00100000
mov esi , 02000h ;0x004b66f5 : be00100000
cmp eax , esi ;0x004b66fa : 3bc6
jle Label5e1c2d ;0x004b66fc : 0f8e2bb51200
mov eax , esi ;0x004b6702 : 8bc6
call Fun42c118 ;0x004b6704 : e80f5af7ff
mov dword ptr [ ebp + 0FFFFFC30h ] , esp ;0x004b6709 : 89a530fcffff
Label4b670f ::
mov ebx , dword ptr [ ebp + 0FFFFFC30h ] ;0x004b670f : 8b9d30fcffff
test ebx , ebx ;0x004b6715 : 85db
mov edi , 0B6h ;0x004b6717 : bfb6000000
je Label5e1c39 ;0x004b671c : 0f8417b51200
pushd 00h ;0x004b6722 : 6a00
push ebx ;0x004b6724 : 53
mov eax , esi ;0x004b6725 : 8bc6
call Fun5463b6 ;0x004b6727 : e88afc0800
cmp byte ptr [ Data93a8c0 ] , 00h ;0x004b672c : 803dc0a8930000
je Label4b6742 ;0x004b6733 : 740d
call Fun4b837c ;0x004b6735 : e8421c0000
test eax , eax ;0x004b673a : 85c0
jne Label5e1c40 ;0x004b673c : 0f85feb41200
Label4b6742 ::
mov eax , ebx ;0x004b6742 : 8bc3
lea edx , dword ptr [ eax + 1 ] ;0x004b6744 : 8d5001
Label4b6747 ::
mov cl , byte ptr [eax] ;0x004b6747 : 8a08
inc eax ;0x004b6749 : 40
test cl , cl ;0x004b674a : 84c9
jne Label4b6747 ;0x004b674c : 75f9
;
; ---------------------------------------------------------------------------------
; VFP 9.0 FIX - THE MAXIMUM NUMBER OF CHARACTERS FOR THE SET PATH COMMAND
; November 2019
; ---------------------------------------------------------------------------------
; CCB
;
; In vfp9, the maximum number of characters for the SET PATH command (and the SET("PATH") function) is 4095,
; now the maximum number of characters for the SET PATH command (and the SET("PATH") function) is 8191.
;
; 2019/11/20, by ccb
;
; mov dword ptr vfpa_setpath_issetpath,01h
sub eax , edx ;0x004b674e : 2bc2
mov edi , offset Data93a8c0 ;0x004b6750 : bfc0a89300
mov edx , ebx ;0x004b6755 : 8bd3
call Fun414b0d ;0x004b6757 : e8b1e3f5ff
;
; ---------------------------------------------------------------------------------
; VFP 9.0 FIX - THE MAXIMUM NUMBER OF CHARACTERS FOR THE SET PATH COMMAND
; November 2019
; ---------------------------------------------------------------------------------
; CCB
;
; In vfp9, the maximum number of characters for the SET PATH command (and the SET("PATH") function) is 4095,
; now the maximum number of characters for the SET PATH command (and the SET("PATH") function) is 8191.
;
; 2019/11/20, by ccb
;
Label4b675b ::
; mov dword ptr vfpa_setpath_issetpath,00h
Label4b675c ::
jmp Label52c900 ;0x004b675c : e99f610700
Label52c900 ::
xor eax , eax ;0x0052c900 : 33c0
lea esp , dword ptr [ ebp + 0FFFFF964h ] ;0x0052c902 : 8da564f9ffff
mov ecx , dword ptr [ ebp + 116 ] ;0x0052c908 : 8b4d74
call Fun42bf1d ;0x0052c90b : e80df6efff
pop edi ;0x0052c910 : 5f
pop esi ;0x0052c911 : 5e
pop ebx ;0x0052c912 : 5b
add ebp , 078h ;0x0052c913 : 83c578
leave ;0x0052c916 : c9
ret ;0x0052c917 : 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.
IMPORTANT NOTE:
If there are 2 or more semicolons (:) in a path, for example, c:\aaac:\bbb,
or there are only 2 backslashes (\\) in a path,
or the length of a path > 260,
and there is no the config file (config.fpw) in the application folder,
vfp will cause an error "Error locating config file-bad path?".
For more information, please refer to:
https://jeffpar.github.io/kbarchive/kb/163/Q163801/
Q163801: PRB: "Error Locating Config File-Bad Path?" in Visual FoxPro
In vfp9 (and vfp6, vfp7, vfp8), it locates the config file (config.fpw) in the following folders:
1, the compiled executable file (in VFP Runtime or VFP Multi-threaded Runtime),
2, the application folder,
3, the PATH environment variable to the specified folder.
if there is no the config file (config.fpw) in the compiled executable file and the application folder,
and there are some problems in the MS-DOS environment variable PATH,
vfp will cause an error "Error locating config file-bad path?".
In VFP Advanced, it locates the config file (config.fpw) in the following folders:
1, the compiled executable file (in VFP Runtime or VFP Multi-threaded Runtime),
2, the application folder,
3, the PATH environment variable to the specified folder.
if there is no the config file (config.fpw) in the compiled executable file and the application folder,
and there are some problems in the MS-DOS environment variable PATH,
vfp will cause an error "Error locating config file--bad path in the MS-DOS environment variable PATH or the SET PATH command?".
There are some methods to solve the problem:
1, recommend to edit the bad path in the MS-DOS environment variable PATH or the SET PATH command,
2, include the config file (config.fpw) in the compiled executable file,
3, create the config file (config.fpw) in the application folder.
In vfp9 (and vfp6, vfp7, vfp8), it locates the resource file (foxuser.dbf) in the following folders:
1, the application folder,
2, the PATH environment variable to the specified folder.
if there is no the resource file (foxuser.dbf) in the application folder,
and there are some problems in the MS-DOS environment variable PATH,
vfp will cause an error "Program Error: Invalid path or file name.",
and then vfp will cancel the executable file.
In VFP Advanced, it locates the resource file (foxuser.dbf) in the following folders:
1, the compiled executable file (in VFP Runtime or VFP Multi-threaded Runtime),
2, the application folder,
3, the PATH environment variable to the specified folder.
if there is no the resource file (foxuser.dbf) in the compiled executable file and the application folder,
and there are some problems in the MS-DOS environment variable PATH,
vfp will cause an error "Invalid path or file name--bad path in the MS-DOS environment variable PATH or the SET PATH command?",
and then vfp will locates the resource file (foxuser.dbf) in the rest paths,
and then vfp will run the executable file continue.
There are some methods to solve the problem:
1, recommend to edit the bad path in the MS-DOS environment variable PATH or the SET PATH command,
2, include the resource files (foxuser.dbf and foxuser.fpt) in the compiled executable file,
3, create the resource files (foxuser.dbf and foxuser.fpt) in the application folder.
5. REFERENCE WEBSITES:
1, baiyujia.com:
http://www.baiyujia.com
http://www.baiyujia.com/vfpdocuments/f_vfp9fix28.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix100.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix102.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix287.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix354.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix355.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix356.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix357.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix386.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix387.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix388.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix389.asp
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|