diff --git a/m-serial-json.h b/m-serial-json.h index b6653bbe..502fab60 100644 --- a/m-serial-json.h +++ b/m-serial-json.h @@ -378,7 +378,7 @@ m_serial_json_read_variant_end(m_serial_read_t serial) FILE *f = (FILE*) serial->data[0]; int final = -1; fscanf(f, " }%n", &final); - return final > 0 ? M_SERIAL_OK_CONTINUE : M_SERIAL_FAIL; + return final > 0 ? M_SERIAL_OK_DONE : M_SERIAL_FAIL; } static const m_serial_read_interface_t m_serial_json_read_interface = { diff --git a/m-variant.h b/m-variant.h index 78076a2c..81cedd66 100644 --- a/m-variant.h +++ b/m-variant.h @@ -551,7 +551,7 @@ M_MAP2(VARIANTI_DEFINE_IN_SERIAL_FUNC , name, __VA_ARGS__) \ default: assert(false); break; \ } \ - if (ret != M_SERIAL_OK_DONE) \ + if (ret == M_SERIAL_OK_DONE) \ ret = f->interface->read_variant_end(f); \ return ret; \ } @@ -584,6 +584,8 @@ M_IF_METHOD2_ALL(PARSE_STR, INIT, __VA_ARGS__)(PARSE_STR(M_C(name, _parse_str)),), \ M_IF_METHOD2_ALL(IN_STR, INIT, __VA_ARGS__)(IN_STR(M_C(name, _in_str)),), \ M_IF_METHOD_ALL(OUT_STR, __VA_ARGS__)(OUT_STR(M_C(name, _out_str)),), \ + M_IF_METHOD2_ALL(IN_SERIAL, INIT, __VA_ARGS__)(IN_SERIAL(M_C(name, _in_serial)),), \ + M_IF_METHOD_ALL(OUT_SERIAL, __VA_ARGS__)(OUT_SERIAL(M_C(name, _out_serial)),), \ M_IF_METHOD_ALL(INIT_MOVE, __VA_ARGS__)(INIT_MOVE(M_C(name, _init_move)),), \ M_IF_METHOD_ALL(INIT_MOVE, __VA_ARGS__)(MOVE(M_C(name, _move)),), \ M_IF_METHOD_ALL(SWAP, __VA_ARGS__)(SWAP(M_C(name, _swap)),), \