mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
pow-testgiver support
This commit is contained in:
parent
dbde9c1c40
commit
f064b1047a
257 changed files with 6665 additions and 2608 deletions
|
@ -34,14 +34,14 @@ namespace td {
|
|||
|
||||
StringBuilder::StringBuilder(MutableSlice slice, bool use_buffer)
|
||||
: begin_ptr_(slice.begin()), current_ptr_(begin_ptr_), use_buffer_(use_buffer) {
|
||||
if (slice.size() <= reserved_size) {
|
||||
auto buffer_size = reserved_size + 100;
|
||||
if (slice.size() <= RESERVED_SIZE) {
|
||||
auto buffer_size = RESERVED_SIZE + 100;
|
||||
buffer_ = std::make_unique<char[]>(buffer_size);
|
||||
begin_ptr_ = buffer_.get();
|
||||
current_ptr_ = begin_ptr_;
|
||||
end_ptr_ = begin_ptr_ + buffer_size - reserved_size;
|
||||
end_ptr_ = begin_ptr_ + buffer_size - RESERVED_SIZE;
|
||||
} else {
|
||||
end_ptr_ = slice.end() - reserved_size;
|
||||
end_ptr_ = slice.end() - RESERVED_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ StringBuilder &StringBuilder::operator<<(Slice slice) {
|
|||
if (end_ptr_ < current_ptr_) {
|
||||
return on_error();
|
||||
}
|
||||
auto available_size = static_cast<size_t>(end_ptr_ + reserved_size - 1 - current_ptr_);
|
||||
auto available_size = static_cast<size_t>(end_ptr_ + RESERVED_SIZE - 1 - current_ptr_);
|
||||
if (size > available_size) {
|
||||
error_flag_ = true;
|
||||
size = available_size;
|
||||
|
@ -113,12 +113,12 @@ bool StringBuilder::reserve_inner(size_t size) {
|
|||
}
|
||||
|
||||
size_t old_data_size = current_ptr_ - begin_ptr_;
|
||||
if (size >= std::numeric_limits<size_t>::max() - reserved_size - old_data_size - 1) {
|
||||
if (size >= std::numeric_limits<size_t>::max() - RESERVED_SIZE - old_data_size - 1) {
|
||||
return false;
|
||||
}
|
||||
size_t need_data_size = old_data_size + size;
|
||||
size_t old_buffer_size = end_ptr_ - begin_ptr_;
|
||||
if (old_buffer_size >= (std::numeric_limits<size_t>::max() - reserved_size) / 2 - 2) {
|
||||
if (old_buffer_size >= (std::numeric_limits<size_t>::max() - RESERVED_SIZE) / 2 - 2) {
|
||||
return false;
|
||||
}
|
||||
size_t new_buffer_size = (old_buffer_size + 1) * 2;
|
||||
|
@ -128,13 +128,13 @@ bool StringBuilder::reserve_inner(size_t size) {
|
|||
if (new_buffer_size < 100) {
|
||||
new_buffer_size = 100;
|
||||
}
|
||||
new_buffer_size += reserved_size;
|
||||
new_buffer_size += RESERVED_SIZE;
|
||||
auto new_buffer = std::make_unique<char[]>(new_buffer_size);
|
||||
std::memcpy(new_buffer.get(), begin_ptr_, old_data_size);
|
||||
buffer_ = std::move(new_buffer);
|
||||
begin_ptr_ = buffer_.get();
|
||||
current_ptr_ = begin_ptr_ + old_data_size;
|
||||
end_ptr_ = begin_ptr_ + new_buffer_size - reserved_size;
|
||||
end_ptr_ = begin_ptr_ + new_buffer_size - RESERVED_SIZE;
|
||||
CHECK(end_ptr_ > current_ptr_);
|
||||
CHECK(static_cast<size_t>(end_ptr_ - current_ptr_) >= size);
|
||||
return true;
|
||||
|
@ -205,7 +205,7 @@ StringBuilder &StringBuilder::operator<<(FixedDouble x) {
|
|||
*ss << x.d;
|
||||
|
||||
int len = narrow_cast<int>(static_cast<std::streamoff>(ss->tellp()));
|
||||
auto left = end_ptr_ + reserved_size - current_ptr_;
|
||||
auto left = end_ptr_ + RESERVED_SIZE - current_ptr_;
|
||||
if (unlikely(len >= left)) {
|
||||
error_flag_ = true;
|
||||
len = left ? narrow_cast<int>(left - 1) : 0;
|
||||
|
@ -219,7 +219,7 @@ StringBuilder &StringBuilder::operator<<(const void *ptr) {
|
|||
if (unlikely(!reserve())) {
|
||||
return on_error();
|
||||
}
|
||||
current_ptr_ += std::snprintf(current_ptr_, reserved_size, "%p", ptr);
|
||||
current_ptr_ += std::snprintf(current_ptr_, RESERVED_SIZE, "%p", ptr);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue