Index: src/v8conversions.h |
diff --git a/src/v8conversions.h b/src/v8conversions.h |
index 3a7b5242ab79af659b15e99b0a6d53f967cd91d1..d3da9f8bb86db798e9ca5ad017a197b7bd5240d0 100644 |
--- a/src/v8conversions.h |
+++ b/src/v8conversions.h |
@@ -60,10 +60,17 @@ inline size_t NumberToSize(Isolate* isolate, |
Object* number) { |
SealHandleScope shs(isolate); |
if (number->IsSmi()) { |
- return Smi::cast(number)->value(); |
+ int value = Smi::cast(number)->value(); |
+ CHECK_GE(value, 0); |
+ ASSERT( |
+ static_cast<unsigned>(Smi::kMaxValue) |
+ <= std::numeric_limits<size_t>::max()); |
+ return static_cast<size_t>(value); |
} else { |
ASSERT(number->IsHeapNumber()); |
double value = HeapNumber::cast(number)->value(); |
+ CHECK(value >= 0 && |
+ value <= std::numeric_limits<size_t>::max()); |
return static_cast<size_t>(value); |
} |
} |