From 935e01a1e4c0f0ac257c5a9b71bda50a9d441fa3 Mon Sep 17 00:00:00 2001 From: Jeff Hao Date: Fri, 20 Mar 2015 19:44:35 -0700 Subject: [PATCH] Fix interpreter to allow 0 size sparse switches. Bug: 19827056 Change-Id: I12eaf717f1a4b9bd5e0c8e2a508df9da4e61c4ec --- runtime/interpreter/interpreter_common.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/runtime/interpreter/interpreter_common.h b/runtime/interpreter/interpreter_common.h index 15396d6e9..7d413c5d4 100644 --- a/runtime/interpreter/interpreter_common.h +++ b/runtime/interpreter/interpreter_common.h @@ -317,7 +317,10 @@ static inline int32_t DoSparseSwitch(const Instruction* inst, const ShadowFrame& int32_t test_val = shadow_frame.GetVReg(inst->VRegA_31t(inst_data)); DCHECK_EQ(switch_data[0], static_cast(Instruction::kSparseSwitchSignature)); uint16_t size = switch_data[1]; - DCHECK_GT(size, 0); + // Return length of SPARSE_SWITCH if size is 0. + if (size == 0) { + return 3; + } const int32_t* keys = reinterpret_cast(&switch_data[2]); DCHECK(IsAligned<4>(keys)); const int32_t* entries = keys + size; -- 2.11.0