-----------------------------------------------------------------------------------------------------------------
[BUG/PRB.] VFP 9.0 FIX - LOCATE A FILE SPECIFIED WITH AN ABSOLUTE PATH IN THE VISUAL FOXPRO SEARCH PATH
January 2025
-----------------------------------------------------------------------------------------------------------------
CCB
1. BUG:
In vfp9 (and vfp6, vfp7, vfp8), if a file specified with an absolute path does not exist,
it will locate the file in the Visual FoxPro search path.
The bug occurs when SET("COMPATIBLE")="OFF" (the default setting), it does not occur when SET("COMPATIBLE")="ON".
In VFP Advanced, if a file specified with an absolute path does not exist,
it will not locate the file in the Visual FoxPro search path.
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Label42c764 ::
pushd 00h ;0x0042c764 : 6a00
lea edx , dword ptr [ ebp - 48 ] ;0x0042c766 : 8d55d0
push edx ;0x0042c769 : 52
lea eax , dword ptr [ ebp - 44 ] ;0x0042c76a : 8d45d4
push eax ;0x0042c76d : 50
push ebx ;0x0042c76e : 53
pushd 00h ;0x0042c76f : 6a00
push ebx ;0x0042c771 : 53
call Fun42cd23 ;0x0042c772 : e8ac050000
test eax , eax ;0x0042c777 : 85c0
jne Label42cc7f ;0x0042c779 : 0f8500050000
mov ecx , 041h ;0x0042c77f : b941000000
mov esi , ebx ;0x0042c784 : 8bf3
lea edi , dword ptr [ ebp - 8 ] ;0x0042c786 : 8d7df8
rep movsd ;0x0042c789 : f3a5
lea ecx , dword ptr [ ebp - 8 ] ;0x0042c78b : 8d4df8
movsb ;0x0042c78e : a4
call Fun42c8bb ;0x0042c78f : e827010000
mov ecx , dword ptr [ ebp + 0118h ] ;0x0042c794 : 8b8d18010000
and ecx , 01h ;0x0042c79a : 83e101
push ecx ;0x0042c79d : 51
lea edx , dword ptr [ ebp - 8 ] ;0x0042c79e : 8d55f8
push edx ;0x0042c7a1 : 52
call Fun42c9be ;0x0042c7a2 : e817020000
test eax , eax ;0x0042c7a7 : 85c0
jne Label42cc7f ;0x0042c7a9 : 0f85d0040000
mov esi , ebx ;0x0042c7af : 8bf3
mov dword ptr [ ebp - 16 ] , eax ;0x0042c7b1 : 8945f0
call Fun435040 ;0x0042c7b4 : e887880000
mov ecx , dword ptr [ Data939390 ] ;0x0042c7b9 : 8b0d90939300
test ecx , ecx ;0x0042c7bf : 85c9
mov dword ptr [ ebp - 32 ] , eax ;0x0042c7c1 : 8945e0
jne Label598a24 ;0x0042c7c4 : 0f855ac21600
Label42c7ca ::
mov ecx , dword ptr [ ebp + 0114h ] ;0x0042c7ca : 8b8d14010000
;
; ------------------------------------------------------------------------------------------------------
; VFP 9.0 FIX - LOCATE A FILE SPECIFIED WITH AN ABSOLUTE PATH IN THE VISUAL FOXPRO SEARCH PATH
; September 2024
; ------------------------------------------------------------------------------------------------------
; CCB
;
; Locate a file specified with an absolute path in the Visual FoxPro search path.
;
; 2024/9/29, by ccb
;
mov eax , dword ptr [ ebp - 24 ]
mov dword ptr [ ebp - 24 ] , ecx
cmp byte ptr [ecx] , 00h
je Label42cc7f
cmp dword ptr vfpa_sys9173_data,0FFFFFFFEh
je Label42c7cb
cmp dword ptr vfpa_sys9173_data,0FFFFFFFFh
je Label42c7cc
cmp dword ptr vfpa_sys9173_data,00h
je Label42c7cd
jmp Label42c7d0
Label42c7cb ::
cmp word ptr [eax] , 05C5Ch
je Label42cc7f
cmp word ptr [ eax + 1 ] , 05C3Ah
je Label42cc7f
cmp byte ptr [ eax + 1 ] , 03Ah
je Label42cc7f
cmp byte ptr [eax] , 05Ch
je Label42cc7f
jmp Label42c7d0
Label42c7cc ::
cmp word ptr [eax] , 05C5Ch
je Label42cc7f
cmp word ptr [ eax + 1 ] , 05C3Ah
je Label42cc7f
cmp byte ptr [ eax + 1 ] , 03Ah
je Label42cc7f
jmp Label42c7d0
Label42c7cd ::
cmp word ptr [eax] , 05C5Ch
je Label42cc7f
cmp word ptr [ eax + 1 ] , 05C3Ah
je Label42cc7f
jmp Label42c7d0
Label42c7d0 ::
cmp byte ptr [ecx] , 00h ;0x0042c7d0 : 803900
mov dword ptr [ ebp - 24 ] , ecx ;0x0042c7d3 : 894de8
je Label42cc7f ;0x0042c7d6 : 0f84a3040000
xor edx , edx ;0x0042c7dc : 33d2
mov eax , ecx ;0x0042c7de : 8bc1
mov dword ptr [ ebp - 20 ] , edx ;0x0042c7e0 : 8955ec
mov edi , edi ;0x0042c7e3 : 8bff
Label42c7e5 ::
test edx , edx ;0x0042c7e5 : 85d2
jne Label42c805 ;0x0042c7e7 : 751c
mov bl , byte ptr [eax] ;0x0042c7e9 : 8a18
cmp bl , 03Bh ;0x0042c7eb : 80fb3b
je Label41380d ;0x0042c7ee : 0f841970feff
cmp bl , 02Ch ;0x0042c7f4 : 80fb2c
je Label41380d ;0x0042c7f7 : 0f841070feff
Label42c7fd ::
mov bl , byte ptr [ eax + 1 ] ;0x0042c7fd : 8a5801
inc eax ;0x0042c800 : 40
test bl , bl ;0x0042c801 : 84db
jne Label42c7e5 ;0x0042c803 : 75e0
Label42c805 ::
test edx , edx ;0x0042c805 : 85d2
mov dword ptr [ ebp - 20 ] , edx ;0x0042c807 : 8955ec
jne Label413814 ;0x0042c80a : 0f850470feff
mov eax , ecx ;0x0042c810 : 8bc1
lea esi , dword ptr [ eax + 1 ] ;0x0042c812 : 8d7001
lea esp , dword ptr [ esp ] ;0x0042c815 : 8d2424
Label42c818 ::
mov dl , byte ptr [eax] ;0x0042c818 : 8a10
inc eax ;0x0042c81a : 40
test dl , dl ;0x0042c81b : 84d2
jne Label42c818 ;0x0042c81d : 75f9
sub eax , esi ;0x0042c81f : 2bc6
Label42c821 ::
push eax ;0x0042c821 : 50
mov dword ptr [ ebp - 28 ] , eax ;0x0042c822 : 8945e4
lea eax , dword ptr [ ebp - 36 ] ;0x0042c825 : 8d45dc
push eax ;0x0042c828 : 50
call Fun434a5b ;0x0042c829 : e82d820000
Label42c82e ::
lea edx , dword ptr [ ebp - 40 ] ;0x0042c82e : 8d55d8
lea eax , dword ptr [ ebp - 128 ] ;0x0042c831 : 8d4580
call Fun42c27f ;0x0042c834 : e846faffff
pushd 00h ;0x0042c839 : 6a00
push eax ;0x0042c83b : 50
call Fun42c2be ;0x0042c83c : e87dfaffff
mov esi , eax ;0x0042c841 : 8bf0
add esp , 08h ;0x0042c843 : 83c408
test esi , esi ;0x0042c846 : 85f6
jne Label42c85b ;0x0042c848 : 7511
mov ecx , dword ptr [ ebp - 32 ] ;0x0042c84a : 8b4de0
push ecx ;0x0042c84d : 51
lea edx , dword ptr [ ebp - 36 ] ;0x0042c84e : 8d55dc
push edx ;0x0042c851 : 52
lea eax , dword ptr [ ebp - 8 ] ;0x0042c852 : 8d45f8
push eax ;0x0042c855 : 50
call Fun42c5c5 ;0x0042c856 : e86afdffff
Label42c85b ::
mov eax , dword ptr [ Data937220 ] ;0x0042c85b : a120729300
lea ecx , dword ptr [ ebp - 128 ] ;0x0042c860 : 8d4d80
cmp ecx , eax ;0x0042c863 : 3bc8
jne Label598a31 ;0x0042c865 : 0f85c6c11600
mov edx , dword ptr [ Data937220 ] ;0x0042c86b : 8b1520729300
mov eax , dword ptr [ edx + 76 ] ;0x0042c871 : 8b424c
cmp dword ptr [ ebp - 40 ] , eax ;0x0042c874 : 3945d8
mov dword ptr [ Data937220 ] , eax ;0x0042c877 : a320729300
jne Label598a3b ;0x0042c87c : 0f85b9c11600
test esi , esi ;0x0042c882 : 85f6
jne Label598a45 ;0x0042c884 : 0f85bbc11600
Label42c88a ::
mov eax , dword ptr [ ebp + 0118h ] ;0x0042c88a : 8b8518010000
and eax , 01h ;0x0042c890 : 83e001
push eax ;0x0042c893 : 50
lea ecx , dword ptr [ ebp - 8 ] ;0x0042c894 : 8d4df8
push ecx ;0x0042c897 : 51
call Fun42c9be ;0x0042c898 : e821010000
test eax , eax ;0x0042c89d : 85c0
mov dword ptr [ ebp - 16 ] , eax ;0x0042c89f : 8945f0
jne Label598a67 ;0x0042c8a2 : 0f85bfc11600
Label42c8a8 ::
mov eax , dword ptr [ ebp - 20 ] ;0x0042c8a8 : 8b45ec
test eax , eax ;0x0042c8ab : 85c0
jne Label41381d ;0x0042c8ad : 0f856a6ffeff
mov ebx , dword ptr [ ebp - 12 ] ;0x0042c8b3 : 8b5df4
jmp Label42cc7f ;0x0042c8b6 : e9c4030000
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_vfp9fix28.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix354.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix100.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix102.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix103.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix287.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
2, microsoft.com:
https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats
3, foxite.com:
https://www.foxite.com/archives/font-problem-0000364891.htm
https://www.foxite.com/archives/data-path-disappears-after-compiling-0000304279.htm
4, tek-tips.com:
https://www.tek-tips.com/threads/both-sys-2000-and-file-doesnt-wotk-vfp6.1268516/
https://www.tek-tips.com/threads/file-function-anamoly.392654/
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|