From 4dbf62fd2f8cc5ece53cc1446561cf71476bdd12 Mon Sep 17 00:00:00 2001 From: babenko Date: Wed, 24 Dec 2025 23:29:35 +0300 Subject: Explicitly use TCowString in TYsonString MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Для ревьюеров: изменения вне `library/cpp/yt` убирают `using namespace NYT` из хедера. Эта конструкция приводила к клешу имен глобального неймспейса и `NYT` и ошибкам сборки. commit_hash:f598da488a6dd8671af9f1f02870ab5612ae46eb --- library/cpp/yt/yson_string/string.cpp | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) (limited to 'library/cpp/yt/yson_string/string.cpp') diff --git a/library/cpp/yt/yson_string/string.cpp b/library/cpp/yt/yson_string/string.cpp index 45a6aa7f099..c21783b204a 100644 --- a/library/cpp/yt/yson_string/string.cpp +++ b/library/cpp/yt/yson_string/string.cpp @@ -91,25 +91,14 @@ TYsonString::TYsonString( : TYsonString(TYsonStringBuf(data, type)) { } -#ifdef TSTRING_IS_STD_STRING TYsonString::TYsonString( const TString& data, EYsonType type) - : TYsonString(TYsonStringBuf(data, type)) + : Payload_(TCowString(data)) + , Begin_(std::get(Payload_).data()) + , Size_(data.length()) + , Type_(type) { } -#else -TYsonString::TYsonString( - const TString& data, - EYsonType type) -{ - // NOTE: CoW TString implementation is assumed - // Moving the payload MUST NOT invalidate its internal pointers - Payload_ = data; - Begin_ = data.data(); - Size_ = data.length(); - Type_ = type; -} -#endif TYsonString::TYsonString( const TSharedRef& data, @@ -148,8 +137,8 @@ TString TYsonString::ToString() const [&] (const TSharedRangeHolderPtr&) { return TString(AsStringBuf()); }, - [] (const TString& payload) { - return payload; + [] (const TCowString& payload) { + return TString(payload); }); } @@ -163,7 +152,7 @@ TSharedRef TYsonString::ToSharedRef() const [&] (const TSharedRangeHolderPtr& holder) { return TSharedRef(Begin_, Size_, holder); }, - [] (const TString& payload) { + [] (const TCowString& payload) { return TSharedRef::FromString(payload); }); } -- cgit v1.3