diff --git a/src/encode.c b/src/encode.c
index 3fa4aebca6d051272cd8d29f53d293a52a8b134d..4096c3333c11850c660b9ef765cf067a9714dcd0 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -4484,11 +4484,12 @@ static void decode_value2(struct decode_data *data)
 				    Pike_sp[-1].u.type,
 				    id_flags, func_flags,
 				    &func, opt_flags);
-		if (no >= p->num_identifier_references || no != n &&
-		    (p->identifier_references[no].id_flags != id_flags ||
-		     p->identifier_references[no].identifier_offset !=
-		     p->identifier_references[n].identifier_offset ||
-		     p->identifier_references[no].inherit_offset != 0)) {
+		if (no >= p->num_identifier_references ||
+		    (no != n &&
+		     (p->identifier_references[no].id_flags != id_flags ||
+		      p->identifier_references[no].identifier_offset !=
+		      p->identifier_references[n].identifier_offset ||
+		      p->identifier_references[no].inherit_offset != 0))) {
 		  ref_push_program (p);
 		  decode_error(data, Pike_sp - 1,
 			       "Bad function identifier offset: %d\n", no);