stream: assert buffer is not nullptr before use
Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
191f3bb2f9
commit
7bb614a34f
@ -3568,6 +3568,7 @@ namespace stdex
|
|||||||
#endif
|
#endif
|
||||||
size_t available = m_size - m_offset;
|
size_t available = m_size - m_offset;
|
||||||
if (length <= available) {
|
if (length <= available) {
|
||||||
|
stdex_assert(m_data || !length);
|
||||||
memcpy(data, &m_data[m_offset], length);
|
memcpy(data, &m_data[m_offset], length);
|
||||||
m_offset += length;
|
m_offset += length;
|
||||||
m_state = state_t::ok;
|
m_state = state_t::ok;
|
||||||
@ -3577,6 +3578,7 @@ namespace stdex
|
|||||||
m_state = state_t::eof;
|
m_state = state_t::eof;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
stdex_assert(m_data || !available);
|
||||||
memcpy(data, &m_data[m_offset], available);
|
memcpy(data, &m_data[m_offset], available);
|
||||||
m_offset += available;
|
m_offset += available;
|
||||||
m_state = state_t::ok;
|
m_state = state_t::ok;
|
||||||
@ -3609,6 +3611,7 @@ namespace stdex
|
|||||||
}
|
}
|
||||||
size_t end_offset = stdex::add(m_offset, sizeof(T));
|
size_t end_offset = stdex::add(m_offset, sizeof(T));
|
||||||
if (end_offset <= m_size) {
|
if (end_offset <= m_size) {
|
||||||
|
stdex_assert(m_data);
|
||||||
data = LE2HE(*reinterpret_cast<T*>(&m_data[m_offset]));
|
data = LE2HE(*reinterpret_cast<T*>(&m_data[m_offset]));
|
||||||
m_offset = end_offset;
|
m_offset = end_offset;
|
||||||
#if !CHECK_STREAM_STATE
|
#if !CHECK_STREAM_STATE
|
||||||
@ -3649,6 +3652,7 @@ namespace stdex
|
|||||||
}
|
}
|
||||||
size_t end_offset = stdex::add(m_offset, sizeof(uint32_t));
|
size_t end_offset = stdex::add(m_offset, sizeof(uint32_t));
|
||||||
if (end_offset <= m_size) {
|
if (end_offset <= m_size) {
|
||||||
|
stdex_assert(m_data);
|
||||||
uint32_t num_chars = LE2HE(*reinterpret_cast<uint32_t*>(&m_data[m_offset]));
|
uint32_t num_chars = LE2HE(*reinterpret_cast<uint32_t*>(&m_data[m_offset]));
|
||||||
m_offset = end_offset;
|
m_offset = end_offset;
|
||||||
end_offset = stdex::add(m_offset, stdex::mul(num_chars, sizeof(T)));
|
end_offset = stdex::add(m_offset, stdex::mul(num_chars, sizeof(T)));
|
||||||
@ -3682,6 +3686,7 @@ namespace stdex
|
|||||||
if (!ok()) _Unlikely_
|
if (!ok()) _Unlikely_
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
stdex_assert(m_data || !length);
|
||||||
memcpy(&m_data[m_offset], data, length);
|
memcpy(&m_data[m_offset], data, length);
|
||||||
m_offset = end_offset;
|
m_offset = end_offset;
|
||||||
if (m_offset > m_size)
|
if (m_offset > m_size)
|
||||||
@ -3704,6 +3709,7 @@ namespace stdex
|
|||||||
if (!ok()) _Unlikely_
|
if (!ok()) _Unlikely_
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
stdex_assert(m_data || !amount);
|
||||||
memset(&m_data[m_offset], byte, amount);
|
memset(&m_data[m_offset], byte, amount);
|
||||||
m_offset = end_offset;
|
m_offset = end_offset;
|
||||||
if (m_offset > m_size)
|
if (m_offset > m_size)
|
||||||
@ -3739,6 +3745,7 @@ namespace stdex
|
|||||||
if (!ok()) _Unlikely_
|
if (!ok()) _Unlikely_
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
stdex_assert(m_data);
|
||||||
(*reinterpret_cast<T*>(&m_data[m_offset])) = HE2LE(data);
|
(*reinterpret_cast<T*>(&m_data[m_offset])) = HE2LE(data);
|
||||||
m_offset = end_offset;
|
m_offset = end_offset;
|
||||||
if (m_offset > m_size)
|
if (m_offset > m_size)
|
||||||
@ -3782,6 +3789,7 @@ namespace stdex
|
|||||||
if (!ok()) _Unlikely_
|
if (!ok()) _Unlikely_
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
stdex_assert(m_data);
|
||||||
auto p = &m_data[m_offset];
|
auto p = &m_data[m_offset];
|
||||||
*reinterpret_cast<uint32_t*>(p) = HE2LE((uint32_t)num_chars);
|
*reinterpret_cast<uint32_t*>(p) = HE2LE((uint32_t)num_chars);
|
||||||
memcpy(p + sizeof(uint32_t), data, size_chars);
|
memcpy(p + sizeof(uint32_t), data, size_chars);
|
||||||
@ -3827,6 +3835,7 @@ namespace stdex
|
|||||||
if (!ok()) _Unlikely_
|
if (!ok()) _Unlikely_
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
stdex_assert(m_data);
|
||||||
auto p = &m_data[m_offset];
|
auto p = &m_data[m_offset];
|
||||||
*reinterpret_cast<uint32_t*>(p) = HE2LE((uint32_t)num_chars);
|
*reinterpret_cast<uint32_t*>(p) = HE2LE((uint32_t)num_chars);
|
||||||
memcpy(p + sizeof(uint32_t), data.data(), size_chars);
|
memcpy(p + sizeof(uint32_t), data.data(), size_chars);
|
||||||
@ -3858,6 +3867,7 @@ namespace stdex
|
|||||||
if (!ok()) _Unlikely_
|
if (!ok()) _Unlikely_
|
||||||
return 0;
|
return 0;
|
||||||
while (to_write) {
|
while (to_write) {
|
||||||
|
stdex_assert(m_data || !to_write);
|
||||||
num_read = stream.read(&m_data[dst_offset], to_write);
|
num_read = stream.read(&m_data[dst_offset], to_write);
|
||||||
/*dst_size =*/ dst_offset += num_read;
|
/*dst_size =*/ dst_offset += num_read;
|
||||||
num_copied += num_read;
|
num_copied += num_read;
|
||||||
@ -3877,6 +3887,7 @@ namespace stdex
|
|||||||
reserve(dst_size);
|
reserve(dst_size);
|
||||||
if (!ok()) _Unlikely_
|
if (!ok()) _Unlikely_
|
||||||
break;
|
break;
|
||||||
|
stdex_assert(m_data || !block_size);
|
||||||
num_read = stream.read(&m_data[dst_offset], block_size);
|
num_read = stream.read(&m_data[dst_offset], block_size);
|
||||||
dst_size = dst_offset += num_read;
|
dst_size = dst_offset += num_read;
|
||||||
num_copied += num_read;
|
num_copied += num_read;
|
||||||
@ -3989,6 +4000,7 @@ namespace stdex
|
|||||||
#if SET_FILE_OP_TIMES
|
#if SET_FILE_OP_TIMES
|
||||||
m_atime = m_mtime = time_point::now();
|
m_atime = m_mtime = time_point::now();
|
||||||
#endif
|
#endif
|
||||||
|
stdex_assert(m_data);
|
||||||
stdex_assert(offset + sizeof(T) < m_size);
|
stdex_assert(offset + sizeof(T) < m_size);
|
||||||
(*reinterpret_cast<T*>(&m_data[offset])) = HE2LE(data);
|
(*reinterpret_cast<T*>(&m_data[offset])) = HE2LE(data);
|
||||||
}
|
}
|
||||||
@ -4020,6 +4032,7 @@ namespace stdex
|
|||||||
template <class T>
|
template <class T>
|
||||||
void get(_In_ fpos_t offset, _Out_ T & data)
|
void get(_In_ fpos_t offset, _Out_ T & data)
|
||||||
{
|
{
|
||||||
|
stdex_assert(m_data);
|
||||||
stdex_assert(offset + sizeof(T) < m_size);
|
stdex_assert(offset + sizeof(T) < m_size);
|
||||||
data = LE2HE(*(T*)(&m_data[offset]));
|
data = LE2HE(*(T*)(&m_data[offset]));
|
||||||
#if SET_FILE_OP_TIMES
|
#if SET_FILE_OP_TIMES
|
||||||
|
Loading…
x
Reference in New Issue
Block a user