--------------------------------------------------------------------------------------------
                      [ENHANCED] VFP 9.0 FIX - THE MAXIMUM NUMBER OF CHARACTERS FOR THE SET PATH COMMAND
                                 January 2024
                 --------------------------------------------------------------------------------------------
                                    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.


5. REFERENCE WEBSITES:

     1, baiyujia.com:
     http://www.baiyujia.com
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix100.asp
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix102.asp


6. OTHER:

     For reference only, there is no guarantees.

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