Merge "Don't read characters from 0 length strings." into dalvik-dev
diff --git a/runtime/gc/collector/mark_sweep.cc b/runtime/gc/collector/mark_sweep.cc
index 11e911c..56dc0e5 100644
--- a/runtime/gc/collector/mark_sweep.cc
+++ b/runtime/gc/collector/mark_sweep.cc
@@ -148,6 +148,7 @@
       finalizer_reference_list_(NULL),
       phantom_reference_list_(NULL),
       cleared_reference_list_(NULL),
+      live_stack_freeze_size_(0),
       gc_barrier_(new Barrier(0)),
       large_object_lock_("mark sweep large object lock", kMarkSweepLargeObjectLock),
       mark_stack_lock_("mark sweep mark stack lock", kMarkSweepMarkStackLock),
diff --git a/runtime/mapping_table.h b/runtime/mapping_table.h
index 2162008..9955f30 100644
--- a/runtime/mapping_table.h
+++ b/runtime/mapping_table.h
@@ -68,8 +68,10 @@
         native_pc_offset_(0), dex_pc_(0) {
       if (element == 0) {
         encoded_table_ptr_ = table_->FirstDexToPcPtr();
-        native_pc_offset_ = DecodeUnsignedLeb128(&encoded_table_ptr_);
-        dex_pc_ = DecodeUnsignedLeb128(&encoded_table_ptr_);
+        if (end_ > 0) {
+          native_pc_offset_ = DecodeUnsignedLeb128(&encoded_table_ptr_);
+          dex_pc_ = DecodeUnsignedLeb128(&encoded_table_ptr_);
+        }
       } else {
         DCHECK_EQ(table_->DexToPcSize(), element);
       }
@@ -141,8 +143,10 @@
         native_pc_offset_(0), dex_pc_(0) {
       if (element == 0) {
         encoded_table_ptr_ = table_->FirstPcToDexPtr();
-        native_pc_offset_ = DecodeUnsignedLeb128(&encoded_table_ptr_);
-        dex_pc_ = DecodeUnsignedLeb128(&encoded_table_ptr_);
+        if (end_ > 0) {
+          native_pc_offset_ = DecodeUnsignedLeb128(&encoded_table_ptr_);
+          dex_pc_ = DecodeUnsignedLeb128(&encoded_table_ptr_);
+        }
       } else {
         DCHECK_EQ(table_->PcToDexSize(), element);
       }