X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Fevent.c;h=046028cd219a46b25866770c1d8c96b8405092a2;hp=9413b7052ee80817360853669e9ec05e36546e13;hb=abcc74facc86124042abdb9fd4391b6eadda2b9e;hpb=8bd52288b87c954916e836066241790f23e9d5e6 diff --git a/src/lib/lttng-ctl/event.c b/src/lib/lttng-ctl/event.c index 9413b7052..046028cd2 100644 --- a/src/lib/lttng-ctl/event.c +++ b/src/lib/lttng-ctl/event.c @@ -54,6 +54,38 @@ error: goto end; } +struct lttng_event *lttng_event_copy(const struct lttng_event *event) +{ + struct lttng_event *new_event; + struct lttng_event_extended *new_event_extended; + + new_event = zmalloc(sizeof(*event)); + if (!event) { + PERROR("Error allocating event structure"); + goto end; + } + + /* Copy the content of the old event. */ + memcpy(new_event, event, sizeof(*event)); + + /* + * We need to create a new extended since the previous pointer is now + * invalid. + */ + new_event_extended = zmalloc(sizeof(*new_event_extended)); + if (!new_event_extended) { + PERROR("Error allocating event extended structure"); + goto error; + } + + new_event->extended.ptr = new_event_extended; +end: + return new_event; +error: + free(event); + goto end; +} + void lttng_event_destroy(struct lttng_event *event) { struct lttng_event_extended *event_extended;