ret = -EPERM;
goto error;
} else {
- CTF_TRACE_SET_FIELD(trace, byte_order);
if (byte_order != trace->byte_order) {
trace->byte_order = byte_order;
/*
* construction of the
* intermediate representation.
*/
- return -EINTR;
+ trace->field_mask = 0;
+ CTF_TRACE_SET_FIELD(trace, byte_order);
+ ret = -EINTR;
+ goto error;
}
}
+ CTF_TRACE_SET_FIELD(trace, byte_order);
} else if (!strcmp(left, "packet.header")) {
struct declaration *declaration;
return 0;
error:
- if (trace->packet_header_decl)
+ if (trace->packet_header_decl) {
declaration_unref(&trace->packet_header_decl->p);
+ trace->packet_header_decl = NULL;
+ }
g_ptr_array_free(trace->streams, TRUE);
free_declaration_scope(trace->declaration_scope);
trace->declaration_scope = NULL;
/* byte order changed while creating types, retry. */
- if (ret == -EINTR)
+ if (ret == -EINTR) {
goto restart;
+ }
return ret;
}