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);
   }
 }