Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions erpcgen/src/templates/c_common_functions.template
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,14 @@ static void read_{$struct.name}_struct(erpc::{$codecClass} * codec, {$struct.nam
{% if struct.needTempVariable %}
int32_t _tmp_local;
{% endif %}
{% if struct.needTempVariable || struct.hasNullableMember %}

{% endif %}
if(NULL == data)
{
return;
}

{% for mem in struct.members if (shared == "def" && not mem.serializedViaMember) || (mem.noSharedMem && shared == "noSharedMem") %}
{% if mem.isNullable %}
codec->readNullFlag(&isNull);
Expand Down Expand Up @@ -185,6 +193,11 @@ static void write_{$struct.name}_struct_shared(erpc::{$codecClass} * codec, cons
static void write_{$struct.name}_struct(erpc::{$codecClass} * codec, const {$struct.name} * data)
{% endif %}
{
if(NULL == data)
{
return;
}

{% for mem in struct.members if (shared == "def" && not mem.serializedViaMember) || (mem.noSharedMem && shared == "noSharedMem") %}
{% if mem.isNullable %}
if ({$mem.coderCall.name}{$mem.structElements} == NULL)
Expand Down Expand Up @@ -275,6 +288,11 @@ static void read_{$union.name}_union(erpc::{$codecClass} * codec, int32_t * disc
int32_t _tmp_local;

{% endif %}
if(NULL == data)
{
return;
}

{$addIndent(" ", decodeUnionType(union.coderCall))}
}
{% enddef -- unionDeserialSource %}
Expand All @@ -289,6 +307,11 @@ static void write_{$union.name}_union_shared(erpc::{$codecClass} * codec, int32_
static void write_{$union.name}_union(erpc::{$codecClass} * codec, int32_t discriminator, const {$union.name} * data)
{% endif %}
{
if(NULL == data)
{
return;
}

{$addIndent(" ", encodeUnionType(union.coderCall))}
}
{% enddef -- unionSerialSource %}
Expand Down
8 changes: 8 additions & 0 deletions erpcgen/test/test_struct.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,19 @@ test.h:
- struct list_int32_1_t
test_client.cpp:
- write_list_int32_1_t_struct
- if(NULL == data)
- return;
- read_list_int32_1_t_struct
- if(NULL == data)
- return;
- ListType * bar(const ListType * x)
test_server.cpp:
- read_list_int32_1_t_struct
- if(NULL == data)
- return;
- write_list_int32_1_t_struct
- if(NULL == data)
- return;
- free_list_int32_1_t_struct

---
Expand Down
8 changes: 6 additions & 2 deletions erpcgen/test/test_union_c.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ test.h:
- not: float y;

test_client.cpp:
- static void write_unionType_union(erpc::Codec * codec, int32_t discriminator, const unionType * data);
- static void write_unionType_union(erpc::Codec * codec, int32_t discriminator, const unionType * data)
- static void write_unionType_union(erpc::Codec * codec, int32_t discriminator, const unionType * data);
- static void write_unionType_union(erpc::Codec * codec, int32_t discriminator, const unionType * data)

test_server.cpp:
- static void read_unionType_union(erpc::Codec * codec, int32_t * discriminator, unionType * data);
Expand Down Expand Up @@ -101,6 +101,8 @@ test_client.cpp:
- static void write_unionType_union(erpc::Codec * codec, int32_t discriminator, const unionType * data);
- static void write_unionType_union(erpc::Codec * codec, int32_t discriminator, const unionType * data)
- "{"
- if(NULL == data)
- return;
- codec->startWriteUnion(discriminator);
- switch (discriminator)
- "{"
Expand Down Expand Up @@ -153,6 +155,8 @@ test_server.cpp:
- static void read_unionType_union(erpc::Codec * codec, int32_t * discriminator, unionType * data);
- static void read_unionType_union(erpc::Codec * codec, int32_t * discriminator, unionType * data)
- "{"
- if(NULL == data)
- return;
- codec->startReadUnion(discriminator);
- switch (*discriminator)
- "{"
Expand Down