diff --git a/src/encode.c b/src/encode.c
index 4ff1dd938f401278774e68327198192c5cb810e9..48c9212540469a0a552fa5bc247c321fdf4505d3 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -1691,8 +1691,8 @@ static void encode_value2(struct svalue *val, struct encode_data *data, int forc
 
 		  break;
 
-		default:;
 #ifdef PIKE_DEBUG
+		default:
 		  Pike_fatal ("Unknown identifier type: 0x%04x for symbol \"%s\".\n",
 			      id->identifier_flags & IDENTIFIER_TYPE_MASK,
 			      id->name->str);
@@ -3754,6 +3754,7 @@ static void decode_value2(struct decode_data *data)
 		  /* Let the codec do it's job... */
 		  apply_low(decoder_codec (data), decode_fun, 2);
 		  if ((TYPEOF(Pike_sp[-1]) == T_ARRAY) &&
+		      o->prog &&
 		      ((fun = FIND_LFUN(o->prog, LFUN_CREATE)) != -1)) {
 		    /* Call lfun::create(@args). */
 		    INT32 args;