Use automatic allocation for section data

This commit is contained in:
Rangi42
2024-02-22 15:45:09 -05:00
committed by Sylvie
parent 72e9f55368
commit dec1811d20
3 changed files with 5 additions and 9 deletions

View File

@@ -5,6 +5,7 @@
#include <deque>
#include <stdint.h>
#include <vector>
#include "linkdefs.hpp"
#include "platform.hpp" // NONNULL
@@ -38,7 +39,7 @@ struct Section {
uint8_t align; // Exactly as specified in `ALIGN[]`
uint16_t alignOfs;
std::deque<struct Patch> patches;
uint8_t *data;
std::vector<uint8_t> data;
};
struct SectionSpec {

View File

@@ -135,7 +135,7 @@ static void writesection(struct Section const &sect, FILE *f)
putlong(sect.alignOfs, f);
if (sect_HasData(sect.type)) {
fwrite(sect.data, 1, sect.size, f);
fwrite(sect.data.data(), 1, sect.size, f);
putlong(sect.patches.size(), f);
for (struct Patch const &patch : sect.patches)

View File

@@ -286,13 +286,8 @@ static struct Section *createSection(char const *name, enum SectionType type,
sect.alignOfs = alignOffset;
// It is only needed to allocate memory for ROM sections.
if (sect_HasData(type)) {
sect.data = (uint8_t *)malloc(sectionTypeInfo[type].size);
if (sect.data == NULL)
fatalerror("Not enough memory for section: %s\n", strerror(errno));
} else {
sect.data = NULL;
}
if (sect_HasData(type))
sect.data.resize(sectionTypeInfo[type].size);
return &sect;
}