# HG changeset patch # User Gerd Moellmann # Date 954408562 0 # Node ID ecba29fa01989f68203259a7aed962e518fed3ff # Parent 2812a333e74679221d4408211a323bc72e2f951a (xstrdup): Moved here from xfaces.c. (allocating_for_lisp): Variable removed. (lisp_malloc): Block input around the calls to malloc and mem_insert. diff -r 2812a333e746 -r ecba29fa0198 src/alloc.c --- a/src/alloc.c Thu Mar 30 09:27:30 2000 +0000 +++ b/src/alloc.c Thu Mar 30 09:29:22 2000 +0000 @@ -170,11 +170,6 @@ static int malloc_hysteresis; -/* Nonzero when malloc is called for allocating Lisp object space. - Currently set but not used. */ - -int allocating_for_lisp; - /* Non-nil means defun should do purecopy on the function definition. */ Lisp_Object Vpurify_flag; @@ -464,6 +459,19 @@ } +/* Like strdup, but uses xmalloc. */ + +char * +xstrdup (s) + char *s; +{ + int len = strlen (s) + 1; + char *p = (char *) xmalloc (len); + bcopy (s, p, len); + return p; +} + + /* Like malloc but used for allocating Lisp data. NBYTES is the number of bytes to allocate, TYPE describes the intended use of the allcated memory block (for strings, for conses, ...). */ @@ -476,19 +484,16 @@ register void *val; BLOCK_INPUT; - allocating_for_lisp++; val = (void *) malloc (nbytes); - allocating_for_lisp--; - UNBLOCK_INPUT; - - if (!val && nbytes) - memory_full (); - + #if GC_MARK_STACK - if (type != MEM_TYPE_NON_LISP) + if (val && type != MEM_TYPE_NON_LISP) mem_insert (val, (char *) val + nbytes, type); #endif + UNBLOCK_INPUT; + if (!val && nbytes) + memory_full (); return val; } @@ -512,12 +517,10 @@ long *block; { BLOCK_INPUT; - allocating_for_lisp++; free (block); #if GC_MARK_STACK mem_delete (mem_find (block)); #endif - allocating_for_lisp--; UNBLOCK_INPUT; }