Fix some < vs <= issues in OatFile

Change-Id: I86c7eb182f7ebd57790d77b9abbcdf39a8b18e2f
diff --git a/runtime/oat_file.cc b/runtime/oat_file.cc
index 61f023c..1967345 100644
--- a/runtime/oat_file.cc
+++ b/runtime/oat_file.cc
@@ -403,17 +403,21 @@
   OatClassType type = static_cast<OatClassType>(*reinterpret_cast<const uint16_t*>(type_pointer));
   CHECK_LT(type, kOatClassMax);
 
-  const byte* bitmap_pointer = type_pointer + sizeof(int16_t);
-  CHECK_LT(bitmap_pointer, oat_file_->End()) << oat_file_->GetLocation();
-  uint32_t bitmap_size = 0;
-  if (type == kOatClassSomeCompiled) {
-    bitmap_size = static_cast<uint32_t>(*reinterpret_cast<const uint32_t*>(bitmap_pointer));
-    bitmap_pointer += sizeof(bitmap_size);
-    CHECK_LT(bitmap_pointer, oat_file_->End()) << oat_file_->GetLocation();
-  }
+  const byte* after_type_pointer = type_pointer + sizeof(int16_t);
+  CHECK_LE(after_type_pointer, oat_file_->End()) << oat_file_->GetLocation();
 
-  const byte* methods_pointer = bitmap_pointer + bitmap_size;
-  CHECK_LT(methods_pointer, oat_file_->End()) << oat_file_->GetLocation();
+  uint32_t bitmap_size = 0;
+  const byte* bitmap_pointer = nullptr;
+  const byte* methods_pointer = nullptr;
+  if (type == kOatClassSomeCompiled) {
+    bitmap_size = static_cast<uint32_t>(*reinterpret_cast<const uint32_t*>(after_type_pointer));
+    bitmap_pointer = after_type_pointer + sizeof(bitmap_size);
+    CHECK_LE(bitmap_pointer, oat_file_->End()) << oat_file_->GetLocation();
+    methods_pointer = bitmap_pointer + bitmap_size;
+  } else {
+    methods_pointer = after_type_pointer;
+  }
+  CHECK_LE(methods_pointer, oat_file_->End()) << oat_file_->GetLocation();
 
   return new OatClass(oat_file_,
                       status,
@@ -431,19 +435,23 @@
                             const OatMethodOffsets* methods_pointer)
     : oat_file_(oat_file), status_(status), type_(type),
       bitmap_(NULL), methods_pointer_(methods_pointer) {
+    CHECK(methods_pointer != nullptr);
     switch (type_) {
       case kOatClassAllCompiled: {
         CHECK_EQ(0U, bitmap_size);
+        CHECK(bitmap_pointer == nullptr);
         break;
       }
       case kOatClassSomeCompiled: {
         CHECK_NE(0U, bitmap_size);
+        CHECK(bitmap_pointer != nullptr);
         bitmap_ = new BitVector(0, false, Allocator::GetNoopAllocator(), bitmap_size,
                                 const_cast<uint32_t*>(bitmap_pointer));
         break;
       }
       case kOatClassNoneCompiled: {
         CHECK_EQ(0U, bitmap_size);
+        CHECK(bitmap_pointer == nullptr);
         methods_pointer_ = NULL;
         break;
       }