Module Name: src Committed By: christos Date: Wed Oct 21 13:43:49 UTC 2015
Modified Files: src/external/cddl/osnet/dist/tools/ctf/cvt: ctf.c Log Message: make too many struct or union members non-fatal. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/external/cddl/osnet/dist/tools/ctf/cvt/ctf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/cddl/osnet/dist/tools/ctf/cvt/ctf.c diff -u src/external/cddl/osnet/dist/tools/ctf/cvt/ctf.c:1.8 src/external/cddl/osnet/dist/tools/ctf/cvt/ctf.c:1.9 --- src/external/cddl/osnet/dist/tools/ctf/cvt/ctf.c:1.8 Sat Feb 7 15:30:03 2015 +++ src/external/cddl/osnet/dist/tools/ctf/cvt/ctf.c Wed Oct 21 09:43:49 2015 @@ -387,8 +387,9 @@ write_type(void *arg1, void *arg2) i++; /* count up struct or union members */ if (i > CTF_MAX_VLEN) { - terminate("sou %s has too many members: %d > %d\n", + warning("sou %s has too many members: %d > %d\n", tdesc_name(tp), i, CTF_MAX_VLEN); + i = CTF_MAX_VLEN; } if (tp->t_type == STRUCT) @@ -399,7 +400,8 @@ write_type(void *arg1, void *arg2) write_sized_type_rec(b, &ctt, tp->t_size); if (tp->t_size < CTF_LSTRUCT_THRESH) { - for (mp = tp->t_members; mp != NULL; mp = mp->ml_next) { + for (mp = tp->t_members; mp != NULL && i > 0; + mp = mp->ml_next) { offset = strtab_insert(&b->ctb_strtab, mp->ml_name); @@ -413,9 +415,11 @@ write_type(void *arg1, void *arg2) SWAP_16(ctm.ctm_offset); } ctf_buf_write(b, &ctm, sizeof (ctm)); + i--; } } else { - for (mp = tp->t_members; mp != NULL; mp = mp->ml_next) { + for (mp = tp->t_members; mp != NULL && i > 0; + mp = mp->ml_next) { offset = strtab_insert(&b->ctb_strtab, mp->ml_name); @@ -435,6 +439,7 @@ write_type(void *arg1, void *arg2) } ctf_buf_write(b, &ctlm, sizeof (ctlm)); + i--; } } break;