diff --git a/src/code/amd64.c b/src/code/amd64.c
index f3eac20b3e0c8f21ec87ae1f6fa1d08eddfab009..c472513ed999eb71856e54f5e13c72e11b7ed78b 100644
--- a/src/code/amd64.c
+++ b/src/code/amd64.c
@@ -2789,7 +2789,7 @@ int amd64_ins_f_jump(unsigned int op, int backward_jump)
       mov_mem_reg( sp_reg, -4*sizeof(struct svalue)+8, P_REG_RBX );
       mov_mem32_reg( P_REG_RBX, OFFSETOF(array,size), P_REG_RCX );
       cmp_reg_reg( P_REG_RAX, P_REG_RCX );
-      je(&label_A);
+      jge(&label_A);
 
       /* increase counter */
       add_mem_imm( sp_reg, -1*(int)sizeof(struct svalue)+8, 1 );
diff --git a/src/testsuite.in b/src/testsuite.in
index 8a0cb9018bcedd132dcadb722fac8ef3a26ab212..721834c12fd7de61e0611d443ba0c099afbcd26d 100644
--- a/src/testsuite.in
+++ b/src/testsuite.in
@@ -8846,6 +8846,13 @@ test_any([[
   string s;if(1) foreach(({}),s); else foreach(({}),s); return 1
 ]],1)
 
+test_any([[
+  // Bug 7426.
+  array a = ({});
+  foreach(a[1..], mixed e) return 0;
+  return 1;
+]], 1)
+
 test_any([[
   int ret;
   foreach( ([1:2,3:5,7:11,13:17]) ; int a ; int b) ret+=a*b;