esym = vars->esym_ptr;
/* Copy the symbol's name into the string table. */
- sprintf (vars->string_ptr, "%s%s", prefix, symbol_name);
+ int len = sprintf (vars->string_ptr, "%s%s", prefix, symbol_name);
if (section == NULL)
section = bfd_und_section_ptr;
vars->table_ptr ++;
vars->native_ptr ++;
vars->esym_ptr ++;
- vars->string_ptr += strlen (symbol_name) + strlen (prefix) + 1;
+ vars->string_ptr += len + 1;
BFD_ASSERT (vars->string_ptr < vars->end_string_ptr);
}
return false;
}
+/* Cleanup function, returned from check_format hook. */
+
+static void
+pe_ILF_cleanup (bfd *abfd)
+{
+ struct bfd_in_memory *bim = abfd->iostream;
+ free (bim->buffer);
+ free (bim);
+ abfd->iostream = NULL;
+}
+
/* We have detected an Import Library Format archive element.
Decode the element and return the appropriate target. */
return NULL;
}
- return _bfd_no_cleanup;
+ return pe_ILF_cleanup;
}
static void