1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-30 22:43:14 +03:00

Ready for 1.7.0, major changes, nanohttp, cleanup, binary compat with 1.4,

etc... See Changelog, Daniel.
This commit is contained in:
Daniel Veillard
1999-09-22 09:46:25 +00:00
parent 1b0f55fbc0
commit 7f7d1119af
38 changed files with 3152 additions and 1868 deletions

View File

@ -4,10 +4,26 @@
* Daniel.Veillard@w3.org
*/
#include <sys/types.h>
#include <string.h>
#ifdef WIN32
#define HAVE_FCNTL_H
#include <io.h>
#else
#include "config.h"
#endif
#include <stdio.h>
#include <string.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_TIME_H
#include <time.h>
#endif
#ifdef HAVE_MALLOC_H
#include <malloc.h>
#endif
#include "xmlmemory.h"
#ifndef NO_DEBUG_MEMORY
@ -103,8 +119,8 @@ xmlMallocLoc(int size, const char * file, int line)
p = (MEMHDR *) malloc(RESERVE_SIZE+size);
if (!p) {
fprintf(stderr, "xmlMalloc : Out of free space\n");
xmlMemoryDump();
fprintf(stderr, "xmlMalloc : Out of free space\n");
xmlMemoryDump();
}
p->mh_tag = MEMTAG;
p->mh_number = ++block;
@ -165,7 +181,7 @@ xmlReallocLoc(void *ptr,int size, const char * file, int line)
p = CLIENT_2_HDR(ptr);
number = p->mh_number;
if (p->mh_tag != MEMTAG) {
Mem_Tag_Err(p);
Mem_Tag_Err(p);
goto error;
}
p->mh_tag = ~MEMTAG;
@ -231,8 +247,8 @@ xmlFree(void *ptr)
p = CLIENT_2_HDR(ptr);
if (p->mh_tag != MEMTAG) {
Mem_Tag_Err(p);
goto error;
Mem_Tag_Err(p);
goto error;
}
p->mh_tag = ~MEMTAG;
debugMemSize -= p->mh_size;
@ -273,7 +289,7 @@ xmlMemStrdupLoc(const char *str, const char *file, int line)
p = (MEMHDR *) malloc(RESERVE_SIZE+size);
if (!p) {
goto error;
goto error;
}
p->mh_tag = MEMTAG;
p->mh_number = ++block;
@ -288,9 +304,9 @@ xmlMemStrdupLoc(const char *str, const char *file, int line)
s = HDR_2_CLIENT(p);
if (s != NULL)
strcpy(s,str);
strcpy(s,str);
else
goto error;
goto error;
TEST_POINT
@ -339,29 +355,40 @@ void
xmlMemDisplay(FILE *fp)
{
#ifdef MEM_LIST
MEMHDR *p;
int idx;
MEMHDR *p;
int idx;
#if defined(HAVE_LOCALTIME) && defined(HAVE_STRFTIME)
time_t currentTime;
char buf[500];
struct tm * tstruct;
currentTime = time(NULL);
tstruct = localtime(&currentTime);
strftime(buf, sizeof(buf) - 1, "%c", tstruct);
fprintf(fp," %s\n\n", buf);
#endif
fprintf(fp," MEMORY ALLOCATED : %lu\n",debugMemSize);
fprintf(fp,"BLOCK NUMBER SIZE TYPE\n");
idx = 0;
p = memlist;
while (p) {
fprintf(fp," MEMORY ALLOCATED : %lu\n",debugMemSize);
fprintf(fp,"BLOCK NUMBER SIZE TYPE\n");
idx = 0;
p = memlist;
while (p) {
fprintf(fp,"%-5u %6lu %6u ",idx++,p->mh_number,p->mh_size);
switch (p->mh_type) {
case STRDUP_TYPE:fprintf(fp,"strdup() in ");break;
case MALLOC_TYPE:fprintf(fp,"malloc() in ");break;
case REALLOC_TYPE:fprintf(fp,"realloc() in ");break;
default:fprintf(fp," ??? in ");break;
}
switch (p->mh_type) {
case STRDUP_TYPE:fprintf(fp,"strdup() in ");break;
case MALLOC_TYPE:fprintf(fp,"malloc() in ");break;
case REALLOC_TYPE:fprintf(fp,"realloc() in ");break;
default:fprintf(fp," ??? in ");break;
}
if (p->mh_file != NULL) fprintf(fp,"%s(%d)", p->mh_file, p->mh_line);
if (p->mh_tag != MEMTAG)
if (p->mh_tag != MEMTAG)
fprintf(fp," INVALID");
fprintf(fp,"\n");
p = p->mh_next;
}
fprintf(fp,"\n");
p = p->mh_next;
}
#else
fprintf(fp,"Memory list not compiled (MEM_LIST not defined !)\n");
fprintf(fp,"Memory list not compiled (MEM_LIST not defined !)\n");
#endif
}
@ -369,26 +396,26 @@ xmlMemDisplay(FILE *fp)
void debugmem_list_add(MEMHDR *p)
{
p->mh_next = memlist;
p->mh_prev = NULL;
if (memlist) memlist->mh_prev = p;
memlist = p;
p->mh_next = memlist;
p->mh_prev = NULL;
if (memlist) memlist->mh_prev = p;
memlist = p;
#ifdef MEM_LIST_DEBUG
if (stderr)
Mem_Display(stderr);
if (stderr)
Mem_Display(stderr);
#endif
}
void debugmem_list_delete(MEMHDR *p)
{
if (p->mh_next)
p->mh_next->mh_prev = p->mh_prev;
if (p->mh_prev)
p->mh_prev->mh_next = p->mh_next;
else memlist = p->mh_next;
if (p->mh_next)
p->mh_next->mh_prev = p->mh_prev;
if (p->mh_prev)
p->mh_prev->mh_next = p->mh_next;
else memlist = p->mh_next;
#ifdef MEM_LIST_DEBUG
if (stderr)
Mem_Display(stderr);
if (stderr)
Mem_Display(stderr);
#endif
}
@ -400,10 +427,10 @@ void debugmem_list_delete(MEMHDR *p)
void debugmem_tag_error(void *p)
{
fprintf(stderr, "Memory tag error occurs :%p \n\t bye\n", p);
fprintf(stderr, "Memory tag error occurs :%p \n\t bye\n", p);
#ifdef MEM_LIST
if (stderr)
xmlMemDisplay(stderr);
if (stderr)
xmlMemDisplay(stderr);
#endif
}