diff options
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r-- | gdb/ada-lang.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 0a27ba0..4b1e292 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -6116,9 +6116,17 @@ static unsigned int field_alignment (struct type *type, int f) { const char *name = TYPE_FIELD_NAME (type, f); - int len = (name == NULL) ? 0 : strlen (name); + int len; int align_offset; + /* The field name should never be null, unless the debugging information + is somehow malformed. In this case, we assume the field does not + require any alignment. */ + if (name == NULL) + return 1; + + len = strlen (name); + if (!isdigit (name[len - 1])) return 1; |