Fix: python: free py_config_ptr in component_class_message_iterator_init
[babeltrace.git] / src / bindings / python / bt2 / bt2 / native_bt_component_class.i.h
index f0ba04258d2a331705d3586a67b5c247162e2b7b..8e284c0401f8281d66bfe94ecfb718cc76b3c059 100644 (file)
@@ -1,25 +1,7 @@
 /*
- * The MIT License (MIT)
+ * SPDX-License-Identifier: MIT
  *
  * Copyright (c) 2017 Philippe Proulx <pproulx@efficios.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
  */
 
 #include "logging/comp-logging.h"
@@ -43,6 +25,8 @@
  * a BT component object instance.
  */
 
+#define BT_FMT_SWIG_ALLOC_FAILED "Failed to create a SWIG pointer object."
+
 static GHashTable *bt_cc_ptr_to_py_cls;
 
 static
@@ -234,7 +218,7 @@ bt_component_class_initialize_method_status component_class_init(
                SWIGTYPE_p_bt_value, 0);
        if (!py_params_ptr) {
                BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, log_level, self_component,
-                       "Failed to create a SWIG pointer object.");
+                       BT_FMT_SWIG_ALLOC_FAILED);
                goto error;
        }
 
@@ -242,7 +226,7 @@ bt_component_class_initialize_method_status component_class_init(
                self_comp_cls_type_swig_type, 0);
        if (!py_comp_ptr) {
                BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, log_level, self_component,
-                       "Failed to create a SWIG pointer object.");
+                       BT_FMT_SWIG_ALLOC_FAILED);
                goto error;
        }
 
@@ -324,7 +308,7 @@ component_class_get_supported_mip_versions(
                SWIGTYPE_p_bt_value, 0);
        if (!py_params_ptr) {
                BT_LOG_WRITE_CUR_LVL(BT_LOG_ERROR, log_level, BT_LOG_TAG,
-                       "Failed to create a SWIG pointer object.");
+                       BT_FMT_SWIG_ALLOC_FAILED);
                goto error;
        }
 
@@ -790,7 +774,7 @@ bt_component_class_port_connected_method_status component_class_port_connected(
                self_component_port_swig_type, 0);
        if (!py_self_port_ptr) {
                BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, log_level, self_component,
-                       "Failed to create a SWIG pointer object.");
+                       BT_FMT_SWIG_ALLOC_FAILED);
                status = __BT_FUNC_STATUS_MEMORY_ERROR;
                goto end;
        }
@@ -799,7 +783,7 @@ bt_component_class_port_connected_method_status component_class_port_connected(
                other_port_swig_type, 0);
        if (!py_other_port_ptr) {
                BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, log_level, self_component,
-                       "Failed to create a SWIG pointer object.");
+                       BT_FMT_SWIG_ALLOC_FAILED);
                status = __BT_FUNC_STATUS_MEMORY_ERROR;
                goto end;
        }
@@ -965,7 +949,7 @@ bt_component_class_query_method_status component_class_query(
                SWIGTYPE_p_bt_value, 0);
        if (!py_params_ptr) {
                BT_LOG_WRITE_CUR_LVL(BT_LOG_ERROR, log_level, BT_LOG_TAG,
-                       "Failed to create a SWIG pointer object.");
+                       BT_FMT_SWIG_ALLOC_FAILED);
                goto error;
        }
 
@@ -974,7 +958,7 @@ bt_component_class_query_method_status component_class_query(
                SWIGTYPE_p_bt_private_query_executor, 0);
        if (!py_priv_query_exec_ptr) {
                BT_LOG_WRITE_CUR_LVL(BT_LOG_ERROR, log_level, BT_LOG_TAG,
-                       "Failed to create a SWIG pointer object.");
+                       BT_FMT_SWIG_ALLOC_FAILED);
                goto error;
        }
 
@@ -1000,12 +984,12 @@ bt_component_class_query_method_status component_class_query(
                status = py_exc_to_status_component_class_clear(self_component_class,
                        log_level);
                if (status < 0) {
-                       static const char *fmt =
-                               "Failed to call Python class's _bt_query_from_native() method: py-cls-addr=%p";
+#define BT_FMT "Failed to call Python class's _bt_query_from_native() method: py-cls-addr=%p"
                        BT_LOG_WRITE_CUR_LVL(BT_LOG_WARNING, log_level, BT_LOG_TAG,
-                               fmt, py_cls);
+                               BT_FMT, py_cls);
                        BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_COMPONENT_CLASS(
-                               self_component_class, fmt, py_cls);
+                               self_component_class, BT_FMT, py_cls);
+#undef BT_FMT
                }
                goto end;
        }
@@ -1120,12 +1104,10 @@ component_class_message_iterator_init(
        py_iter_ptr = SWIG_NewPointerObj(SWIG_as_voidptr(self_message_iterator),
                SWIGTYPE_p_bt_self_message_iterator, 0);
        if (!py_iter_ptr) {
-               const char *err = "Failed to create a SWIG pointer object.";
-
                BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, log_level, self_component,
-                       "%s", err);
+                       BT_FMT_SWIG_ALLOC_FAILED);
                BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_MESSAGE_ITERATOR(
-                       self_message_iterator, err);
+                       self_message_iterator, BT_FMT_SWIG_ALLOC_FAILED);
                goto error;
        }
 
@@ -1159,12 +1141,10 @@ component_class_message_iterator_init(
        py_config_ptr = SWIG_NewPointerObj(SWIG_as_voidptr(config),
                SWIGTYPE_p_bt_self_message_iterator_configuration, 0);
        if (!py_config_ptr) {
-               const char *err = "Failed to create a SWIG pointer object";
-
                BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, log_level, self_component,
-                       "%s", err);
+                       BT_FMT_SWIG_ALLOC_FAILED);
                BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_MESSAGE_ITERATOR(
-                       self_message_iterator, err);
+                       self_message_iterator, BT_FMT_SWIG_ALLOC_FAILED);
                goto error;
        }
 
@@ -1172,12 +1152,10 @@ component_class_message_iterator_init(
                SWIG_as_voidptr(self_component_port_output),
                SWIGTYPE_p_bt_self_component_port_output, 0);
        if (!py_component_port_output_ptr) {
-               const char *err = "Failed to create a SWIG pointer object.";
-
                BT_COMP_LOG_CUR_LVL(BT_LOG_ERROR, log_level, self_component,
-                       "%s", err);
+                       "%s", BT_FMT_SWIG_ALLOC_FAILED);
                BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_MESSAGE_ITERATOR(
-                       self_message_iterator, err);
+                       self_message_iterator, BT_FMT_SWIG_ALLOC_FAILED);
                goto error;
        }
 
@@ -1227,6 +1205,7 @@ end:
        Py_XDECREF(py_comp_cls);
        Py_XDECREF(py_iter_cls);
        Py_XDECREF(py_iter_ptr);
+       Py_XDECREF(py_config_ptr);
        Py_XDECREF(py_component_port_output_ptr);
        Py_XDECREF(py_init_method_result);
        Py_XDECREF(py_iter);
This page took 0.026203 seconds and 4 git commands to generate.