-------------------------------------------------------------------------------------------- [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. |