Utilise magic memory tree interface for urclock.c

This commit is contained in:
Stefan Rueger
2024-04-19 12:35:39 +01:00
parent 8fe729f0a2
commit af5f7ee565
2 changed files with 13 additions and 12 deletions

View File

@@ -44,6 +44,7 @@ extern const char *pgmid; // Programmer -c string
#define mmt_strdup(s) cfg_strdup(__func__, s)
#define mmt_malloc(n) cfg_malloc(__func__, n)
#define mmt_realloc(p, n) cfg_realloc(__func__, p, n)
#define mmt_free(p) free(p)
int avrdude_message2(FILE *fp, int lno, const char *file, const char *func, int msgmode, int msglvl, const char *format, ...);

View File

@@ -1803,38 +1803,38 @@ static int ur_readEF(const PROGRAMMER *pgm, const AVRPART *p, uint8_t *buf, uint
static int parseUrclockID(const PROGRAMMER *pgm) {
if(*ur.iddesc) { // User override of ID, eg, -xid=F.-4.2 for penultimate flash word
char *idstr = cfg_strdup(__func__, ur.iddesc), *idlenp;
char *idstr = mmt_strdup(ur.iddesc), *idlenp;
const char *errstr;
int ad, lg;
if(!(strchr("EF", *idstr) && idstr[1] == '.')) {
pmsg_warning("-xid=%s string must start with E. or F.\n", ur.iddesc);
free(idstr);
mmt_free(idstr);
return -1;
}
if(!(idlenp = strchr(idstr+2, '.'))) {
pmsg_warning("-xid=%s string must look like [E|F].<addr>.<len>\n", ur.iddesc);
free(idstr);
mmt_free(idstr);
return -1;
}
*idlenp++ = 0;
ad = str_int(idstr+2, STR_INT32, &errstr);
if(errstr) {
pmsg_warning("address %s of -xid=%s: %s\n", idstr+2, ur.iddesc, errstr);
free(idstr);
mmt_free(idstr);
return -1;
}
lg = str_int(idlenp, STR_INT32, &errstr);
if(errstr) {
pmsg_warning("length %s of -xid=%s string: %s\n", idlenp, ur.iddesc, errstr);
free(idstr);
mmt_free(idstr);
return -1;
}
if(!lg || lg > 8) {
pmsg_warning("length %s of -xid=%s string must be between 1 and 8\n", idlenp, ur.iddesc);
free(idstr);
mmt_free(idstr);
return -1;
}
@@ -1842,7 +1842,7 @@ static int parseUrclockID(const PROGRAMMER *pgm) {
ur.idaddr = ad;
ur.idlen = lg;
free(idstr);
mmt_free(idstr);
}
return 0;
@@ -2155,14 +2155,14 @@ static int urclock_chip_erase(const PROGRAMMER *pgm, const AVRPART *p) {
AVRMEM *flm = avr_locate_flash(p);
int vecsz = ur.uP.flashsize <= 8192? 2: 4;
if(flm && flm->page_size >= vecsz) {
unsigned char *page = cfg_malloc(__func__, flm->page_size);
unsigned char *page = mmt_malloc(flm->page_size);
memset(page, 0xff, flm->page_size);
set_reset(pgm, page, vecsz);
if(avr_write_page_default(pgm, p, flm, 0, page) < 0) {
free(page);
mmt_free(page);
return -1;
}
free(page);
mmt_free(page);
}
}
}
@@ -2539,7 +2539,7 @@ static int urclock_parseextparms(const PROGRAMMER *pgm, LISTID extparms) {
static void urclock_setup(PROGRAMMER *pgm) {
// Allocate ur
pgm->cookie = cfg_malloc(__func__, sizeof(Urclock_t));
pgm->cookie = mmt_malloc(sizeof(Urclock_t));
ur.xvectornum = -1; // Initialise, to ascertain whether user had set to 0
ur.ext_addr_byte = 0xff; // So first memory address will load extended address
@@ -2549,7 +2549,7 @@ static void urclock_setup(PROGRAMMER *pgm) {
static void urclock_teardown(PROGRAMMER *pgm) {
free(pgm->cookie);
mmt_free(pgm->cookie);
pgm->cookie = NULL;
}