| 572 | } |
| 573 | |
| 574 | Status ScopedMemTracker::TryConsume(int64_t size) { |
| 575 | DCHECK(tracker_ != nullptr); |
| 576 | if (tracker_->TryConsume(size)) { |
| 577 | size_ += size; |
| 578 | } else { |
| 579 | Status status = tracker_->MemLimitExceeded( |
| 580 | nullptr, "Failed to allocate memory required by DecodeBuffer", size); |
| 581 | tracker_ = nullptr; |
| 582 | return status; |
| 583 | } |
| 584 | return Status::OK(); |
| 585 | } |
| 586 | |
| 587 | ScopedMemTracker::~ScopedMemTracker() { |
| 588 | if (tracker_ != nullptr && size_ > 0) { |