diff --git a/src/encode.c b/src/encode.c index ee99c0647a353cac53d51abb1b2fe014ca551a74..095e35dc6abf73db3bae9d27601b0d9c9151a8d0 100644 --- a/src/encode.c +++ b/src/encode.c @@ -2,9 +2,8 @@ || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. -|| $Id: encode.c,v 1.217 2004/07/02 23:45:54 srb Exp $ +|| $Id: encode.c,v 1.218 2004/07/03 09:22:53 grubba Exp $ */ -#include <stdio.h> //srb #include "global.h" #include "stralloc.h" @@ -32,7 +31,7 @@ #include "opcodes.h" #include "peep.h" -RCSID("$Id: encode.c,v 1.217 2004/07/02 23:45:54 srb Exp $"); +RCSID("$Id: encode.c,v 1.218 2004/07/03 09:22:53 grubba Exp $"); /* #define ENCODE_DEBUG */ @@ -3611,7 +3610,8 @@ static void decode_value2(struct decode_data *data) decode_value2(data); switch(entry_type) { case ID_ENTRY_EFUN_CONSTANT: - if (Pike_sp[-1].type != T_FUNCTION) { + if ((Pike_sp[-1].type != T_FUNCTION) || + (Pike_sp[-1].subtype != FUNCTION_BUILTIN)) { ref_push_program (p); decode_error(Pike_sp - 1, Pike_sp - 2, "Expected efun constant: ");