diff options
Diffstat (limited to 'bfd/elf-strtab.c')
-rw-r--r-- | bfd/elf-strtab.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/bfd/elf-strtab.c b/bfd/elf-strtab.c index d3e50c7..c397180 100644 --- a/bfd/elf-strtab.c +++ b/bfd/elf-strtab.c @@ -245,13 +245,16 @@ _bfd_elf_strtab_save (struct elf_strtab_hash *tab) void _bfd_elf_strtab_restore (struct elf_strtab_hash *tab, void *buf) { - size_t idx, curr_size = tab->size; + size_t idx, curr_size = tab->size, save_size; struct strtab_save *save = (struct strtab_save *) buf; BFD_ASSERT (tab->sec_size == 0); - BFD_ASSERT (save->size <= curr_size); - tab->size = save->size; - for (idx = 1; idx < save->size; ++idx) + save_size = 1; + if (save != NULL) + save_size = save->size; + BFD_ASSERT (save_size <= curr_size); + tab->size = save_size; + for (idx = 1; idx < save_size; ++idx) tab->array[idx]->refcount = save->refcount[idx]; for (; idx < curr_size; ++idx) |