This also fixes the build breakage caused by removing stdlib includes.
svn path=/trunk/yasm/; revision=298
if (addr != NULL)
{
addr -= BIT_VECTOR_HIDDEN_WORDS;
- free((voidptr) addr);
+ xfree((voidptr) addr);
}
}
void BitVector_Dispose(charptr string)
{
- if (string != NULL) free((voidptr) string);
+ if (string != NULL) xfree((voidptr) string);
}
void BitVector_Bit_Off(wordptr addr, N_int indx) /* X = X \ {x} */
STAILQ_INSERT_TAIL(headp, bc, link);
return bc;
} else {
- free(bc);
+ xfree(bc);
}
}
return (bytecode *)NULL;
we = STAILQ_FIRST(errwarns);
while (we) {
we2 = STAILQ_NEXT(we, link);
- free(we);
+ xfree(we);
we = we2;
}
ptr->terms[1].type = EXPR_NONE;
if (left) {
memcpy(&ptr->terms[0], left, sizeof(ExprItem));
- free(left);
+ xfree(left);
ptr->numterms++;
} else {
InternalError(__LINE__, __FILE__,
if (right) {
memcpy(&ptr->terms[1], right, sizeof(ExprItem));
- free(right);
+ xfree(right);
ptr->numterms++;
}
e->terms[i].data.expn->op == EXPR_IDENT) {
expr *sube = e->terms[i].data.expn;
e->terms[i] = sube->terms[0];
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
}
if (e->terms[i].type == EXPR_EXPR &&
/* delete subexpression, but *don't delete nodes* (as we've just
* copied them!)
*/
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
} else if (o != i) {
/* copy operand if it changed places */
e->terms[o--] = e->terms[i];
break; /* none of the other types needs to be deleted */
}
}
- free(e->filename);
- free(e); /* free ourselves */
+ xfree(e->filename);
+ xfree(e); /* free ourselves */
return 0; /* don't stop recursion */
}
floatnum_delete(floatnum *flt)
{
BitVector_Destroy(flt->mantissa);
- free(flt);
+ xfree(flt);
}
void
memcpy(ptr, buf, byte_size*sizeof(unsigned char));
/* free allocated resources */
- free(buf);
+ xfree(buf);
BitVector_Destroy(output);
/* Internal format */
str = BitVector_to_Hex(flt->mantissa);
printf("%c %s *2^%04x\n", flt->sign?'-':'+', str, flt->exponent);
- free(str);
+ xfree(str);
/* 32-bit (single precision) format */
printf("32-bit: %d: ", floatnum_get_sized(flt, out, 4));
{
if (intn->type == INTNUM_BV)
BitVector_Destroy(intn->val.bv);
- free(intn);
+ xfree(intn);
}
void
InternalError(__LINE__, __FILE__,
_("Invalid size specified (too large)"));
memcpy(ptr, buf, size);
- free(buf);
+ xfree(buf);
break;
}
}
case INTNUM_BV:
s = BitVector_to_Hex(intn->val.bv);
printf("0x%s/%u", s, (unsigned int)intn->origsize);
- free(s);
+ xfree(s);
break;
}
}
memmove(list2, list1, nmemb*size);
list2 = list1;
}
- free(list2);
+ xfree(list2);
return (0);
}
rec2 = ternary_insert(&sym_table, name, rec, 0);
if (rec2 != rec) {
- free(rec);
+ xfree(rec);
return rec2;
}
rec->status = SYM_NOSTATUS;
void *xmalloc(size_t size);
void *xcalloc(size_t nelem, size_t elsize);
void *xrealloc(void *oldmem, size_t size);
+void xfree(void *p);
#ifdef HAVE_SYS_CDEFS_H
# include <sys/cdefs.h>
# include <stdlib.h>
#endif
+#include <libintl.h>
+#define _(String) gettext(String)
+
#include "errwarn.h"
#ifndef DMALLOC
return newmem;
}
+
+void
+xfree(void *p)
+{
+ if (!p)
+ InternalError(__LINE__, __FILE__, _("Tried to free NULL pointer"));
+ free(p);
+}
+
#endif
memmove(list2, list1, nmemb*size);
list2 = list1;
}
- free(list2);
+ xfree(list2);
return (0);
}
ptr->terms[1].type = EXPR_NONE;
if (left) {
memcpy(&ptr->terms[0], left, sizeof(ExprItem));
- free(left);
+ xfree(left);
ptr->numterms++;
} else {
InternalError(__LINE__, __FILE__,
if (right) {
memcpy(&ptr->terms[1], right, sizeof(ExprItem));
- free(right);
+ xfree(right);
ptr->numterms++;
}
e->terms[i].data.expn->op == EXPR_IDENT) {
expr *sube = e->terms[i].data.expn;
e->terms[i] = sube->terms[0];
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
}
if (e->terms[i].type == EXPR_EXPR &&
/* delete subexpression, but *don't delete nodes* (as we've just
* copied them!)
*/
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
} else if (o != i) {
/* copy operand if it changed places */
e->terms[o--] = e->terms[i];
break; /* none of the other types needs to be deleted */
}
}
- free(e->filename);
- free(e); /* free ourselves */
+ xfree(e->filename);
+ xfree(e); /* free ourselves */
return 0; /* don't stop recursion */
}
ptr->terms[1].type = EXPR_NONE;
if (left) {
memcpy(&ptr->terms[0], left, sizeof(ExprItem));
- free(left);
+ xfree(left);
ptr->numterms++;
} else {
InternalError(__LINE__, __FILE__,
if (right) {
memcpy(&ptr->terms[1], right, sizeof(ExprItem));
- free(right);
+ xfree(right);
ptr->numterms++;
}
e->terms[i].data.expn->op == EXPR_IDENT) {
expr *sube = e->terms[i].data.expn;
e->terms[i] = sube->terms[0];
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
}
if (e->terms[i].type == EXPR_EXPR &&
/* delete subexpression, but *don't delete nodes* (as we've just
* copied them!)
*/
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
} else if (o != i) {
/* copy operand if it changed places */
e->terms[o--] = e->terms[i];
break; /* none of the other types needs to be deleted */
}
}
- free(e->filename);
- free(e); /* free ourselves */
+ xfree(e->filename);
+ xfree(e); /* free ourselves */
return 0; /* don't stop recursion */
}
ptr->terms[1].type = EXPR_NONE;
if (left) {
memcpy(&ptr->terms[0], left, sizeof(ExprItem));
- free(left);
+ xfree(left);
ptr->numterms++;
} else {
InternalError(__LINE__, __FILE__,
if (right) {
memcpy(&ptr->terms[1], right, sizeof(ExprItem));
- free(right);
+ xfree(right);
ptr->numterms++;
}
e->terms[i].data.expn->op == EXPR_IDENT) {
expr *sube = e->terms[i].data.expn;
e->terms[i] = sube->terms[0];
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
}
if (e->terms[i].type == EXPR_EXPR &&
/* delete subexpression, but *don't delete nodes* (as we've just
* copied them!)
*/
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
} else if (o != i) {
/* copy operand if it changed places */
e->terms[o--] = e->terms[i];
break; /* none of the other types needs to be deleted */
}
}
- free(e->filename);
- free(e); /* free ourselves */
+ xfree(e->filename);
+ xfree(e); /* free ourselves */
return 0; /* don't stop recursion */
}
ptr->terms[1].type = EXPR_NONE;
if (left) {
memcpy(&ptr->terms[0], left, sizeof(ExprItem));
- free(left);
+ xfree(left);
ptr->numterms++;
} else {
InternalError(__LINE__, __FILE__,
if (right) {
memcpy(&ptr->terms[1], right, sizeof(ExprItem));
- free(right);
+ xfree(right);
ptr->numterms++;
}
e->terms[i].data.expn->op == EXPR_IDENT) {
expr *sube = e->terms[i].data.expn;
e->terms[i] = sube->terms[0];
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
}
if (e->terms[i].type == EXPR_EXPR &&
/* delete subexpression, but *don't delete nodes* (as we've just
* copied them!)
*/
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
} else if (o != i) {
/* copy operand if it changed places */
e->terms[o--] = e->terms[i];
break; /* none of the other types needs to be deleted */
}
}
- free(e->filename);
- free(e); /* free ourselves */
+ xfree(e->filename);
+ xfree(e); /* free ourselves */
return 0; /* don't stop recursion */
}
if (addr != NULL)
{
addr -= BIT_VECTOR_HIDDEN_WORDS;
- free((voidptr) addr);
+ xfree((voidptr) addr);
}
}
void BitVector_Dispose(charptr string)
{
- if (string != NULL) free((voidptr) string);
+ if (string != NULL) xfree((voidptr) string);
}
void BitVector_Bit_Off(wordptr addr, N_int indx) /* X = X \ {x} */
STAILQ_INSERT_TAIL(headp, bc, link);
return bc;
} else {
- free(bc);
+ xfree(bc);
}
}
return (bytecode *)NULL;
we = STAILQ_FIRST(errwarns);
while (we) {
we2 = STAILQ_NEXT(we, link);
- free(we);
+ xfree(we);
we = we2;
}
ptr->terms[1].type = EXPR_NONE;
if (left) {
memcpy(&ptr->terms[0], left, sizeof(ExprItem));
- free(left);
+ xfree(left);
ptr->numterms++;
} else {
InternalError(__LINE__, __FILE__,
if (right) {
memcpy(&ptr->terms[1], right, sizeof(ExprItem));
- free(right);
+ xfree(right);
ptr->numterms++;
}
e->terms[i].data.expn->op == EXPR_IDENT) {
expr *sube = e->terms[i].data.expn;
e->terms[i] = sube->terms[0];
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
}
if (e->terms[i].type == EXPR_EXPR &&
/* delete subexpression, but *don't delete nodes* (as we've just
* copied them!)
*/
- free(sube->filename);
- free(sube);
+ xfree(sube->filename);
+ xfree(sube);
} else if (o != i) {
/* copy operand if it changed places */
e->terms[o--] = e->terms[i];
break; /* none of the other types needs to be deleted */
}
}
- free(e->filename);
- free(e); /* free ourselves */
+ xfree(e->filename);
+ xfree(e); /* free ourselves */
return 0; /* don't stop recursion */
}
floatnum_delete(floatnum *flt)
{
BitVector_Destroy(flt->mantissa);
- free(flt);
+ xfree(flt);
}
void
memcpy(ptr, buf, byte_size*sizeof(unsigned char));
/* free allocated resources */
- free(buf);
+ xfree(buf);
BitVector_Destroy(output);
/* Internal format */
str = BitVector_to_Hex(flt->mantissa);
printf("%c %s *2^%04x\n", flt->sign?'-':'+', str, flt->exponent);
- free(str);
+ xfree(str);
/* 32-bit (single precision) format */
printf("32-bit: %d: ", floatnum_get_sized(flt, out, 4));
{
if (intn->type == INTNUM_BV)
BitVector_Destroy(intn->val.bv);
- free(intn);
+ xfree(intn);
}
void
InternalError(__LINE__, __FILE__,
_("Invalid size specified (too large)"));
memcpy(ptr, buf, size);
- free(buf);
+ xfree(buf);
break;
}
}
case INTNUM_BV:
s = BitVector_to_Hex(intn->val.bv);
printf("0x%s/%u", s, (unsigned int)intn->origsize);
- free(s);
+ xfree(s);
break;
}
}
memmove(list2, list1, nmemb*size);
list2 = list1;
}
- free(list2);
+ xfree(list2);
return (0);
}
rec2 = ternary_insert(&sym_table, name, rec, 0);
if (rec2 != rec) {
- free(rec);
+ xfree(rec);
return rec2;
}
rec->status = SYM_NOSTATUS;
if (p->splitchar)
ternary_cleanup (p->eqkid);
ternary_cleanup (p->hikid);
- free (p);
+ xfree (p);
}
}
void *xmalloc(size_t size);
void *xcalloc(size_t nelem, size_t elsize);
void *xrealloc(void *oldmem, size_t size);
+void xfree(void *p);
#ifdef HAVE_SYS_CDEFS_H
# include <sys/cdefs.h>
# include <stdlib.h>
#endif
+#include <libintl.h>
+#define _(String) gettext(String)
+
#include "errwarn.h"
#ifndef DMALLOC
return newmem;
}
+
+void
+xfree(void *p)
+{
+ if (!p)
+ InternalError(__LINE__, __FILE__, _("Tried to free NULL pointer"));
+ free(p);
+}
+
#endif
void *xmalloc(size_t size);
void *xcalloc(size_t nelem, size_t elsize);
void *xrealloc(void *oldmem, size_t size);
+void xfree(void *p);
#ifdef HAVE_SYS_CDEFS_H
# include <sys/cdefs.h>