Mercurial > emacs
comparison src/bytecode.c @ 67336:1eb416c4b163
(Fbyte_code): Avoid dangerous side effects in NILP argument.
| author | Ken Raeburn <raeburn@raeburn.org> |
|---|---|
| date | Tue, 06 Dec 2005 07:39:05 +0000 |
| parents | 098219e8d2e8 |
| children | 3bd95f4f2941 7beb78bc1f8e |
comparison
equal
deleted
inserted
replaced
| 67335:a4a1c5b73301 | 67336:1eb416c4b163 |
|---|---|
| 522 PUSH (v2); | 522 PUSH (v2); |
| 523 break; | 523 break; |
| 524 } | 524 } |
| 525 | 525 |
| 526 case Bgotoifnil: | 526 case Bgotoifnil: |
| 527 MAYBE_GC (); | 527 { |
| 528 op = FETCH2; | 528 Lisp_Object v1; |
| 529 if (NILP (POP)) | 529 MAYBE_GC (); |
| 530 { | 530 op = FETCH2; |
| 531 BYTE_CODE_QUIT; | 531 v1 = POP; |
| 532 CHECK_RANGE (op); | 532 if (NILP (v1)) |
| 533 stack.pc = stack.byte_string_start + op; | 533 { |
| 534 } | 534 BYTE_CODE_QUIT; |
| 535 break; | 535 CHECK_RANGE (op); |
| 536 stack.pc = stack.byte_string_start + op; | |
| 537 } | |
| 538 break; | |
| 539 } | |
| 536 | 540 |
| 537 case Bcar: | 541 case Bcar: |
| 538 { | 542 { |
| 539 Lisp_Object v1; | 543 Lisp_Object v1; |
| 540 v1 = TOP; | 544 v1 = TOP; |
| 728 CHECK_RANGE (op); | 732 CHECK_RANGE (op); |
| 729 stack.pc = stack.byte_string_start + op; | 733 stack.pc = stack.byte_string_start + op; |
| 730 break; | 734 break; |
| 731 | 735 |
| 732 case Bgotoifnonnil: | 736 case Bgotoifnonnil: |
| 733 MAYBE_GC (); | 737 { |
| 734 op = FETCH2; | 738 Lisp_Object v1; |
| 735 if (!NILP (POP)) | 739 MAYBE_GC (); |
| 736 { | 740 op = FETCH2; |
| 737 BYTE_CODE_QUIT; | 741 v1 = POP; |
| 738 CHECK_RANGE (op); | 742 if (!NILP (v1)) |
| 739 stack.pc = stack.byte_string_start + op; | 743 { |
| 740 } | 744 BYTE_CODE_QUIT; |
| 741 break; | 745 CHECK_RANGE (op); |
| 746 stack.pc = stack.byte_string_start + op; | |
| 747 } | |
| 748 break; | |
| 749 } | |
| 742 | 750 |
| 743 case Bgotoifnilelsepop: | 751 case Bgotoifnilelsepop: |
| 744 MAYBE_GC (); | 752 MAYBE_GC (); |
| 745 op = FETCH2; | 753 op = FETCH2; |
| 746 if (NILP (TOP)) | 754 if (NILP (TOP)) |
| 769 BYTE_CODE_QUIT; | 777 BYTE_CODE_QUIT; |
| 770 stack.pc += (int) *stack.pc - 127; | 778 stack.pc += (int) *stack.pc - 127; |
| 771 break; | 779 break; |
| 772 | 780 |
| 773 case BRgotoifnil: | 781 case BRgotoifnil: |
| 774 MAYBE_GC (); | 782 { |
| 775 if (NILP (POP)) | 783 Lisp_Object v1; |
| 776 { | 784 MAYBE_GC (); |
| 777 BYTE_CODE_QUIT; | 785 v1 = POP; |
| 778 stack.pc += (int) *stack.pc - 128; | 786 if (NILP (v1)) |
| 779 } | 787 { |
| 780 stack.pc++; | 788 BYTE_CODE_QUIT; |
| 781 break; | 789 stack.pc += (int) *stack.pc - 128; |
| 790 } | |
| 791 stack.pc++; | |
| 792 break; | |
| 793 } | |
| 782 | 794 |
| 783 case BRgotoifnonnil: | 795 case BRgotoifnonnil: |
| 784 MAYBE_GC (); | 796 { |
| 785 if (!NILP (POP)) | 797 Lisp_Object v1; |
| 786 { | 798 MAYBE_GC (); |
| 787 BYTE_CODE_QUIT; | 799 v1 = POP; |
| 788 stack.pc += (int) *stack.pc - 128; | 800 if (!NILP (v1)) |
| 789 } | 801 { |
| 790 stack.pc++; | 802 BYTE_CODE_QUIT; |
| 791 break; | 803 stack.pc += (int) *stack.pc - 128; |
| 804 } | |
| 805 stack.pc++; | |
| 806 break; | |
| 807 } | |
| 792 | 808 |
| 793 case BRgotoifnilelsepop: | 809 case BRgotoifnilelsepop: |
| 794 MAYBE_GC (); | 810 MAYBE_GC (); |
| 795 op = *stack.pc++; | 811 op = *stack.pc++; |
| 796 if (NILP (TOP)) | 812 if (NILP (TOP)) |
