[ox/mc] Prevent reading array length of absent array
This commit is contained in:
parent
33047fc047
commit
d7b5f51fdc
11
deps/ox/src/ox/mc/read.hpp
vendored
11
deps/ox/src/ox/mc/read.hpp
vendored
@ -199,10 +199,13 @@ Error MetalClawReader::field(const char*, Handler handler) {
|
|||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
Error MetalClawReader::field(const char* name, ox::Vector<T> *val) {
|
Error MetalClawReader::field(const char* name, ox::Vector<T> *val) {
|
||||||
const auto [len, err] = arrayLength(false);
|
if (m_fieldPresence.get(m_field)) {
|
||||||
oxReturnError(err);
|
const auto [len, err] = arrayLength(false);
|
||||||
val->resize(len);
|
oxReturnError(err);
|
||||||
return field(name, val->data(), val->size());
|
val->resize(len);
|
||||||
|
return field(name, val->data(), val->size());
|
||||||
|
}
|
||||||
|
return OxError(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
12
deps/ox/src/ox/mc/write.hpp
vendored
12
deps/ox/src/ox/mc/write.hpp
vendored
@ -98,11 +98,6 @@ Error MetalClawWriter::field(const char*, T *val) {
|
|||||||
return OxError(0);
|
return OxError(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
Error MetalClawWriter::field(const char*, ox::Vector<T> *val) {
|
|
||||||
return field(nullptr, val->data(), val->size());
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
Error MetalClawWriter::field(const char*, T *val, std::size_t len) {
|
Error MetalClawWriter::field(const char*, T *val, std::size_t len) {
|
||||||
auto err = OxError(0);
|
auto err = OxError(0);
|
||||||
@ -130,11 +125,16 @@ Error MetalClawWriter::field(const char*, T *val, std::size_t len) {
|
|||||||
fieldSet = true;
|
fieldSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
err |= m_fieldPresence.set(m_field, fieldSet);
|
oxReturnError(m_fieldPresence.set(m_field, fieldSet));
|
||||||
m_field++;
|
m_field++;
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
Error MetalClawWriter::field(const char*, ox::Vector<T> *val) {
|
||||||
|
return field(nullptr, val->data(), val->size());
|
||||||
|
}
|
||||||
|
|
||||||
template<typename I>
|
template<typename I>
|
||||||
Error MetalClawWriter::appendInteger(I val) {
|
Error MetalClawWriter::appendInteger(I val) {
|
||||||
auto err = OxError(0);
|
auto err = OxError(0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user