diff options
| author | Karoly Lorentey | 2004-10-31 02:05:24 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-10-31 02:05:24 +0000 |
| commit | e0bc17abe6979d607e8de4684dddb96e53c60065 (patch) | |
| tree | b7cb7bc5df9f12138937fd958cdf4b9c2d19ee3a /src/lisp.h | |
| parent | f158167a84475d5fc41931531406821e6413afd7 (diff) | |
| parent | 707994d2626cf0f01c3ece4028d73835068d64dc (diff) | |
| download | emacs-e0bc17abe6979d607e8de4684dddb96e53c60065.tar.gz emacs-e0bc17abe6979d607e8de4684dddb96e53c60065.zip | |
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-639
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-640
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-641
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-642
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-643
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-644
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-645
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-646
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-647
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-648
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-649
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-650
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-651
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-652
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-59
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-60
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-61
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-62
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-63
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-263
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/lisp.h b/src/lisp.h index ce0fdf96e43..55664cb8ca3 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -3265,7 +3265,7 @@ extern Lisp_Object Vdirectory_sep_char; | |||
| 3265 | extern Lisp_Object safe_alloca_unwind (Lisp_Object); | 3265 | extern Lisp_Object safe_alloca_unwind (Lisp_Object); |
| 3266 | 3266 | ||
| 3267 | #define USE_SAFE_ALLOCA \ | 3267 | #define USE_SAFE_ALLOCA \ |
| 3268 | int sa_count = SPECPDL_INDEX () | 3268 | int sa_count = SPECPDL_INDEX (), sa_must_free = 0 |
| 3269 | 3269 | ||
| 3270 | /* SAFE_ALLOCA allocates a simple buffer. */ | 3270 | /* SAFE_ALLOCA allocates a simple buffer. */ |
| 3271 | 3271 | ||
| @@ -3276,6 +3276,7 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object); | |||
| 3276 | else \ | 3276 | else \ |
| 3277 | { \ | 3277 | { \ |
| 3278 | buf = (type) xmalloc (size); \ | 3278 | buf = (type) xmalloc (size); \ |
| 3279 | sa_must_free++; \ | ||
| 3279 | record_unwind_protect (safe_alloca_unwind, \ | 3280 | record_unwind_protect (safe_alloca_unwind, \ |
| 3280 | make_save_value (buf, 0)); \ | 3281 | make_save_value (buf, 0)); \ |
| 3281 | } \ | 3282 | } \ |
| @@ -3283,10 +3284,12 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object); | |||
| 3283 | 3284 | ||
| 3284 | /* SAFE_FREE frees xmalloced memory and enables GC as needed. */ | 3285 | /* SAFE_FREE frees xmalloced memory and enables GC as needed. */ |
| 3285 | 3286 | ||
| 3286 | #define SAFE_FREE(size) \ | 3287 | #define SAFE_FREE() \ |
| 3287 | do { \ | 3288 | do { \ |
| 3288 | if ((size) >= MAX_ALLOCA) \ | 3289 | if (sa_must_free) { \ |
| 3290 | sa_must_free = 0; \ | ||
| 3289 | unbind_to (sa_count, Qnil); \ | 3291 | unbind_to (sa_count, Qnil); \ |
| 3292 | } \ | ||
| 3290 | } while (0) | 3293 | } while (0) |
| 3291 | 3294 | ||
| 3292 | 3295 | ||
| @@ -3303,17 +3306,11 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object); | |||
| 3303 | buf = (Lisp_Object *) xmalloc (size_); \ | 3306 | buf = (Lisp_Object *) xmalloc (size_); \ |
| 3304 | arg_ = make_save_value (buf, nelt); \ | 3307 | arg_ = make_save_value (buf, nelt); \ |
| 3305 | XSAVE_VALUE (arg_)->dogc = 1; \ | 3308 | XSAVE_VALUE (arg_)->dogc = 1; \ |
| 3309 | sa_must_free++; \ | ||
| 3306 | record_unwind_protect (safe_alloca_unwind, arg_); \ | 3310 | record_unwind_protect (safe_alloca_unwind, arg_); \ |
| 3307 | } \ | 3311 | } \ |
| 3308 | } while (0) | 3312 | } while (0) |
| 3309 | 3313 | ||
| 3310 | #define SAFE_FREE_LISP(nelt) \ | ||
| 3311 | do { \ | ||
| 3312 | if (((nelt) * sizeof (Lisp_Object)) >= MAX_ALLOCA) \ | ||
| 3313 | unbind_to (sa_count, Qnil); \ | ||
| 3314 | } while (0) | ||
| 3315 | |||
| 3316 | |||
| 3317 | 3314 | ||
| 3318 | #endif /* EMACS_LISP_H */ | 3315 | #endif /* EMACS_LISP_H */ |
| 3319 | 3316 | ||