From d43ef67ed1f89e933743e803095d438de87d02c5 Mon Sep 17 00:00:00 2001 From: BodgeMaster <> Date: Wed, 29 Jun 2022 00:05:02 +0200 Subject: [PATCH] NBT: fix bug in readInt64, improve readability --- src/lib/nbt.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/lib/nbt.cpp b/src/lib/nbt.cpp index d8c08ff..938dde8 100644 --- a/src/lib/nbt.cpp +++ b/src/lib/nbt.cpp @@ -62,12 +62,26 @@ namespace NBT { ErrorOr readInt32(uint8_t data[], uint64_t dataSize, uint64_t currentPosition) { if (dataSize(true, ErrorCodes::RANGE_ERROR); - return ErrorOr((int32_t) ((static_cast(data[currentPosition]) << 24) | (static_cast(data[currentPosition+1]) << 16) | (static_cast(data[currentPosition+2]) << 8) | static_cast(data[currentPosition+3]))); + return ErrorOr((int32_t) ( + (static_cast(data[currentPosition ]) << 24) | + (static_cast(data[currentPosition+1]) << 16) | + (static_cast(data[currentPosition+2]) << 8) | + static_cast(data[currentPosition+3]) + )); } ErrorOr readInt64(uint8_t data[], uint64_t dataSize, uint64_t currentPosition) { if (dataSize(true, ErrorCodes::RANGE_ERROR); - return ErrorOr((int64_t) ((static_cast(data[currentPosition]) << 56) | (static_cast(data[currentPosition+1]) << 48) | (static_cast(data[currentPosition+2]) << 40) | (static_cast(data[currentPosition+3]) << 32) | (static_cast(data[currentPosition]) << 24) | (static_cast(data[currentPosition+1]) << 16) | (static_cast(data[currentPosition+2]) << 8) | static_cast(data[currentPosition+3]))); + return ErrorOr((int64_t) ( + (static_cast(data[currentPosition ]) << 56) | + (static_cast(data[currentPosition+1]) << 48) | + (static_cast(data[currentPosition+2]) << 40) | + (static_cast(data[currentPosition+3]) << 32) | + (static_cast(data[currentPosition+4]) << 24) | + (static_cast(data[currentPosition+5]) << 16) | + (static_cast(data[currentPosition+6]) << 8) | + static_cast(data[currentPosition+7]) + )); } //FIXME: we just assume that float is a single-precision IEEE754