This is an automated email from the ASF dual-hosted git repository. jamesge pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git
commit 760c94738fe1f1cbbc9244747909f09585e708bb Author: gejun <ge...@bilibili.com> AuthorDate: Tue May 21 19:53:05 2019 +0800 Suppress strict-alias warnings in recordio.cc --- src/butil/recordio.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/butil/recordio.cc b/src/butil/recordio.cc index f4e2b19..447fde3 100755 --- a/src/butil/recordio.cc +++ b/src/butil/recordio.cc @@ -172,7 +172,8 @@ bool RecordReader::CutUntilNextRecordCandidate() { if (_cutter.copy_to(magic, sizeof(magic)) != sizeof(magic)) { return false; } - if (*(const uint32_t*)magic == *(const uint32_t*)BRPC_RECORDIO_MAGIC) { + void* dummy = magic; // suppressing strict-aliasing warning + if (*(const uint32_t*)dummy == *(const uint32_t*)BRPC_RECORDIO_MAGIC) { _cutter.pop_front(sizeof(magic)); _ncut += sizeof(magic); } @@ -184,7 +185,8 @@ bool RecordReader::CutUntilNextRecordCandidate() { } const size_t m = nc + 1 - sizeof(magic); for (size_t i = 0; i < m; ++i) { - if (*(const uint32_t*)(buf + i) == *(const uint32_t*)BRPC_RECORDIO_MAGIC) { + void* dummy = buf + i; // suppressing strict-aliasing warning + if (*(const uint32_t*)dummy == *(const uint32_t*)BRPC_RECORDIO_MAGIC) { _cutter.pop_front(i); _ncut += i; LOG(INFO) << "Found record candidate after " << _ncut - old_ncut << " bytes"; @@ -204,7 +206,8 @@ int RecordReader::CutRecord(Record* rec) { if (_cutter.copy_to(headbuf, sizeof(headbuf)) != sizeof(headbuf)) { return 0; } - if (*(const uint32_t*)headbuf != *(const uint32_t*)BRPC_RECORDIO_MAGIC) { + void* dummy = headbuf; // suppressing strict-aliasing warning + if (*(const uint32_t*)dummy != *(const uint32_t*)BRPC_RECORDIO_MAGIC) { LOG(ERROR) << "Invalid magic_num=" << butil::PrintedAsBinary(std::string((char*)headbuf, 4)) << ", offset=" << read_bytes(); @@ -310,7 +313,8 @@ int RecordWriter::WriteWithoutFlush(const Record& rec) { if (!rec.Payload().empty()) { _buf.append(rec.Payload()); } - *(uint32_t*)headbuf = *(const uint32_t*)BRPC_RECORDIO_MAGIC; + void* dummy = headbuf; // suppressing strict-aliasing warning + *(uint32_t*)dummy = *(const uint32_t*)BRPC_RECORDIO_MAGIC; const size_t data_size = _buf.size() - old_size - sizeof(headbuf); if (data_size > 0x7FFFFFFFULL) { LOG(ERROR) << "data_size=" << data_size << " is too long"; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org For additional commands, e-mail: dev-h...@brpc.apache.org