Skip to content

Commit

Permalink
Fix index bug at ParserQt
Browse files Browse the repository at this point in the history
  • Loading branch information
beckdave committed Jan 18, 2024
1 parent e221051 commit d5227e8
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
2 changes: 1 addition & 1 deletion inc/finalmq/serializeqt/ParserQt.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ namespace finalmq {
bool parseArrayStruct(const MetaField& field);

bool parseQVariantHeader(const MetaField& field);
std::int64_t checkIndex(const MetaField& field, std::int64_t value);
void checkIndex(const MetaField& field, std::int64_t value, std::int64_t& index);

const std::uint8_t* m_ptr = nullptr;
ssize_t m_size = 0;
Expand Down
20 changes: 9 additions & 11 deletions src/serializeqt/ParserQt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ namespace finalmq {
if (ok)
{
m_visitor.enterInt8(*field, value);
index = checkIndex(*field, value);
checkIndex(*field, value, index);
}
}
break;
Expand All @@ -173,7 +173,7 @@ namespace finalmq {
if (ok)
{
m_visitor.enterUInt8(*field, value);
index = checkIndex(*field, value);
checkIndex(*field, value, index);
}
}
break;
Expand All @@ -189,7 +189,7 @@ namespace finalmq {
if (ok)
{
m_visitor.enterInt16(*field, value);
index = checkIndex(*field, value);
checkIndex(*field, value, index);
}
}
break;
Expand All @@ -205,7 +205,7 @@ namespace finalmq {
if (ok)
{
m_visitor.enterUInt16(*field, value);
index = checkIndex(*field, value);
checkIndex(*field, value, index);
}
}
break;
Expand All @@ -221,7 +221,7 @@ namespace finalmq {
if (ok)
{
m_visitor.enterInt32(*field, value);
index = checkIndex(*field, value);
checkIndex(*field, value, index);
}
}
break;
Expand All @@ -237,7 +237,7 @@ namespace finalmq {
if (ok)
{
m_visitor.enterUInt32(*field, value);
index = checkIndex(*field, value);
checkIndex(*field, value, index);
}
}
break;
Expand All @@ -253,7 +253,7 @@ namespace finalmq {
if (ok)
{
m_visitor.enterInt64(*field, value);
index = checkIndex(*field, value);
checkIndex(*field, value, index);
}
}
break;
Expand All @@ -269,7 +269,7 @@ namespace finalmq {
if (ok)
{
m_visitor.enterUInt64(*field, value);
index = checkIndex(*field, value);
checkIndex(*field, value, index);
}
}
break;
Expand Down Expand Up @@ -1044,9 +1044,8 @@ namespace finalmq {
return ok;
}

std::int64_t ParserQt::checkIndex(const MetaField& field, std::int64_t value)
void ParserQt::checkIndex(const MetaField& field, std::int64_t value, std::int64_t& index)
{
std::int64_t index = INDEX_NOT_AVAILABLE;
if ((field.flags & MetaFieldFlags::METAFLAG_INDEX) != 0)
{
if (value < 0)
Expand All @@ -1058,7 +1057,6 @@ namespace finalmq {
index = field.index + 1 + value;
}
}
return index;
}


Expand Down

0 comments on commit d5227e8

Please sign in to comment.