projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix segfault when typealias fails
[babeltrace.git]
/
formats
/
ctf
/
metadata
/
ctf-visitor-generate-io-struct.c
diff --git
a/formats/ctf/metadata/ctf-visitor-generate-io-struct.c
b/formats/ctf/metadata/ctf-visitor-generate-io-struct.c
index 640b8fdff7c1ae6dc5095735328b2224972a1c79..cda3329be4455be450b31d611ce0c8e0dee23690 100644
(file)
--- a/
formats/ctf/metadata/ctf-visitor-generate-io-struct.c
+++ b/
formats/ctf/metadata/ctf-visitor-generate-io-struct.c
@@
-468,6
+468,13
@@
int ctf_variant_type_declarators_visit(FILE *fd, int depth,
fprintf(fd, "[error] %s: unable to find variant field declaration type\n", __func__);
return -EINVAL;
}
fprintf(fd, "[error] %s: unable to find variant field declaration type\n", __func__);
return -EINVAL;
}
+
+ if (untagged_variant_declaration_get_field_from_tag(untagged_variant_declaration, field_name) != NULL) {
+ fprintf(fd, "[error] %s: duplicate field %s in variant\n", __func__, g_quark_to_string(field_name));
+ return -EINVAL;
+ }
+
+
untagged_variant_declaration_add_field(untagged_variant_declaration,
g_quark_to_string(field_name),
field_declaration);
untagged_variant_declaration_add_field(untagged_variant_declaration,
g_quark_to_string(field_name),
field_declaration);
@@
-577,7
+584,9
@@
int ctf_typealias_visit(FILE *fd, int depth, struct declaration_scope *scope,
return 0;
error:
return 0;
error:
- type_declaration->declaration_free(type_declaration);
+ if (type_declaration) {
+ type_declaration->declaration_free(type_declaration);
+ }
return err;
}
return err;
}
This page took
0.023559 seconds
and
4
git commands to generate.