diff --git a/src/avrpart.c b/src/avrpart.c index baaebd9d..34b678a2 100644 --- a/src/avrpart.c +++ b/src/avrpart.c @@ -33,22 +33,21 @@ ***/ OPCODE *avr_new_opcode(void) { - return (OPCODE *) cfg_malloc("avr_new_opcode()", sizeof(OPCODE)); + return (OPCODE *) mmt_malloc(sizeof(OPCODE)); } static OPCODE *avr_dup_opcode(const OPCODE *op) { if(op == NULL) // Caller wants NULL if op == NULL return NULL; - OPCODE *m = (OPCODE *) cfg_malloc("avr_dup_opcode()", sizeof(*m)); + OPCODE *m = (OPCODE *) mmt_malloc(sizeof(*m)); memcpy(m, op, sizeof(*m)); return m; } void avr_free_opcode(OPCODE *op) { - if(op) - free(op); + mmt_free(op); } @@ -296,7 +295,7 @@ int avr_get_output_index(const OPCODE *op) { ***/ AVRMEM *avr_new_mem(void) { - AVRMEM *m = (AVRMEM *) cfg_malloc("avr_new_mem()", sizeof(*m)); + AVRMEM *m = (AVRMEM *) mmt_malloc(sizeof(*m)); m->desc = cache_string(""); m->page_size = 1; // Ensure not 0 m->initval = -1; // Unknown value represented as -1 @@ -306,7 +305,7 @@ AVRMEM *avr_new_mem(void) { } AVRMEM_ALIAS *avr_new_memalias(void) { - AVRMEM_ALIAS *m = (AVRMEM_ALIAS *) cfg_malloc("avr_new_memalias()", sizeof*m); + AVRMEM_ALIAS *m = (AVRMEM_ALIAS *) mmt_malloc(sizeof *m); m->desc = cache_string(""); return m; } @@ -322,8 +321,8 @@ int avr_initmem(const AVRPART *p) { for (LNODEID ln=lfirst(p->mem); ln; ln=lnext(ln)) { AVRMEM *m = ldata(ln); - m->buf = (unsigned char *) cfg_malloc("avr_initmem()", m->size); - m->tags = (unsigned char *) cfg_malloc("avr_initmem()", m->size); + m->buf = mmt_malloc(m->size); + m->tags = mmt_malloc(m->size); } return 0; @@ -337,12 +336,12 @@ AVRMEM *avr_dup_mem(const AVRMEM *m) { *n = *m; if(m->buf) { - n->buf = (unsigned char *) cfg_malloc("avr_dup_mem()", n->size); + n->buf = mmt_malloc(n->size); memcpy(n->buf, m->buf, n->size); } if(m->tags) { - n->tags = (unsigned char *) cfg_malloc("avr_dup_mem()", n->size); + n->tags = (unsigned char *) mmt_malloc(n->size); memcpy(n->tags, m->tags, n->size); } @@ -367,11 +366,11 @@ void avr_free_mem(AVRMEM * m) { return; if(m->buf) { - free(m->buf); + mmt_free(m->buf); m->buf = NULL; } if(m->tags) { - free(m->tags); + mmt_free(m->tags); m->tags = NULL; } for(size_t i=0; iop)/sizeof(m->op[0]); i++) { @@ -380,12 +379,11 @@ void avr_free_mem(AVRMEM * m) { m->op[i] = NULL; } } - free(m); + mmt_free(m); } void avr_free_memalias(AVRMEM_ALIAS *m) { - if(m) - free(m); + mmt_free(m); } AVRMEM_ALIAS *avr_locate_memalias(const AVRPART *p, const char *desc) { @@ -602,7 +600,7 @@ const Register_file_t *avr_locate_register(const Register_file_t *rgf, int nr, c const Register_file_t **avr_locate_registerlist(const Register_file_t *rgf, int nr, const char *reg, int (*match)(const char *, const char*)) { - const Register_file_t **ret = cfg_malloc(__func__, sizeof rgf*(nr>0? nr+1: 1)), **r = ret; + const Register_file_t **ret = mmt_malloc(sizeof rgf*(nr>0? nr+1: 1)), **r = ret; int eqmatch = match == str_eq; if(rgf && reg && match) @@ -617,7 +615,7 @@ const Register_file_t **avr_locate_registerlist(const Register_file_t *rgf, int return ret; } if(!eqmatch && str_eq(p, reg)) { // reg same as segment: switch to str_eq() match - free(ret); + mmt_free(ret); return avr_locate_registerlist(rgf, nr, reg, str_eq); } if(!reg_matched++) // Record a matching register only once @@ -668,7 +666,7 @@ const Configitem_t *avr_locate_config(const Configitem_t *cfg, int nc, const cha const Configitem_t **avr_locate_configlist(const Configitem_t *cfg, int nc, const char *name, int (*match)(const char *, const char*)) { - const Configitem_t **ret = cfg_malloc(__func__, sizeof cfg*(nc>0? nc+1: 1)), **r = ret; + const Configitem_t **ret = mmt_malloc(sizeof cfg*(nc>0? nc+1: 1)), **r = ret; if(cfg && name && match) { for(int i = 0; i < nc; i++) @@ -774,7 +772,7 @@ static char *print_num(const char *fmt, int n) { static int num_len(const char *fmt, int n) { char *p = print_num(fmt, n); int ret = strlen(p); - free(p); + mmt_free(p); return ret; } @@ -848,7 +846,7 @@ void avr_mem_display(FILE *f, const AVRPART *p, const char *prefix) { m_char_max[1], m->size, m_char_max[2], m->page_size, m_char_max[3], m_offset); - free(m_offset); + mmt_free(m_offset); } else { fprintf(f, "%s%-*s %*d %*d\n", prefix, @@ -856,7 +854,7 @@ void avr_mem_display(FILE *f, const AVRPART *p, const char *prefix) { m_char_max[1], m->size, m_char_max[2], m->page_size); } - free(m_desc_str); + mmt_free(m_desc_str); } } @@ -922,7 +920,7 @@ int avr_variants_display(FILE *f, const AVRPART *p, const char *prefix) { */ AVRPART *avr_new_part(void) { - AVRPART *p = (AVRPART *) cfg_malloc("avr_new_part()", sizeof(AVRPART)); + AVRPART *p = (AVRPART *) mmt_malloc(sizeof(AVRPART)); const char *nulp = cache_string(""); memset(p, 0, sizeof(*p)); @@ -986,13 +984,12 @@ AVRPART *avr_dup_part(const AVRPART *d) { return p; } -void avr_free_part(AVRPART * d) -{ - ldestroy_cb(d->mem, (void(*)(void *))avr_free_mem); +void avr_free_part(AVRPART * d) { + ldestroy_cb(d->mem, (void(*)(void *)) avr_free_mem); d->mem = NULL; - ldestroy_cb(d->mem_alias, (void(*)(void *))avr_free_memalias); + ldestroy_cb(d->mem_alias, (void(*)(void *)) avr_free_memalias); d->mem_alias = NULL; - ldestroy_cb(d->variants, free); + ldestroy_cb(d->variants, cfg_free); d->variants = NULL; /* do not free d->parent_id and d->config_file */ @@ -1002,7 +999,7 @@ void avr_free_part(AVRPART * d) d->op[i] = NULL; } } - free(d); + mmt_free(d); } AVRPART *locate_part(const LISTID parts, const char *partdesc) { @@ -1159,7 +1156,7 @@ char *cmdbitstr(CMDBIT cb) { else space[1] = 0; - return cfg_strdup("cmdbitstr()", space); + return mmt_strdup(space); } @@ -1201,7 +1198,7 @@ char *opcode2str(const OPCODE *op, int opnum, int detailed) { int compact = 1, printbit; if(!op) - return cfg_strdup("opcode2str()", "NULL"); + return mmt_strdup("NULL"); // Can the opcode be printed in a compact way? Only if i, o and a bits are systematic. for(int i=31; i >= 0; i--) @@ -1245,7 +1242,7 @@ char *opcode2str(const OPCODE *op, int opnum, int detailed) { *sp++ = '"'; *sp = 0; - return cfg_strdup("opcode2str()", space); + return mmt_strdup(space); } diff --git a/src/config.c b/src/config.c index ae7d718b..598f7d52 100644 --- a/src/config.c +++ b/src/config.c @@ -217,6 +217,11 @@ char *cfg_strdup(const char *funcname, const char *s) { } +void cfg_free(void *ptr) { + mmt_free(ptr); +} + + int yywrap() { return 1; diff --git a/src/libavrdude.h b/src/libavrdude.h index e4caadcb..db72a578 100644 --- a/src/libavrdude.h +++ b/src/libavrdude.h @@ -1379,10 +1379,9 @@ extern "C" { #endif void *cfg_malloc(const char *funcname, size_t n); - void *cfg_realloc(const char *funcname, void *p, size_t n); - char *cfg_strdup(const char *funcname, const char *s); +void cfg_free(void *ptr); int init_config(void);