/[emacs]/emacs/src/alloc.c
ViewVC logotype

Diff of /emacs/src/alloc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.344 by kfstorm, Mon Jun 21 21:51:50 2004 UTC revision 1.345 by kfstorm, Tue Jun 22 13:56:34 2004 UTC
# Line 585  Lisp_Object Line 585  Lisp_Object
585  safe_alloca_unwind (arg)  safe_alloca_unwind (arg)
586       Lisp_Object arg;       Lisp_Object arg;
587  {  {
588    xfree (XSAVE_VALUE (arg)->pointer);    register struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
589    
590      p->dogc = 0;
591      xfree (p->pointer);
592      p->pointer = 0;
593    return Qnil;    return Qnil;
594  }  }
595    
# Line 2945  make_save_value (pointer, integer) Line 2949  make_save_value (pointer, integer)
2949    p = XSAVE_VALUE (val);    p = XSAVE_VALUE (val);
2950    p->pointer = pointer;    p->pointer = pointer;
2951    p->integer = integer;    p->integer = integer;
2952      p->dogc = 0;
2953    return val;    return val;
2954  }  }
2955    
# Line 4978  mark_object (arg) Line 4983  mark_object (arg)
4983        if (XMARKER (obj)->gcmarkbit)        if (XMARKER (obj)->gcmarkbit)
4984          break;          break;
4985        XMARKER (obj)->gcmarkbit = 1;        XMARKER (obj)->gcmarkbit = 1;
4986    
4987        switch (XMISCTYPE (obj))        switch (XMISCTYPE (obj))
4988          {          {
4989          case Lisp_Misc_Buffer_Local_Value:          case Lisp_Misc_Buffer_Local_Value:
# Line 5002  mark_object (arg) Line 5008  mark_object (arg)
5008            /* DO NOT mark thru the marker's chain.            /* DO NOT mark thru the marker's chain.
5009               The buffer's markers chain does not preserve markers from gc;               The buffer's markers chain does not preserve markers from gc;
5010               instead, markers are removed from the chain when freed by gc.  */               instead, markers are removed from the chain when freed by gc.  */
5011              break;
5012    
5013          case Lisp_Misc_Intfwd:          case Lisp_Misc_Intfwd:
5014          case Lisp_Misc_Boolfwd:          case Lisp_Misc_Boolfwd:
5015          case Lisp_Misc_Objfwd:          case Lisp_Misc_Objfwd:
# Line 5011  mark_object (arg) Line 5019  mark_object (arg)
5019               since all markable slots in current buffer marked anyway.  */               since all markable slots in current buffer marked anyway.  */
5020            /* Don't need to do Lisp_Objfwd, since the places they point            /* Don't need to do Lisp_Objfwd, since the places they point
5021               are protected with staticpro.  */               are protected with staticpro.  */
5022              break;
5023    
5024          case Lisp_Misc_Save_Value:          case Lisp_Misc_Save_Value:
5025              {
5026                register struct Lisp_Save_Value *ptr = XSAVE_VALUE (obj);
5027                /* If DOGC is set, POINTER is the address of a memory
5028                   area containing INTEGER potential Lisp_Objects.  */
5029                if (ptr->dogc)
5030                  {
5031                    Lisp_Object *p = (Lisp_Object *) ptr->pointer;
5032                    int nelt;
5033                    for (nelt = ptr->integer; nelt > 0; nelt--, p++)
5034                      mark_maybe_object (*p);
5035                  }
5036              }
5037            break;            break;
5038    
5039          case Lisp_Misc_Overlay:          case Lisp_Misc_Overlay:

Legend:
Removed from v.1.344  
changed lines
  Added in v.1.345

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26