X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Fmarker.c;h=3e2ab3d68cd4c98cbbac008dd31bf662085dc4e6;hb=256a5b3a59052aabbb4168c052764b5ba552ae99;hp=f1053d8ccdb850346eb587071110d97d3cd38bc8;hpb=03dab2c12579a972e206610262ea870dd37e1a5a;p=lttv.git diff --git a/ltt/branches/poly/ltt/marker.c b/ltt/branches/poly/ltt/marker.c index f1053d8c..3e2ab3d6 100644 --- a/ltt/branches/poly/ltt/marker.c +++ b/ltt/branches/poly/ltt/marker.c @@ -267,11 +267,17 @@ long marker_update_fields_offsets(struct marker_info *info, const char *data) unsigned int i; long offset = 0; - for (i = 0; i < info->fields->len; i++) { + /* Find the last field with a static offset, then update from there. */ + for (i = info->fields->len - 1; i >= 0; i--) { field = &g_array_index(info->fields, struct marker_field, i); + if (field->static_offset) { + offset = field->offset; + break; + } + } - if (field->static_offset) - continue; + for (; i < info->fields->len; i++) { + field = &g_array_index(info->fields, struct marker_field, i); switch (field->type) { case LTT_TYPE_SIGNED_INT: @@ -346,7 +352,7 @@ static void format_parse(const char *fmt, struct marker_info *info) } break; case ' ': - if (name_end && name_begin) { + if (!name_end && name_begin) { name_end = fmt; if (name) g_free(name); @@ -356,7 +362,7 @@ static void format_parse(const char *fmt, struct marker_info *info) } break; /* Skip white spaces */ default: - if (!name) { + if (!name_begin) { name_begin = fmt; name_end = NULL; }