Document libbabeltrace2's C API
[babeltrace.git] / src / lib / trace-ir / trace-class.c
index f9aedea0947c2b93092d5917c5575cb69d463352..593f390efac2d4dfd5bf9adcbf467af6db5eccb8 100644 (file)
 #include "lib/assert-pre.h"
 #include "lib/assert-post.h"
 #include <babeltrace2/trace-ir/trace-class.h>
-#include <babeltrace2/trace-ir/trace-class-const.h>
 #include <babeltrace2/trace-ir/event-class.h>
 #include "ctf-writer/functor.h"
 #include "ctf-writer/clock.h"
 #include "compat/compiler.h"
 #include <babeltrace2/value.h>
-#include <babeltrace2/value-const.h>
 #include "lib/value.h"
 #include <babeltrace2/types.h>
 #include "compat/endian.h"
@@ -80,6 +78,8 @@ void destroy_trace_class(struct bt_object *obj)
         */
        if (tc->destruction_listeners) {
                uint64_t i;
+               const struct bt_error *saved_error;
+
                BT_LIB_LOGD("Calling trace class destruction listener(s): %!+T", tc);
 
                /*
@@ -94,6 +94,8 @@ void destroy_trace_class(struct bt_object *obj)
                */
                tc->base.ref_count++;
 
+               saved_error = bt_current_thread_take_error();
+
                /* Call all the trace class destruction listeners */
                for (i = 0; i < tc->destruction_listeners->len; i++) {
                        struct bt_trace_class_destruction_listener_elem elem =
@@ -113,6 +115,10 @@ void destroy_trace_class(struct bt_object *obj)
                }
                g_array_free(tc->destruction_listeners, TRUE);
                tc->destruction_listeners = NULL;
+
+               if (saved_error) {
+                       BT_CURRENT_THREAD_MOVE_ERROR_AND_RESET(saved_error);
+               }
        }
 
        if (tc->stream_classes) {
This page took 0.024509 seconds and 4 git commands to generate.