From eb7ef59bdeba3d730d830a5d06368ccd9712a136 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 16 Mar 2023 17:03:51 +0400 Subject: [PATCH] Support only up to 2^31 local messages. --- Telegram/SourceFiles/data/data_msg_id.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/data/data_msg_id.h b/Telegram/SourceFiles/data/data_msg_id.h index 95d36fb55..ac39eddfb 100644 --- a/Telegram/SourceFiles/data/data_msg_id.h +++ b/Telegram/SourceFiles/data/data_msg_id.h @@ -52,7 +52,8 @@ Q_DECLARE_METATYPE(MsgId); } constexpr auto StartClientMsgId = MsgId(0x01 - (1LL << 58)); -constexpr auto EndClientMsgId = MsgId(-(1LL << 57)); +constexpr auto ClientMsgIds = (1LL << 31); +constexpr auto EndClientMsgId = MsgId(StartClientMsgId.bare + ClientMsgIds); constexpr auto ServerMaxMsgId = MsgId(1LL << 56); constexpr auto ScheduledMsgIdsRange = (1LL << 32); constexpr auto ShowAtUnreadMsgId = MsgId(0); @@ -69,6 +70,16 @@ static_assert(-(SpecialMsgIdShift + 0xFF) > ServerMaxMsgId); [[nodiscard]] constexpr inline bool IsClientMsgId(MsgId id) noexcept { return (id >= StartClientMsgId && id < EndClientMsgId); } +[[nodiscard]] constexpr inline int32 ClientMsgIndex(MsgId id) noexcept { + Expects(IsClientMsgId(id)); + + return int(id.bare - StartClientMsgId.bare); +} +[[nodiscard]] constexpr inline MsgId ClientMsgByIndex(int32 index) noexcept { + Expects(index >= 0); + + return MsgId(StartClientMsgId.bare + index); +} [[nodiscard]] constexpr inline bool IsServerMsgId(MsgId id) noexcept { return (id > 0 && id < ServerMaxMsgId);