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: ");