diff --git a/ydb/library/yql/providers/s3/path_generator/yql_s3_path_generator.cpp b/ydb/library/yql/providers/s3/path_generator/yql_s3_path_generator.cpp index 9eb606e8e65d..eb09498ada96 100644 --- a/ydb/library/yql/providers/s3/path_generator/yql_s3_path_generator.cpp +++ b/ydb/library/yql/providers/s3/path_generator/yql_s3_path_generator.cpp @@ -157,8 +157,18 @@ bool IsOverflow(ui64 a, ui64 b) { return b > diff; } +ui64 AbsToUi64(i64 value) { + if (value >= 0) { + return value; + } + if (value == std::numeric_limits::min()) { + return (ui64)std::numeric_limits::max() + 1; + } + return -value; +} + bool IsOverflowUi64I64(ui64 a, i64 b) { - return b > 0 ? IsOverflow(a, (ui64)b) : a < (ui64)-b; + return b > 0 ? IsOverflow(a, (ui64)b) : a < AbsToUi64(b); } TDuration FromUnit(int64_t interval, IPathGenerator::EIntervalUnit unit) {