From 313b913ddce922bb894f50e72c54c88b3c14e275 Mon Sep 17 00:00:00 2001 From: Fedor Vikhnin Date: Tue, 25 Nov 2025 16:45:30 +0300 Subject: [PATCH 1/4] remove unnecessary sync --- internal/tlcodegen/helpers_cpp_generated.go | 5 ++++- pkg/basictl_cpp/io_streams.cpp | 1 + pkg/basictl_cpp/io_streams.h | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/tlcodegen/helpers_cpp_generated.go b/internal/tlcodegen/helpers_cpp_generated.go index 4f9dbde36..4c383f4ed 100644 --- a/internal/tlcodegen/helpers_cpp_generated.go +++ b/internal/tlcodegen/helpers_cpp_generated.go @@ -173,6 +173,7 @@ namespace basictl { tl_istream::tl_istream(tl_throwable_istream &from) : provider(nullptr) { from.pass_data(*this); + this->sync_in_destructor = true; } bool tl_istream::string_read(std::string &value) noexcept { @@ -544,7 +545,7 @@ namespace basictl { tl_istream &operator=(tl_istream &&) = delete; - ~tl_istream() { sync(); }; + ~tl_istream() { if (sync_in_destructor) sync(); }; friend class tl_throwable_istream; @@ -652,6 +653,8 @@ namespace basictl { const std::byte *ptr{}; const std::byte *end_block{}; + bool sync_in_destructor = false; + void grow_buffer() noexcept; bool ensure_byte() noexcept; diff --git a/pkg/basictl_cpp/io_streams.cpp b/pkg/basictl_cpp/io_streams.cpp index b605eea63..499b91d60 100644 --- a/pkg/basictl_cpp/io_streams.cpp +++ b/pkg/basictl_cpp/io_streams.cpp @@ -8,6 +8,7 @@ namespace basictl { tl_istream::tl_istream(tl_throwable_istream &from) : provider(nullptr) { from.pass_data(*this); + this->sync_in_destructor = true; } bool tl_istream::string_read(std::string &value) noexcept { diff --git a/pkg/basictl_cpp/io_streams.h b/pkg/basictl_cpp/io_streams.h index 47fcc4e05..02e47427a 100644 --- a/pkg/basictl_cpp/io_streams.h +++ b/pkg/basictl_cpp/io_streams.h @@ -24,7 +24,7 @@ namespace basictl { tl_istream &operator=(tl_istream &&) = delete; - ~tl_istream() { sync(); }; + ~tl_istream() { if (sync_in_destructor) sync(); }; friend class tl_throwable_istream; @@ -132,6 +132,8 @@ namespace basictl { const std::byte *ptr{}; const std::byte *end_block{}; + bool sync_in_destructor = false; + void grow_buffer() noexcept; bool ensure_byte() noexcept; From 3ce99ef9b3421b7ef60a43991c2de3ab6e6a21d0 Mon Sep 17 00:00:00 2001 From: Fedor Vikhnin Date: Tue, 25 Nov 2025 16:49:43 +0300 Subject: [PATCH 2/4] fix --- internal/tlcodegen/helpers_cpp_generated.go | 2 +- pkg/basictl_cpp/io_streams.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/tlcodegen/helpers_cpp_generated.go b/internal/tlcodegen/helpers_cpp_generated.go index 4c383f4ed..74383965c 100644 --- a/internal/tlcodegen/helpers_cpp_generated.go +++ b/internal/tlcodegen/helpers_cpp_generated.go @@ -173,7 +173,7 @@ namespace basictl { tl_istream::tl_istream(tl_throwable_istream &from) : provider(nullptr) { from.pass_data(*this); - this->sync_in_destructor = true; + this->sync_in_destructor = false; } bool tl_istream::string_read(std::string &value) noexcept { diff --git a/pkg/basictl_cpp/io_streams.cpp b/pkg/basictl_cpp/io_streams.cpp index 499b91d60..63c6c3082 100644 --- a/pkg/basictl_cpp/io_streams.cpp +++ b/pkg/basictl_cpp/io_streams.cpp @@ -8,7 +8,7 @@ namespace basictl { tl_istream::tl_istream(tl_throwable_istream &from) : provider(nullptr) { from.pass_data(*this); - this->sync_in_destructor = true; + this->sync_in_destructor = false; } bool tl_istream::string_read(std::string &value) noexcept { From 55154e5bbe81b73b724fa7ed709610fbdcbb3708 Mon Sep 17 00:00:00 2001 From: Fedor Vikhnin Date: Tue, 25 Nov 2025 17:01:52 +0300 Subject: [PATCH 3/4] fix again --- internal/tlcodegen/helpers_cpp_generated.go | 2 +- pkg/basictl_cpp/io_streams.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/tlcodegen/helpers_cpp_generated.go b/internal/tlcodegen/helpers_cpp_generated.go index 74383965c..ee2f81758 100644 --- a/internal/tlcodegen/helpers_cpp_generated.go +++ b/internal/tlcodegen/helpers_cpp_generated.go @@ -653,7 +653,7 @@ namespace basictl { const std::byte *ptr{}; const std::byte *end_block{}; - bool sync_in_destructor = false; + bool sync_in_destructor = true; void grow_buffer() noexcept; diff --git a/pkg/basictl_cpp/io_streams.h b/pkg/basictl_cpp/io_streams.h index 02e47427a..c6ec3ee8f 100644 --- a/pkg/basictl_cpp/io_streams.h +++ b/pkg/basictl_cpp/io_streams.h @@ -132,7 +132,7 @@ namespace basictl { const std::byte *ptr{}; const std::byte *end_block{}; - bool sync_in_destructor = false; + bool sync_in_destructor = true; void grow_buffer() noexcept; From d88538f25ac5c5bfb0c201bfb19654fe0eba852c Mon Sep 17 00:00:00 2001 From: Fedor Vikhnin Date: Tue, 25 Nov 2025 17:39:29 +0300 Subject: [PATCH 4/4] fix again again --- internal/tlcodegen/helpers_cpp_generated.go | 5 ++++- pkg/basictl_cpp/io_streams.cpp | 1 + pkg/basictl_cpp/io_streams.h | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/tlcodegen/helpers_cpp_generated.go b/internal/tlcodegen/helpers_cpp_generated.go index ee2f81758..0346db9aa 100644 --- a/internal/tlcodegen/helpers_cpp_generated.go +++ b/internal/tlcodegen/helpers_cpp_generated.go @@ -363,6 +363,7 @@ namespace basictl { tl_ostream::tl_ostream(tl_throwable_ostream &from) : provider(nullptr) { from.pass_data(*this); + this->sync_in_destructor = false; } bool tl_ostream::string_write(const std::string &value) { @@ -684,7 +685,7 @@ namespace basictl { tl_ostream &operator=(tl_ostream &&) = delete; - ~tl_ostream() { sync(); }; + ~tl_ostream() { if (this->sync_in_destructor) sync(); }; friend class tl_throwable_ostream; @@ -767,6 +768,8 @@ namespace basictl { std::byte *ptr{}; std::byte *end_block{}; + bool sync_in_destructor = true; + void grow_buffer(); bool store_data(const void *vdata, size_t size); diff --git a/pkg/basictl_cpp/io_streams.cpp b/pkg/basictl_cpp/io_streams.cpp index 63c6c3082..623d2763f 100644 --- a/pkg/basictl_cpp/io_streams.cpp +++ b/pkg/basictl_cpp/io_streams.cpp @@ -198,6 +198,7 @@ namespace basictl { tl_ostream::tl_ostream(tl_throwable_ostream &from) : provider(nullptr) { from.pass_data(*this); + this->sync_in_destructor = false; } bool tl_ostream::string_write(const std::string &value) { diff --git a/pkg/basictl_cpp/io_streams.h b/pkg/basictl_cpp/io_streams.h index c6ec3ee8f..447afc97f 100644 --- a/pkg/basictl_cpp/io_streams.h +++ b/pkg/basictl_cpp/io_streams.h @@ -163,7 +163,7 @@ namespace basictl { tl_ostream &operator=(tl_ostream &&) = delete; - ~tl_ostream() { sync(); }; + ~tl_ostream() { if (this->sync_in_destructor) sync(); }; friend class tl_throwable_ostream; @@ -246,6 +246,8 @@ namespace basictl { std::byte *ptr{}; std::byte *end_block{}; + bool sync_in_destructor = true; + void grow_buffer(); bool store_data(const void *vdata, size_t size);