#define RESERVE_SIZE (((HDR_SIZE + (ALIGN_SIZE-1)) \
/ ALIGN_SIZE ) * ALIGN_SIZE)
-#define MAX_SIZE_T ((size_t)-1)
#define CLIENT_2_HDR(a) ((MEMHDR *) (((char *) (a)) - RESERVE_SIZE))
#define HDR_2_CLIENT(a) ((void *) (((char *) (a)) + RESERVE_SIZE))
/**
* xmlMallocAtomicLoc:
- * @size: an unsigned int specifying the size in byte to allocate.
+ * @size: an int specifying the size in byte to allocate.
* @file: the file name or NULL
* @line: the line number
*
TEST_POINT
- if (size > (MAX_SIZE_T - RESERVE_SIZE)) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlMallocAtomicLoc : Unsigned overflow prevented\n");
- xmlMemoryDump();
- return(NULL);
- }
-
p = (MEMHDR *) malloc(RESERVE_SIZE+size);
if (!p) {
xmlGenericError(xmlGenericErrorContext,
- "xmlMallocAtomicLoc : Out of free space\n");
+ "xmlMallocLoc : Out of free space\n");
xmlMemoryDump();
return(NULL);
}
void *
xmlReallocLoc(void *ptr,size_t size, const char * file, int line)
{
- MEMHDR *p, *tmp;
+ MEMHDR *p;
unsigned long number;
#ifdef DEBUG_MEMORY
size_t oldsize;
#endif
xmlMutexUnlock(xmlMemMutex);
- tmp = (MEMHDR *) realloc(p,RESERVE_SIZE+size);
- if (!tmp) {
- free(p);
+ p = (MEMHDR *) realloc(p,RESERVE_SIZE+size);
+ if (!p) {
goto error;
}
- p = tmp;
if (xmlMemTraceBlockAt == ptr) {
xmlGenericError(xmlGenericErrorContext,
"%p : Realloced(%lu -> %lu) Ok\n",
if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint();
- strcpy(s,str);
+ if (s != NULL)
+ strcpy(s,str);
+ else
+ goto error;
TEST_POINT
int
xmlMemUsed(void) {
- int res;
-
- xmlMutexLock(xmlMemMutex);
- res = debugMemSize;
- xmlMutexUnlock(xmlMemMutex);
- return(res);
+ return(debugMemSize);
}
/**
int
xmlMemBlocks(void) {
- int res;
-
- xmlMutexLock(xmlMemMutex);
- res = debugMemBlocks;
- xmlMutexUnlock(xmlMemMutex);
- return(res);
+ return(debugMemBlocks);
}
#ifdef MEM_LIST
static void
xmlMemContentShow(FILE *fp, MEMHDR *p)
{
- int i,j,k,len;
- const char *buf;
+ int i,j,k,len = p->mh_size;
+ const char *buf = (const char *) HDR_2_CLIENT(p);
if (p == NULL) {
fprintf(fp, " NULL");
return;
}
- len = p->mh_size;
- buf = (const char *) HDR_2_CLIENT(p);
for (i = 0;i < len;i++) {
if (buf[i] == 0) break;