--------------------------------------------------------------------------------------------
                      [BUG/PRB.] VFP 9.0 FIX - THE MAXIMUM NUMBER OF THE RETURN VALUE OF THE VALID EVENT
                                December 2024
                 --------------------------------------------------------------------------------------------
                                     CCB



1. BUG:

     In vfp9 (and vfp6, vfp7, vfp8), sometimes the Valid event returns a BIG random number, VFP will enter an infinite loop.

     In VFP Advanced, if the absolute value of the return value of the Valid event > the maximum number of the return value of the Valid event,
     VFP will reset the return value of the Valid event to 1, the next control will get the focus.

     The bug occurs in the Valid event for the following controls:
     CheckBox control
     ComboBox control
     CommandButton control
     CommandGroup control
     EditBox control
     Grid control
     ListBox control
     OptionButton control
     OptionGroup control
     Spinner control
     TextBox control


2. CAUSE:

     There are some BUGs in the following code.


3. RESOLUTION:

     We can write some code to fix the BUG.

     Fun8ce3bc :: ; proc near
             push ebp                                                        ;0x008ce3bc :        55
             lea ebp ,  dword ptr [ esp - 96 ]                               ;0x008ce3bd :        8d6c24a0
             sub esp , 094h                                                  ;0x008ce3c1 :        81ec94000000
             mov  eax , dword ptr [ ebp + 112 ]                              ;0x008ce3c7 :        8b4570
             push ebx                                                        ;0x008ce3ca :        53
             xor ebx , ebx                                                   ;0x008ce3cb :        33db
             cmp eax , ebx                                                   ;0x008ce3cd :        3bc3
             push esi                                                        ;0x008ce3cf :        56
             push edi                                                        ;0x008ce3d0 :        57
             mov  edi , dword ptr [ ebp + 108 ]                              ;0x008ce3d1 :        8b7d6c
             mov  dword ptr [ ebp + 84 ] , ebx                               ;0x008ce3d4 :        895d54
             mov  dword ptr [ ebp + 80 ] , ebx                               ;0x008ce3d7 :        895d50
             mov  dword ptr [ ebp + 76 ] , offset Fun7f245a                          ;0x008ce3da :        c7454c5a247f00
             jnl Label8ce3f8                                                 ;0x008ce3e1 :        7d15
             neg eax                                                         ;0x008ce3e3 :        f7d8
             mov  dword ptr [ ebp + 76 ] , offset Label7f246d                          ;0x008ce3e5 :        c7454c6d247f00
             mov  dword ptr [ ebp + 112 ] , eax                              ;0x008ce3ec :        894570
             mov  dword ptr [ ebp + 60 ] , 01h                               ;0x008ce3ef :        c7453c01000000
             jmp Label8ce3fb                                                 ;0x008ce3f6 :        eb03

     Label8ce3f8 ::
             mov  dword ptr [ ebp + 60 ] , ebx                               ;0x008ce3f8 :        895d3c

     Label8ce3fb ::
             cmp  dword ptr [ ebp + 116 ] , ebx                              ;0x008ce3fb :        395d74
             je Label8ce4da                                                  ;0x008ce3fe :        0f84d6000000
             mov esi , 032Fh                                                 ;0x008ce404 :        be2f030000
             mov eax , edi                                                   ;0x008ce409 :        8bc7
             call Fun5261a1                                                  ;0x008ce40b :        e8917dc5ff
             mov  edx , dword ptr [ Data9388d8 ]                             ;0x008ce410 :        8b15d8889300
             mov esi , eax                                                   ;0x008ce416 :        8bf0
             cmp esi , ebx                                                   ;0x008ce418 :        3bf3
             mov  dword ptr [ ebp + 92 ] , esi                               ;0x008ce41a :        89755c
             je Label8ce43c                                                  ;0x008ce41d :        741d
             xor ecx , ecx                                                   ;0x008ce41f :        33c9
             lea eax ,  dword ptr [ edx - 1 ]                                ;0x008ce421 :        8d42ff
             cmp eax , ebx                                                   ;0x008ce424 :        3bc3
             setle cl                                                        ;0x008ce426 :        0f9ec1
             dec ecx                                                         ;0x008ce429 :        49
             and eax , ecx                                                   ;0x008ce42a :        23c1
             cmp  esi , dword ptr [ 4 * eax + offset Data93d720 ]                     ;0x008ce42c :        3b348520d79300
             jne Label8ce43c                                                 ;0x008ce433 :        7507
             mov  dword ptr [ ebp + 80 ] , 010h                              ;0x008ce435 :        c7455010000000

     Label8ce43c ::
             cmp edx , ebx                                                   ;0x008ce43c :        3bd3
             mov  ecx , dword ptr [ Data938308 ]                             ;0x008ce43e :        8b0d08839300
             je Label8ce467                                                  ;0x008ce444 :        7421
             cmp ecx , ebx                                                   ;0x008ce446 :        3bcb
             jle Label8ce467                                                 ;0x008ce448 :        7e1d
             lea eax ,  dword ptr [ edx - 1 ]                                ;0x008ce44a :        8d42ff
             xor edx , edx                                                   ;0x008ce44d :        33d2
             cmp eax , ebx                                                   ;0x008ce44f :        3bc3
             setle dl                                                        ;0x008ce451 :        0f9ec2
             dec edx                                                         ;0x008ce454 :        4a
             and eax , edx                                                   ;0x008ce455 :        23c2
             cmp  esi , dword ptr [ 4 * eax + offset Data93d720 ]                     ;0x008ce457 :        3b348520d79300
             jne Label8ce467                                                 ;0x008ce45e :        7507
             mov eax , 01h                                                   ;0x008ce460 :        b801000000
             jmp Label8ce469                                                 ;0x008ce465 :        eb02

     Label8ce467 ::
             xor eax , eax                                                   ;0x008ce467 :        33c0

     Label8ce469 ::
             cmp eax , ebx                                                   ;0x008ce469 :        3bc3
             je Label8ce4a9                                                  ;0x008ce46b :        743c
             cmp ecx , 01h                                                   ;0x008ce46d :        83f901
             mov  dword ptr [ ebp + 112 ] , ecx                              ;0x008ce470 :        894d70
             jg Label8ce47c                                                  ;0x008ce473 :        7f07
             mov  dword ptr [ ebp + 112 ] , 01h                              ;0x008ce475 :        c7457001000000

     Label8ce47c ::
             mov edi , esi                                                   ;0x008ce47c :        8bfe
             pushd 00h                                                       ;0x008ce47e :        6a00
             mov edx , 0135h                                                 ;0x008ce480 :        ba35010000
             mov ecx , esi                                                   ;0x008ce485 :        8bce
             mov  dword ptr [ Data938308 ] , 0FFFFFFFFh                      ;0x008ce487 :        c70508839300ffffffff
             mov  dword ptr [ ebp + 108 ] , edi                              ;0x008ce491 :        897d6c
             call Fun436ddb                                                  ;0x008ce494 :        e84289b6ff
             mov  dword ptr [ ebp + 88 ] , eax                               ;0x008ce499 :        894558
             or  dword ptr [ ebp + 80 ] , 02h                                ;0x008ce49c :        834d5002
             mov  dword ptr [ ebp + 76 ] , offset Fun7f245a                          ;0x008ce4a0 :        c7454c5a247f00
             jmp Label8ce4e9                                                 ;0x008ce4a7 :        eb40

     Label8ce4a9 ::
             cmp esi , ebx                                                   ;0x008ce4a9 :        3bf3
             jne Label8ce4c7                                                 ;0x008ce4ab :        751a
             mov esi , 0332h                                                 ;0x008ce4ad :        be32030000
             mov eax , edi                                                   ;0x008ce4b2 :        8bc7
             mov  dword ptr [ ebp + 88 ] , 01h                               ;0x008ce4b4 :        c7455801000000
             call Fun5261a1                                                  ;0x008ce4bb :        e8e17cc5ff
             mov esi , eax                                                   ;0x008ce4c0 :        8bf0
             mov  dword ptr [ ebp + 92 ] , esi                               ;0x008ce4c2 :        89755c
             jmp Label8ce4e9                                                 ;0x008ce4c5 :        eb22

     Label8ce4c7 ::
             pushd 00h                                                       ;0x008ce4c7 :        6a00
             mov edx , 0135h                                                 ;0x008ce4c9 :        ba35010000
             mov ecx , esi                                                   ;0x008ce4ce :        8bce
             call Fun436ddb                                                  ;0x008ce4d0 :        e80689b6ff
             mov  dword ptr [ ebp + 88 ] , eax                               ;0x008ce4d5 :        894558
             jmp Label8ce4e9                                                 ;0x008ce4d8 :        eb0f

     Label8ce4da ::
             mov  eax , dword ptr [ ebp + 104 ]                              ;0x008ce4da :        8b4568
             mov  dword ptr [ ebp + 88 ] , 01h                               ;0x008ce4dd :        c7455801000000
             mov  dword ptr [ ebp + 92 ] , eax                               ;0x008ce4e4 :        89455c
             mov esi , eax                                                   ;0x008ce4e7 :        8bf0

     Label8ce4e9 ::
             mov  ebx , dword ptr [ ebp + 104 ]                              ;0x008ce4e9 :        8b5d68
             cmp edi , ebx                                                   ;0x008ce4ec :        3bfb
             je Label8ce4f9                                                  ;0x008ce4ee :        7409
             cmp edi , esi                                                   ;0x008ce4f0 :        3bfe
             je Label8ce4f9                                                  ;0x008ce4f2 :        7405
             mov  dword ptr [ ebp + 84 ] , edi                               ;0x008ce4f4 :        897d54
             jmp Label8ce4fe                                                 ;0x008ce4f7 :        eb05

     Label8ce4f9 ::
             mov edi , esi                                                   ;0x008ce4f9 :        8bfe
             mov  dword ptr [ ebp + 108 ] , edi                              ;0x008ce4fb :        897d6c

     Label8ce4fe ::
             mov  ecx , dword ptr [ ebp + 116 ]                              ;0x008ce4fe :        8b4d74
             xor eax , eax                                                   ;0x008ce501 :        33c0
             cmp ecx , eax                                                   ;0x008ce503 :        3bc8
             mov  dword ptr [ ebp + 68 ] , eax                               ;0x008ce505 :        894544
             mov  dword ptr [ ebp + 72 ] , eax                               ;0x008ce508 :        894548
             je Label8ce553                                                  ;0x008ce50b :        7446
             push eax                                                        ;0x008ce50d :        50
             mov edx , 01D8h                                                 ;0x008ce50e :        bad8010000
             mov ecx , ebx                                                   ;0x008ce513 :        8bcb
             call Fun436ddb                                                  ;0x008ce515 :        e8c188b6ff
             pushd 0FFFFFFFFh                                                ;0x008ce51a :        6aff
             pushd 04h                                                       ;0x008ce51c :        6a04
             mov  dword ptr [ ebp + 68 ] , eax                               ;0x008ce51e :        894544
             mov  dword ptr [ ebp + 72 ] , eax                               ;0x008ce521 :        894548
             mov eax ,  dword ptr [ Data9388dc ]                             ;0x008ce524 :        a1dc889300
             lea ecx ,  dword ptr [ ebp + 40 ]                               ;0x008ce529 :        8d4d28
             push ecx                                                        ;0x008ce52c :        51
             lea edx ,  dword ptr [ ebx + 4 * ebx ]                          ;0x008ce52d :        8d149b
             shl edx , 05h                                                   ;0x008ce530 :        c1e205
             mov  ecx , dword ptr [ edx + eax + 116 ]                        ;0x008ce533 :        8b4c0274
             push ecx                                                        ;0x008ce537 :        51
             pushd 00h                                                       ;0x008ce538 :        6a00
             pushd 0FFFFFFFFh                                                ;0x008ce53a :        6aff
             pushd 01D8h                                                     ;0x008ce53c :        68d8010000
             push ebx                                                        ;0x008ce541 :        53
             mov  dword ptr [ ebp + 40 ] , 00h                               ;0x008ce542 :        c7452800000000
             call Fun41c715                                                  ;0x008ce549 :        e8c7e1b4ff
             add esp , 020h                                                  ;0x008ce54e :        83c420
             xor eax , eax                                                   ;0x008ce551 :        33c0

     Label8ce553 ::
             mov  ebx , dword ptr [ Data9388dc ]                             ;0x008ce553 :        8b1ddc889300
             mov  dword ptr [ ebp + 64 ] , eax                               ;0x008ce559 :        894540

     Label8ce55c ::
             mov  eax , dword ptr [ ebp + 68 ]                               ;0x008ce55c :        8b4544
             test eax , eax                                                  ;0x008ce55f :        85c0
             je Label8ce5e0                                                  ;0x008ce561 :        747d
             mov  eax , dword ptr [ ebp + 112 ]                              ;0x008ce563 :        8b4570
             cmp eax , 01h                                                   ;0x008ce566 :        83f801
             je Label8ce570                                                  ;0x008ce569 :        7405
             cmp eax , 0FFFFFFFFh                                            ;0x008ce56b :        83f8ff
             jne Label8ce5e0                                                 ;0x008ce56e :        7570

     Label8ce570 ::
             cmp  dword ptr [ Data939528 ] , 01h                             ;0x008ce570 :        833d2895930001
             jne Label8ce5d9                                                 ;0x008ce577 :        7560
             mov  eax , dword ptr [ ebp + 84 ]                               ;0x008ce579 :        8b4554
             test eax , eax                                                  ;0x008ce57c :        85c0
             je Label8ce5d9                                                  ;0x008ce57e :        7459
             lea edx ,  dword ptr [ eax + 4 * eax ]                          ;0x008ce580 :        8d1480
             shl edx , 05h                                                   ;0x008ce583 :        c1e205
             mov  eax , dword ptr [ ebx + edx + 24 ]                         ;0x008ce586 :        8b441318
             test eax , eax                                                  ;0x008ce58a :        85c0
             je Label8ce5d9                                                  ;0x008ce58c :        744b
             mov edx , 034Ah                                                 ;0x008ce58e :        ba4a030000

     Label8ce593 ::
             lea ecx ,  dword ptr [ eax + 4 * eax ]                          ;0x008ce593 :        8d0c80
             shl ecx , 05h                                                   ;0x008ce596 :        c1e105
             add ecx , ebx                                                   ;0x008ce599 :        03cb
             cmp  word ptr [ ecx + 16 ] , dx                                 ;0x008ce59b :        66395110
             je Label8ce5a8                                                  ;0x008ce59f :        7407
             mov  eax , dword ptr [ ecx + 24 ]                               ;0x008ce5a1 :        8b4118
             test eax , eax                                                  ;0x008ce5a4 :        85c0
             jne Label8ce593                                                 ;0x008ce5a6 :        75eb

     Label8ce5a8 ::
             test eax , eax                                                  ;0x008ce5a8 :        85c0
             je Label8ce5d9                                                  ;0x008ce5aa :        742d
             mov  ecx , dword ptr [ ebp + 60 ]                               ;0x008ce5ac :        8b4d3c
             lea edx ,  dword ptr [ eax + 4 * eax ]                          ;0x008ce5af :        8d1480
             shl edx , 05h                                                   ;0x008ce5b2 :        c1e205
             mov  eax , dword ptr [ edx + ebx + 92 ]                         ;0x008ce5b5 :        8b441a5c
             xor edi , edi                                                   ;0x008ce5b9 :        33ff
             test ecx , ecx                                                  ;0x008ce5bb :        85c9
             jne Label8ce5cd                                                 ;0x008ce5bd :        750e
             test eax , eax                                                  ;0x008ce5bf :        85c0
             je Label8ce5d6                                                  ;0x008ce5c1 :        7413
             mov  eax , dword ptr [eax]                                      ;0x008ce5c3 :        8b00
             mov  ecx , dword ptr [eax]                                      ;0x008ce5c5 :        8b08
             mov  edi , dword ptr [ eax + 4 * ecx + 4 ]                      ;0x008ce5c7 :        8b7c8804
             jmp Label8ce5d6                                                 ;0x008ce5cb :        eb09

     Label8ce5cd ::
             test eax , eax                                                  ;0x008ce5cd :        85c0
             je Label8ce5d6                                                  ;0x008ce5cf :        7405
             mov  eax , dword ptr [eax]                                      ;0x008ce5d1 :        8b00
             mov  edi , dword ptr [ eax + 8 ]                                ;0x008ce5d3 :        8b7808

     Label8ce5d6 ::
             mov  dword ptr [ ebp + 108 ] , edi                              ;0x008ce5d6 :        897d6c

     Label8ce5d9 ::
             mov  dword ptr [ ebp + 68 ] , 00h                               ;0x008ce5d9 :        c7454400000000

     Label8ce5e0 ::
             test edi , edi                                                  ;0x008ce5e0 :        85ff
             mov  dword ptr [ ebp + 44 ] , edi                               ;0x008ce5e2 :        897d2c
             je Label8ce61b                                                  ;0x008ce5e5 :        7434
             mov  esi , dword ptr [ ebp + 80 ]                               ;0x008ce5e7 :        8b7550

     Label8ce5ea ::
             mov  eax , dword ptr [ ebp + 112 ]                              ;0x008ce5ea :        8b4570


     ;
     ;                 ---------------------------------------------------------------------------------
     ;                      VFP 9.0 FIX - THE MAXIMUM NUMBER OF THE RETURN VALUE OF THE VALID EVENT
     ;                                December 2024
     ;                 ---------------------------------------------------------------------------------
     ;                                     CCB
     ;
     ; In vfp9, sometimes the Valid event returns a BIG random number,
     ; VFP will enter an infinite loop.
     ; In VFP Advanced, if the absolute value of the return value of the Valid event > the maximum number of the return value of the Valid event,
     ; VFP will reset the return value of the Valid event to 1, the next control will get the focus.
     ;
     ; 2024/12/14, by ccb
     ;

             test eax,eax
             jl Label8ce61b
             cmp eax,dword ptr vfpa_sys9177_data
             jle Label8ce5ed
             mov eax,01h


     Label8ce5ed ::
             mov ecx , eax                                                   ;0x008ce5ed :        8bc8
             dec eax                                                         ;0x008ce5ef :        48
             test ecx , ecx                                                  ;0x008ce5f0 :        85c9
             mov  dword ptr [ ebp + 112 ] , eax                              ;0x008ce5f2 :        894570
             je Label8ce61b                                                  ;0x008ce5f5 :        7424
             mov  eax , dword ptr [ ebp + 88 ]                               ;0x008ce5f7 :        8b4558
             test eax , eax                                                  ;0x008ce5fa :        85c0
             mov eax , esi                                                   ;0x008ce5fc :        8bc6
             je Label8ce603                                                  ;0x008ce5fe :        7403
             or eax , 01h                                                    ;0x008ce600 :        83c801

     Label8ce603 ::
             mov  ecx , dword ptr [ ebp + 92 ]                               ;0x008ce603 :        8b4d5c
             push eax                                                        ;0x008ce606 :        50
             mov edx , edi                                                   ;0x008ce607 :        8bd7
             call  dword ptr [ ebp + 76 ]                                    ;0x008ce609 :        ff554c
             mov  ebx , dword ptr [ Data9388dc ]                             ;0x008ce60c :        8b1ddc889300
             mov edi , eax                                                   ;0x008ce612 :        8bf8
             test edi , edi                                                  ;0x008ce614 :        85ff
             mov  dword ptr [ ebp + 108 ] , edi                              ;0x008ce616 :        897d6c
             jne Label8ce5ea                                                 ;0x008ce619 :        75cf

     Label8ce61b ::
             xor eax , eax                                                   ;0x008ce61b :        33c0
             cmp edi , eax                                                   ;0x008ce61d :        3bf8
             mov  dword ptr [ ebp + 112 ] , 01h                              ;0x008ce61f :        c7457001000000
             mov  dword ptr [ ebp + 52 ] , eax                               ;0x008ce626 :        894534
             mov  dword ptr [ ebp + 56 ] , eax                               ;0x008ce629 :        894538
             je Label8ce72f                                                  ;0x008ce62c :        0f84fd000000
             mov  eax , dword ptr [ ebp + 72 ]                               ;0x008ce632 :        8b4548
             test eax , eax                                                  ;0x008ce635 :        85c0
             je Label8ce657                                                  ;0x008ce637 :        741e
             lea edx ,  dword ptr [ edi + 4 * edi ]                          ;0x008ce639 :        8d14bf
             shl edx , 05h                                                   ;0x008ce63c :        c1e205
             cmp  word ptr [ edx + ebx + 16 ] , 033Ah                        ;0x008ce63f :        66817c1a103a03
             lea eax ,  dword ptr [ edx + ebx ]                              ;0x008ce646 :        8d041a
             jne Label8ce657                                                 ;0x008ce649 :        750c
             mov  eax , dword ptr [ eax + 108 ]                              ;0x008ce64b :        8b406c
             mov  eax , dword ptr [eax]                                      ;0x008ce64e :        8b00
             or  dword ptr [ eax + 96 ] , 010000h                            ;0x008ce650 :        81486000000100

     Label8ce657 ::
             mov eax ,  dword ptr [ Data9370e8 ]                             ;0x008ce657 :        a1e8709300
             mov  ecx , dword ptr [ Data937220 ]                             ;0x008ce65c :        8b0d20729300
             mov  dword ptr [ ebp + 24 ] , eax                               ;0x008ce662 :        894518
             test  byte ptr [ eax + 28 ] , 08h                               ;0x008ce665 :        f6401c08
             mov  dword ptr [ ebp + 48 ] , ecx                               ;0x008ce669 :        894d30
             je Label8ce67a                                                  ;0x008ce66c :        740c

     Label8ce66e ::
             sub eax , 038h                                                  ;0x008ce66e :        83e838
             mov  dword ptr [ ebp + 24 ] , eax                               ;0x008ce671 :        894518
             test  byte ptr [ eax + 28 ] , 08h                               ;0x008ce674 :        f6401c08
             jne Label8ce66e                                                 ;0x008ce678 :        75f4

     Label8ce67a ::
             mov  edx , dword ptr [ Data9370f0 ]                             ;0x008ce67a :        8b15f0709300
             mov eax ,  dword ptr [ Data9370ec ]                             ;0x008ce680 :        a1ec709300
             mov  dword ptr [ ebp + 28 ] , ecx                               ;0x008ce685 :        894d1c
             lea ecx ,  dword ptr [ ebp - 48 ]                               ;0x008ce688 :        8d4dd0
             mov  dword ptr [ ebp + 16 ] , edx                               ;0x008ce68b :        895510
             mov edx , ecx                                                   ;0x008ce68e :        8bd1
             pushd 00h                                                       ;0x008ce690 :        6a00
             push edx                                                        ;0x008ce692 :        52
             mov  dword ptr [ ebp + 20 ] , eax                               ;0x008ce693 :        894514
             mov  dword ptr [ Data937220 ] , ecx                             ;0x008ce696 :        890d20729300
             call Fun42c2be                                                  ;0x008ce69c :        e81ddcb5ff
             mov  edi , dword ptr [ ebp + 108 ]                              ;0x008ce6a1 :        8b7d6c
             mov esi , eax                                                   ;0x008ce6a4 :        8bf0
             add esp , 08h                                                   ;0x008ce6a6 :        83c408
             test esi , esi                                                  ;0x008ce6a9 :        85f6
             jne Label8ce6ba                                                 ;0x008ce6ab :        750d
             lea eax ,  dword ptr [ ebp + 32 ]                               ;0x008ce6ad :        8d4520
             push eax                                                        ;0x008ce6b0 :        50
             push edi                                                        ;0x008ce6b1 :        57
             call Fun47f58f                                                  ;0x008ce6b2 :        e8d80ebbff
             mov  dword ptr [ ebp + 56 ] , eax                               ;0x008ce6b7 :        894538

     Label8ce6ba ::
             mov eax ,  dword ptr [ Data937220 ]                             ;0x008ce6ba :        a120729300
             lea ecx ,  dword ptr [ ebp - 48 ]                               ;0x008ce6bf :        8d4dd0
             cmp ecx , eax                                                   ;0x008ce6c2 :        3bc8
             je Label8ce6d0                                                  ;0x008ce6c4 :        740a
             mov ecx , 0Eh                                                   ;0x008ce6c6 :        b90e000000
             call Fun544742                                                  ;0x008ce6cb :        e87260c7ff

     Label8ce6d0 ::
             mov  edx , dword ptr [ Data937220 ]                             ;0x008ce6d0 :        8b1520729300
             mov  eax , dword ptr [ edx + 76 ]                               ;0x008ce6d6 :        8b424c
             cmp  dword ptr [ ebp + 48 ] , eax                               ;0x008ce6d9 :        394530
             mov dword ptr [ Data937220 ] ,  eax                             ;0x008ce6dc :        a320729300
             je Label8ce6ed                                                  ;0x008ce6e1 :        740a
             mov ecx , 0Eh                                                   ;0x008ce6e3 :        b90e000000
             call Fun544742                                                  ;0x008ce6e8 :        e85560c7ff

     Label8ce6ed ::
             mov  eax , dword ptr [ ebp + 32 ]                               ;0x008ce6ed :        8b4520
             test eax , eax                                                  ;0x008ce6f0 :        85c0
             mov  ebx , dword ptr [ Data9388dc ]                             ;0x008ce6f2 :        8b1ddc889300
             je Label8ce701                                                  ;0x008ce6f8 :        7407
             xor edi , edi                                                   ;0x008ce6fa :        33ff
             mov  dword ptr [ ebp + 108 ] , edi                              ;0x008ce6fc :        897d6c
             jmp Label8ce724                                                 ;0x008ce6ff :        eb23

     Label8ce701 ::
             mov  eax , dword ptr [ ebp + 72 ]                               ;0x008ce701 :        8b4548
             test eax , eax                                                  ;0x008ce704 :        85c0
             je Label8ce724                                                  ;0x008ce706 :        741c
             lea eax ,  dword ptr [ edi + 4 * edi ]                          ;0x008ce708 :        8d04bf
             shl eax , 05h                                                   ;0x008ce70b :        c1e005
             add eax , ebx                                                   ;0x008ce70e :        03c3
             cmp  word ptr [ eax + 16 ] , 033Ah                              ;0x008ce710 :        668178103a03
             jne Label8ce724                                                 ;0x008ce716 :        750c
             mov  ecx , dword ptr [ eax + 108 ]                              ;0x008ce718 :        8b486c
             mov  eax , dword ptr [ecx]                                      ;0x008ce71b :        8b01
             and  dword ptr [ eax + 96 ] , 0FFFEFFFFh                        ;0x008ce71d :        816060fffffeff

     Label8ce724 ::
             test esi , esi                                                  ;0x008ce724 :        85f6
             je Label8ce72f                                                  ;0x008ce726 :        7407
             mov ecx , esi                                                   ;0x008ce728 :        8bce
             call Fun544742                                                  ;0x008ce72a :        e81360c7ff

     Label8ce72f ::
             test edi , edi                                                  ;0x008ce72f :        85ff
             je Label8ce75e                                                  ;0x008ce731 :        742b
             mov  eax , dword ptr [ ebp + 56 ]                               ;0x008ce733 :        8b4538
             test eax , eax                                                  ;0x008ce736 :        85c0
             je Label8ce75e                                                  ;0x008ce738 :        7424
             mov eax ,  dword ptr [ Data939528 ]                             ;0x008ce73a :        a128959300
             cmp eax , 01h                                                   ;0x008ce73f :        83f801
             je Label8ce7aa                                                  ;0x008ce742 :        7466
             test eax , eax                                                  ;0x008ce744 :        85c0
             je Label8ce7aa                                                  ;0x008ce746 :        7462
             cmp eax , 02h                                                   ;0x008ce748 :        83f802
             jne Label8ce75e                                                 ;0x008ce74b :        7511
             mov ecx , edi                                                   ;0x008ce74d :        8bcf
             call Fun4da504                                                  ;0x008ce74f :        e8b0bdc0ff
             test eax , eax                                                  ;0x008ce754 :        85c0
             jne Label8ce7aa                                                 ;0x008ce756 :        7552
             mov  ebx , dword ptr [ Data9388dc ]                             ;0x008ce758 :        8b1ddc889300

     Label8ce75e ::
             cmp  edi , dword ptr [ ebp + 44 ]                               ;0x008ce75e :        3b7d2c
             je Label8ce7d1                                                  ;0x008ce761 :        746e
             cmp  dword ptr [ Data939528 ] , 02h                             ;0x008ce763 :        833d2895930002
             jne Label8ce771                                                 ;0x008ce76a :        7505
             cmp  edi , dword ptr [ ebp + 64 ]                               ;0x008ce76c :        3b7d40
             je Label8ce7d8                                                  ;0x008ce76f :        7467

     Label8ce771 ::
             test edi , edi                                                  ;0x008ce771 :        85ff
             je Label8ce786                                                  ;0x008ce773 :        7411
             mov  eax , dword ptr [ ebp + 84 ]                               ;0x008ce775 :        8b4554
             test eax , eax                                                  ;0x008ce778 :        85c0
             jne Label8ce786                                                 ;0x008ce77a :        750a
             mov  dword ptr [ ebp + 84 ] , edi                               ;0x008ce77c :        897d54
             mov  dword ptr [ ebp + 52 ] , 01h                               ;0x008ce77f :        c7453401000000

     Label8ce786 ::
             mov  eax , dword ptr [ ebp + 64 ]                               ;0x008ce786 :        8b4540
             test eax , eax                                                  ;0x008ce789 :        85c0
             jne Label8ce790                                                 ;0x008ce78b :        7503
             mov  dword ptr [ ebp + 64 ] , edi                               ;0x008ce78d :        897d40

     Label8ce790 ::
             mov  eax , dword ptr [ ebp + 52 ]                               ;0x008ce790 :        8b4534
             test eax , eax                                                  ;0x008ce793 :        85c0
             jne Label8ce55c                                                 ;0x008ce795 :        0f85c1fdffff
             test edi , edi                                                  ;0x008ce79b :        85ff
             je Label8ce7dd                                                  ;0x008ce79d :        743e
             cmp  edi , dword ptr [ ebp + 84 ]                               ;0x008ce79f :        3b7d54
             jne Label8ce55c                                                 ;0x008ce7a2 :        0f85b4fdffff
             jmp Label8ce7dd                                                 ;0x008ce7a8 :        eb33

     Label8ce7aa ::
             pushd 00h                                                       ;0x008ce7aa :        6a00
             pushd 00h                                                       ;0x008ce7ac :        6a00
             pushd 00h                                                       ;0x008ce7ae :        6a00
             pushd 01h                                                       ;0x008ce7b0 :        6a01
             pushd 00h                                                       ;0x008ce7b2 :        6a00
             pushd 01C7h                                                     ;0x008ce7b4 :        68c7010000
             push edi                                                        ;0x008ce7b9 :        57
             call Fun43c117                                                  ;0x008ce7ba :        e858d9b6ff
             mov  ebx , dword ptr [ ebp + 120 ]                              ;0x008ce7bf :        8b5d78
             pushd 00h                                                       ;0x008ce7c2 :        6a00
             call Fun4da517                                                  ;0x008ce7c4 :        e84ebdc0ff
             mov  ebx , dword ptr [ Data9388dc ]                             ;0x008ce7c9 :        8b1ddc889300
             jmp Label8ce7dd                                                 ;0x008ce7cf :        eb0c

     Label8ce7d1 ::
             xor edi , edi                                                   ;0x008ce7d1 :        33ff
             mov  dword ptr [ ebp + 88 ] , edi                               ;0x008ce7d3 :        897d58
             jmp Label8ce7da                                                 ;0x008ce7d6 :        eb02

     Label8ce7d8 ::
             xor edi , edi                                                   ;0x008ce7d8 :        33ff

     Label8ce7da ::
             mov  dword ptr [ ebp + 108 ] , edi                              ;0x008ce7da :        897d6c

     Label8ce7dd ::
             mov  eax , dword ptr [ ebp + 116 ]                              ;0x008ce7dd :        8b4574
             test eax , eax                                                  ;0x008ce7e0 :        85c0
             je Label8ce87f                                                  ;0x008ce7e2 :        0f8497000000
             test edi , edi                                                  ;0x008ce7e8 :        85ff
             jne Label8ce87f                                                 ;0x008ce7ea :        0f858f000000
             mov  edi , dword ptr [ ebp + 88 ]                               ;0x008ce7f0 :        8b7d58
             test edi , edi                                                  ;0x008ce7f3 :        85ff
             je Label8ce819                                                  ;0x008ce7f5 :        7422
             mov eax ,  dword ptr [ Data9388d8 ]                             ;0x008ce7f7 :        a1d8889300
             test eax , eax                                                  ;0x008ce7fc :        85c0
             je Label8ce87f                                                  ;0x008ce7fe :        747f
             mov  esi , dword ptr [ ebp + 92 ]                               ;0x008ce800 :        8b755c
             dec eax                                                         ;0x008ce803 :        48
             xor edx , edx                                                   ;0x008ce804 :        33d2
             test eax , eax                                                  ;0x008ce806 :        85c0
             setle dl                                                        ;0x008ce808 :        0f9ec2
             dec edx                                                         ;0x008ce80b :        4a
             and eax , edx                                                   ;0x008ce80c :        23c2
             cmp  esi , dword ptr [ 4 * eax + offset Data93d720 ]                     ;0x008ce80e :        3b348520d79300
             jne Label8ce87f                                                 ;0x008ce815 :        7568
             jmp Label8ce81c                                                 ;0x008ce817 :        eb03

     Label8ce819 ::
             mov  esi , dword ptr [ ebp + 92 ]                               ;0x008ce819 :        8b755c

     Label8ce81c ::
             cmp  dword ptr [ Data939528 ] , 02h                             ;0x008ce81c :        833d2895930002
             jne Label8ce853                                                 ;0x008ce823 :        752e
             mov  eax , dword ptr [ ebp + 104 ]                              ;0x008ce825 :        8b4568
             mov  dword ptr [ Data939528 ] , 01h                             ;0x008ce828 :        c7052895930001000000
             call Fun7f2480                                                  ;0x008ce832 :        e8493cf2ff
             test eax , eax                                                  ;0x008ce837 :        85c0
             mov  dword ptr [ ebp + 108 ] , eax                              ;0x008ce839 :        89456c
             mov  dword ptr [ Data939528 ] , 02h                             ;0x008ce83c :        c7052895930002000000
             je Label8ce853                                                  ;0x008ce846 :        740b
             test edi , edi                                                  ;0x008ce848 :        85ff
             jne Label8ce87f                                                 ;0x008ce84a :        7533
             mov  eax , dword ptr [ ebp + 124 ]                              ;0x008ce84c :        8b457c
             test eax , eax                                                  ;0x008ce84f :        85c0
             je Label8ce87f                                                  ;0x008ce851 :        742c

     Label8ce853 ::
             pushd 0FFFFFFFFh                                                ;0x008ce853 :        6aff
             pushd 04h                                                       ;0x008ce855 :        6a04
             lea ecx ,  dword ptr [ esi + 4 * esi ]                          ;0x008ce857 :        8d0cb6
             lea eax ,  dword ptr [ ebp + 36 ]                               ;0x008ce85a :        8d4524
             push eax                                                        ;0x008ce85d :        50
             shl ecx , 05h                                                   ;0x008ce85e :        c1e105
             mov  dword ptr [ ebp + 36 ] , 01h                               ;0x008ce861 :        c7452401000000
             mov  edx , dword ptr [ ebx + ecx + 116 ]                        ;0x008ce868 :        8b540b74
             push edx                                                        ;0x008ce86c :        52
             pushd 00h                                                       ;0x008ce86d :        6a00
             pushd 0FFFFFFFFh                                                ;0x008ce86f :        6aff
             pushd 01B9h                                                     ;0x008ce871 :        68b9010000
             push esi                                                        ;0x008ce876 :        56
             call Fun41c715                                                  ;0x008ce877 :        e899deb4ff
             add esp , 020h                                                  ;0x008ce87c :        83c420

     Label8ce87f ::
             pop edi                                                         ;0x008ce87f :        5f
             pop esi                                                         ;0x008ce880 :        5e
             pop ebx                                                         ;0x008ce881 :        5b
             add ebp , 060h                                                  ;0x008ce882 :        83c560
             mov esp , ebp                                                   ;0x008ce885 :        8be5
             pop ebp                                                         ;0x008ce887 :        5d
             ret 018h                                                        ;0x008ce888 :        c21800


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_vfp9fix365.asp
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix16.asp
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix367.asp
     http://www.baiyujia.com/vfpdocuments/f_vfp9fix368.asp


6. OTHER:

     For reference only, there is no guarantees.

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