X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/82e2a1f054cc0306494d1194036af4c5d7301caf..320742098b941833731b20d4bd2de7cc4c93ec76:/src/data.c diff --git a/src/data.c b/src/data.c index a72fa3e2b5..6622088b64 100644 --- a/src/data.c +++ b/src/data.c @@ -1,6 +1,6 @@ /* Primitive operations on Lisp data types for GNU Emacs Lisp interpreter. - Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2012 - Free Software Foundation, Inc. + Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2013 Free Software + Foundation, Inc. This file is part of GNU Emacs. @@ -583,7 +583,7 @@ DEFUN ("symbol-function", Fsymbol_function, Ssymbol_function, 1, 1, 0, (register Lisp_Object symbol) { CHECK_SYMBOL (symbol); - return XSYMBOL (symbol)->function; + return XSYMBOL (symbol)->function; } DEFUN ("symbol-plist", Fsymbol_plist, Ssymbol_plist, 1, 1, 0, @@ -914,13 +914,11 @@ store_symval_forwarding (union Lisp_Fwd *valcontents, register Lisp_Object newva case Lisp_Fwd_Buffer_Obj: { int offset = XBUFFER_OBJFWD (valcontents)->offset; - Lisp_Object type = XBUFFER_OBJFWD (valcontents)->slottype; + Lisp_Object predicate = XBUFFER_OBJFWD (valcontents)->predicate; - if (!(NILP (type) || NILP (newval) - || (XINT (type) == Lisp_Int0 - ? INTEGERP (newval) - : XTYPE (newval) == XINT (type)))) - buffer_slot_type_mismatch (newval, XINT (type)); + if (!NILP (predicate) && !NILP (newval) + && NILP (call1 (predicate, newval))) + wrong_type_argument (predicate, newval); if (buf == NULL) buf = current_buffer;