From c45e1bf55775aaeaa266d5e5566cc10ee457fe3f Mon Sep 17 00:00:00 2001 From: Chris Lalancette Date: Tue, 30 Jun 2020 15:30:54 -0400 Subject: [PATCH 1/2] Add pytest.ini so tests succeed locally. (#116) * Add pytest.ini so tests succeed locally. Signed-off-by: Chris Lalancette --- rosidl_generator_py/pytest.ini | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 rosidl_generator_py/pytest.ini diff --git a/rosidl_generator_py/pytest.ini b/rosidl_generator_py/pytest.ini new file mode 100644 index 00000000..fe55d2ed --- /dev/null +++ b/rosidl_generator_py/pytest.ini @@ -0,0 +1,2 @@ +[pytest] +junit_family=xunit2 From cd55302831e90bcfdb31d25371e0423be4d72d0c Mon Sep 17 00:00:00 2001 From: Dirk Thomas Date: Mon, 13 Jul 2020 12:26:45 -0700 Subject: [PATCH 2/2] fix too early decref of WString when converting from Python to C (#117) Signed-off-by: Dirk Thomas --- rosidl_generator_py/resource/_msg_support.c.em | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rosidl_generator_py/resource/_msg_support.c.em b/rosidl_generator_py/resource/_msg_support.c.em index c4709de4..25aa742d 100644 --- a/rosidl_generator_py/resource/_msg_support.c.em +++ b/rosidl_generator_py/resource/_msg_support.c.em @@ -344,14 +344,15 @@ nested_type = '__'.join(type_.namespaced_name()) char * buffer; Py_ssize_t length; int rc = PyBytes_AsStringAndSize(encoded_item, &buffer, &length); - Py_DECREF(encoded_item); if (rc) { + Py_DECREF(encoded_item); Py_DECREF(seq_field); Py_DECREF(field); return false; } // use offset of 2 to skip BOM mark bool succeeded = rosidl_runtime_c__U16String__assignn_from_char(&dest[i], buffer + 2, length - 2); + Py_DECREF(encoded_item); if (!succeeded) { Py_DECREF(seq_field); Py_DECREF(field); @@ -429,14 +430,15 @@ nested_type = '__'.join(type_.namespaced_name()) char * buffer; Py_ssize_t length; int rc = PyBytes_AsStringAndSize(encoded_field, &buffer, &length); - Py_DECREF(encoded_field); if (rc) { + Py_DECREF(encoded_field); Py_DECREF(field); return false; } // use offset of 2 to skip BOM mark { bool succeeded = rosidl_runtime_c__U16String__assignn_from_char(&ros_message->@(member.name), buffer + 2, length - 2); + Py_DECREF(encoded_field); if (!succeeded) { Py_DECREF(field); return false;