Skip to content

Commit

Permalink
Fix double free issue when initialization is failed (#423) (#426)
Browse files Browse the repository at this point in the history
Signed-off-by: Donghee Ye <donghee.ye@samsung.com>
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
  • Loading branch information
clalancette authored and wjwwood committed Dec 14, 2019
1 parent 1172413 commit 8ec148f
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions rosidl_generator_c/resource/msg__functions.c.em
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ for member in message.structure.members:
# initialize each array element
lines.append('for (size_t i = 0; i < %d; ++i) {' % member.type.size)
lines.append(' if (!%s__init(&msg->%s[i])) {' % (basetype_to_c(member.type.value_type), member.name))
lines.append(' %s__destroy(msg);' % message_typename)
lines.append(' %s__fini(msg);' % message_typename)
lines.append(' return false;')
lines.append(' }')
lines.append('}')
Expand All @@ -131,7 +131,7 @@ for member in message.structure.members:
if not member.has_annotation('default'):
# initialize the dynamic array with a capacity of zero
lines.append('if (!%s__init(&msg->%s, 0)) {' % (idl_type_to_c(member.type), member.name))
lines.append(' %s__destroy(msg);' % message_typename)
lines.append(' %s__fini(msg);' % message_typename)
lines.append(' return false;')
lines.append('}')
else:
Expand Down Expand Up @@ -169,14 +169,14 @@ for member in message.structure.members:
elif isinstance(member.type, NamespacedType):
# initialize the sub message
lines.append('if (!%s__init(&msg->%s)) {' % (basetype_to_c(member.type), member.name))
lines.append(' %s__destroy(msg);' % message_typename)
lines.append(' %s__fini(msg);' % message_typename)
lines.append(' return false;')
lines.append('}')
# no default value for nested messages yet

elif isinstance(member.type, AbstractGenericString):
lines.append('if (!%s__init(&msg->%s)) {' % (basetype_to_c(member.type), member.name))
lines.append(' %s__destroy(msg);' % message_typename)
lines.append(' %s__fini(msg);' % message_typename)
lines.append(' return false;')
lines.append('}')
if member.has_annotation('default'):
Expand Down

0 comments on commit 8ec148f

Please sign in to comment.