| Index: src/wasm/decoder.h | 
| diff --git a/src/wasm/decoder.h b/src/wasm/decoder.h | 
| index 0e88eda022de439228b6f862098dff55376ae954..25d46b33f063e91af92381298a686819c8a28c03 100644 | 
| --- a/src/wasm/decoder.h | 
| +++ b/src/wasm/decoder.h | 
| @@ -222,10 +222,19 @@ class Decoder { | 
| return traceOffEnd<uint32_t>(); | 
| } | 
|  | 
| +  // Consume {size} bytes and send them to the bit bucket, advancing {pc_}. | 
| +  void consume_bytes(size_t size) { | 
| +    if (checkAvailable(size)) { | 
| +      pc_ += size; | 
| +    } else { | 
| +      pc_ = limit_; | 
| +    } | 
| +  } | 
| + | 
| // Check that at least {size} bytes exist between {pc_} and {limit_}. | 
| -  bool checkAvailable(int size) { | 
| -    if (pc_ < start_ || (pc_ + size) > limit_) { | 
| -      error(pc_, nullptr, "expected %d bytes, fell off end", size); | 
| +  bool checkAvailable(size_t size) { | 
| +    if (pc_ < start_ || (limit_ - start_) < size || limit_ < (pc_ + size)) { | 
| +      error(pc_, nullptr, "expected %z bytes, fell off end", size); | 
| return false; | 
| } else { | 
| return true; | 
|  |