emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r103781: * src/bytecode.c (Fbyte_code


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r103781: * src/bytecode.c (Fbyte_code): CAR and CDR can GC.
Date: Wed, 30 Mar 2011 14:04:11 -0400
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 103781
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2011-03-30 14:04:11 -0400
message:
  * src/bytecode.c (Fbyte_code): CAR and CDR can GC.
modified:
  src/ChangeLog
  src/bytecode.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-03-30 13:35:37 +0000
+++ b/src/ChangeLog     2011-03-30 18:04:11 +0000
@@ -1,3 +1,7 @@
+2011-03-30  Stefan Monnier  <address@hidden>
+
+       * bytecode.c (Fbyte_code): CAR and CDR can GC.
+
 2011-03-30  Zachary Kanfer  <address@hidden>  (tiny change)
 
        * keyboard.c (Fexecute_extended_command): Do log the "suggest key

=== modified file 'src/bytecode.c'
--- a/src/bytecode.c    2011-03-17 02:18:00 +0000
+++ b/src/bytecode.c    2011-03-30 18:04:11 +0000
@@ -554,7 +554,16 @@
          {
            Lisp_Object v1;
            v1 = TOP;
-           TOP = CAR (v1);
+           if (CONSP (v1))
+             TOP = XCAR (v1);
+           else if (NILP (v1))
+             TOP = Qnil;
+           else
+             {
+               BEFORE_POTENTIAL_GC ();
+               wrong_type_argument (Qlistp, v1);
+               AFTER_POTENTIAL_GC ();
+             }
            break;
          }
 
@@ -580,7 +589,17 @@
          {
            Lisp_Object v1;
            v1 = TOP;
-           TOP = CDR (v1);
+           if (CONSP (v1))
+             TOP = XCDR (v1);
+           else if (NILP (v1))
+             TOP = Qnil;
+           else
+             {
+               BEFORE_POTENTIAL_GC ();
+               wrong_type_argument (Qlistp, v1);
+               AFTER_POTENTIAL_GC ();
+             }
+           break;
            break;
          }
 
@@ -911,13 +930,13 @@
            v1 = POP;
            v2 = TOP;
            CHECK_NUMBER (v2);
-           AFTER_POTENTIAL_GC ();
            op = XINT (v2);
            immediate_quit = 1;
            while (--op >= 0 && CONSP (v1))
              v1 = XCDR (v1);
            immediate_quit = 0;
            TOP = CAR (v1);
+           AFTER_POTENTIAL_GC ();
            break;
          }
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]