diff options
Diffstat (limited to 'src/bytecode.c')
| -rw-r--r-- | src/bytecode.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index ed58d18c618..0f7420c19ee 100644 --- a/src/bytecode.c +++ b/src/bytecode.c | |||
| @@ -841,9 +841,11 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 841 | { | 841 | { |
| 842 | Lisp_Object v2 = POP, v1 = TOP; | 842 | Lisp_Object v2 = POP, v1 = TOP; |
| 843 | CHECK_NUMBER (v1); | 843 | CHECK_NUMBER (v1); |
| 844 | EMACS_INT n = XINT (v1); | 844 | for (EMACS_INT n = XINT (v1); 0 < n && CONSP (v2); n--) |
| 845 | while (--n >= 0 && CONSP (v2)) | 845 | { |
| 846 | v2 = XCDR (v2); | 846 | v2 = XCDR (v2); |
| 847 | rarely_quit (n); | ||
| 848 | } | ||
| 847 | TOP = CAR (v2); | 849 | TOP = CAR (v2); |
| 848 | NEXT; | 850 | NEXT; |
| 849 | } | 851 | } |
| @@ -1273,9 +1275,11 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 1273 | /* Exchange args and then do nth. */ | 1275 | /* Exchange args and then do nth. */ |
| 1274 | Lisp_Object v2 = POP, v1 = TOP; | 1276 | Lisp_Object v2 = POP, v1 = TOP; |
| 1275 | CHECK_NUMBER (v2); | 1277 | CHECK_NUMBER (v2); |
| 1276 | EMACS_INT n = XINT (v2); | 1278 | for (EMACS_INT n = XINT (v2); 0 < n && CONSP (v1); n--) |
| 1277 | while (--n >= 0 && CONSP (v1)) | 1279 | { |
| 1278 | v1 = XCDR (v1); | 1280 | v1 = XCDR (v1); |
| 1281 | rarely_quit (n); | ||
| 1282 | } | ||
| 1279 | TOP = CAR (v1); | 1283 | TOP = CAR (v1); |
| 1280 | } | 1284 | } |
| 1281 | else | 1285 | else |