X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fgraph%2Fcomponent.c;h=31abc0737c554574e18e5b09df5bd79ff0474132;hb=0df078e5f68193e1eeae377cad44a8e36d563ee2;hp=26d77605be391eb197814d43f67b8af38ca8d3fa;hpb=1d7c2b390fd7cf8b1e0b45b6d7bd3219111a6ff0;p=babeltrace.git diff --git a/lib/graph/component.c b/lib/graph/component.c index 26d77605..31abc073 100644 --- a/lib/graph/component.c +++ b/lib/graph/component.c @@ -195,6 +195,8 @@ struct bt_component *bt_component_create_with_init_method_data( enum bt_component_class_type type; struct bt_port *default_port = NULL; + bt_get(params); + if (!component_class) { goto end; } @@ -205,6 +207,21 @@ struct bt_component *bt_component_create_with_init_method_data( goto end; } + /* + * Parameters must be a map value, but we create a convenient + * empty one if it's NULL. + */ + if (params) { + if (!bt_value_is_map(params)) { + goto end; + } + } else { + params = bt_value_map_create(); + if (!params) { + goto end; + } + } + component = component_create_funcs[type](component_class, params); if (!component) { goto end; @@ -281,6 +298,7 @@ struct bt_component *bt_component_create_with_init_method_data( bt_component_class_freeze(component->class); end: + bt_put(params); bt_put(default_port); return component; }