Fixed bug in debugging information in dex file
Rationale:
Not resetting signature field may cause "leaking" old extended
value into new non-extended value (exposed while implementing
an Art-based dexdump; it affects all debug iterators though)
Bug: 17442393
Change-Id: I4d1e2357ab7e0d77dbcf09786f24ac5cc54160b9
diff --git a/runtime/dex_file.cc b/runtime/dex_file.cc
index 25d5ef4..c1c7123 100644
--- a/runtime/dex_file.cc
+++ b/runtime/dex_file.cc
@@ -906,9 +906,9 @@
local_in_reg[reg].name_ = StringDataByIdx(name_idx);
local_in_reg[reg].descriptor_ = StringByTypeIdx(descriptor_idx);
- if (opcode == DBG_START_LOCAL_EXTENDED) {
- local_in_reg[reg].signature_ = StringDataByIdx(signature_idx);
- }
+ local_in_reg[reg].signature_ =
+ (opcode == DBG_START_LOCAL_EXTENDED) ? StringDataByIdx(signature_idx)
+ : nullptr;
local_in_reg[reg].start_address_ = address;
local_in_reg[reg].is_live_ = true;
}