Don't use variable-length arrays.
Change-Id: I3f70cadaaade189fd834d9aadb8839fe8ad87f1f
diff --git a/src/dex_file.cc b/src/dex_file.cc
index d3e1c68..c3e7c84 100644
--- a/src/dex_file.cc
+++ b/src/dex_file.cc
@@ -789,13 +789,12 @@
DexDebugNewPositionCb position_cb, DexDebugNewLocalCb local_cb,
void* context) const {
const byte* stream = GetDebugInfoStream(code_item);
- LocalInfo local_in_reg[code_item->registers_size_];
-
+ UniquePtr<LocalInfo[]> local_in_reg(local_cb != NULL ? new LocalInfo[code_item->registers_size_] : NULL);
if (stream != NULL) {
- DecodeDebugInfo0(code_item, is_static, method_idx, position_cb, local_cb, context, stream, local_in_reg);
+ DecodeDebugInfo0(code_item, is_static, method_idx, position_cb, local_cb, context, stream, &local_in_reg[0]);
}
for (int reg = 0; reg < code_item->registers_size_; reg++) {
- InvokeLocalCbIfLive(context, reg, code_item->insns_size_in_code_units_, local_in_reg, local_cb);
+ InvokeLocalCbIfLive(context, reg, code_item->insns_size_in_code_units_, &local_in_reg[0], local_cb);
}
}