diff --git a/include/stdex/stream.hpp b/include/stdex/stream.hpp index 5a9b93fee..a43874217 100644 --- a/include/stdex/stream.hpp +++ b/include/stdex/stream.hpp @@ -3568,6 +3568,7 @@ namespace stdex #endif size_t available = m_size - m_offset; if (length <= available) { + stdex_assert(m_data || !length); memcpy(data, &m_data[m_offset], length); m_offset += length; m_state = state_t::ok; @@ -3577,6 +3578,7 @@ namespace stdex m_state = state_t::eof; return 0; } + stdex_assert(m_data || !available); memcpy(data, &m_data[m_offset], available); m_offset += available; m_state = state_t::ok; @@ -3609,6 +3611,7 @@ namespace stdex } size_t end_offset = stdex::add(m_offset, sizeof(T)); if (end_offset <= m_size) { + stdex_assert(m_data); data = LE2HE(*reinterpret_cast(&m_data[m_offset])); m_offset = end_offset; #if !CHECK_STREAM_STATE @@ -3649,6 +3652,7 @@ namespace stdex } size_t end_offset = stdex::add(m_offset, sizeof(uint32_t)); if (end_offset <= m_size) { + stdex_assert(m_data); uint32_t num_chars = LE2HE(*reinterpret_cast(&m_data[m_offset])); m_offset = end_offset; end_offset = stdex::add(m_offset, stdex::mul(num_chars, sizeof(T))); @@ -3682,6 +3686,7 @@ namespace stdex if (!ok()) _Unlikely_ return 0; } + stdex_assert(m_data || !length); memcpy(&m_data[m_offset], data, length); m_offset = end_offset; if (m_offset > m_size) @@ -3704,6 +3709,7 @@ namespace stdex if (!ok()) _Unlikely_ return; } + stdex_assert(m_data || !amount); memset(&m_data[m_offset], byte, amount); m_offset = end_offset; if (m_offset > m_size) @@ -3739,6 +3745,7 @@ namespace stdex if (!ok()) _Unlikely_ return *this; } + stdex_assert(m_data); (*reinterpret_cast(&m_data[m_offset])) = HE2LE(data); m_offset = end_offset; if (m_offset > m_size) @@ -3782,6 +3789,7 @@ namespace stdex if (!ok()) _Unlikely_ return *this; } + stdex_assert(m_data); auto p = &m_data[m_offset]; *reinterpret_cast(p) = HE2LE((uint32_t)num_chars); memcpy(p + sizeof(uint32_t), data, size_chars); @@ -3827,6 +3835,7 @@ namespace stdex if (!ok()) _Unlikely_ return *this; } + stdex_assert(m_data); auto p = &m_data[m_offset]; *reinterpret_cast(p) = HE2LE((uint32_t)num_chars); memcpy(p + sizeof(uint32_t), data.data(), size_chars); @@ -3858,6 +3867,7 @@ namespace stdex if (!ok()) _Unlikely_ return 0; while (to_write) { + stdex_assert(m_data || !to_write); num_read = stream.read(&m_data[dst_offset], to_write); /*dst_size =*/ dst_offset += num_read; num_copied += num_read; @@ -3877,6 +3887,7 @@ namespace stdex reserve(dst_size); if (!ok()) _Unlikely_ break; + stdex_assert(m_data || !block_size); num_read = stream.read(&m_data[dst_offset], block_size); dst_size = dst_offset += num_read; num_copied += num_read; @@ -3989,6 +4000,7 @@ namespace stdex #if SET_FILE_OP_TIMES m_atime = m_mtime = time_point::now(); #endif + stdex_assert(m_data); stdex_assert(offset + sizeof(T) < m_size); (*reinterpret_cast(&m_data[offset])) = HE2LE(data); } @@ -4020,6 +4032,7 @@ namespace stdex template void get(_In_ fpos_t offset, _Out_ T & data) { + stdex_assert(m_data); stdex_assert(offset + sizeof(T) < m_size); data = LE2HE(*(T*)(&m_data[offset])); #if SET_FILE_OP_TIMES