fixed: in Space::CallSpace() we should not increment field index when a new table item is prepared

This commit is contained in:
Tomasz Sowa 2021-06-23 21:56:04 +02:00
parent 87ee461dd1
commit 16bce07c75
1 changed files with 7 additions and 1 deletions

View File

@ -1253,7 +1253,7 @@ void Generator<StreamType>::CallSpace(morm::ModelWrapper & model_wrapper, pt::Sp
last_res = false;
std::wstring * field = nullptr;
for(size_t i=field_index ; i < fields.size() + 1 ; ++i)
for(size_t i=field_index ; i < fields.size() + 1 ; )
{
bool is_last_field = (i == fields.size());
field = (i == 0) ? find_helper.fun_name : &fields[i - 1];
@ -1269,6 +1269,7 @@ void Generator<StreamType>::CallSpace(morm::ModelWrapper & model_wrapper, pt::Sp
}
else
{
pt::Space * old = space;
std::wstring & next_field = fields[i];
space = space->get_object_field(next_field);
@ -1282,6 +1283,8 @@ void Generator<StreamType>::CallSpace(morm::ModelWrapper & model_wrapper, pt::Sp
break;
}
}
++i;
}
else
if( space->is_table() )
@ -1320,6 +1323,8 @@ void Generator<StreamType>::CallSpace(morm::ModelWrapper & model_wrapper, pt::Sp
(*table)[iterator_value]->serialize_to_json_stream(out_stream);
}
}
++i;
}
else
{
@ -1347,6 +1352,7 @@ void Generator<StreamType>::CallSpace(morm::ModelWrapper & model_wrapper, pt::Sp
if( is_last_field )
{
space->serialize_to_string(out_stream);
++i;
}
else
{