aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorKaroly Lorentey2004-10-31 02:05:24 +0000
committerKaroly Lorentey2004-10-31 02:05:24 +0000
commite0bc17abe6979d607e8de4684dddb96e53c60065 (patch)
treeb7cb7bc5df9f12138937fd958cdf4b9c2d19ee3a /src/lisp.h
parentf158167a84475d5fc41931531406821e6413afd7 (diff)
parent707994d2626cf0f01c3ece4028d73835068d64dc (diff)
downloademacs-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.h17
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;
3265extern Lisp_Object safe_alloca_unwind (Lisp_Object); 3265extern 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