R
Ryan Knopp
I'm having some bizarre problems with some of my memory allocation.
I've ran it threw gdb and noticing my memory indexes aren't matching up.
here's an example. I have commented within the code.
static void getvideos(xmlTextReaderPtr, struct video**, int*);
static struct video *getvideo(xmlTextReaderPtr);
struct video **loadconfig(const char const *filename)
{
xmlTextReaderPtr reader;
struct video *videos = NULL;
int ret, numVid = 0;
reader = xmlReaderForFile(filename, NULL, 0);
if(reader == NULL){
perror("Unable to open ");
return NULL;
}
ret = xmlTextReaderRead(reader);
if(!ret)
perror("xml problem");
while(ret == 1)
{
if((strncasecmp("videos", xmlTextReaderConstName(reader), 6) == 0)
&& xmlTextReaderNodeType(reader) == 1)
getvideos(reader, &videos, &numVid);
ret = xmlTextReaderRead(reader);
}
/* when i get here, the first index of the array is there but the
rest of the indexes are fragmented. */
xmlCleanupParser();
}
static void getvideos(xmlTextReaderPtr reader, struct video **videos,
int *numVid)
{
int ret = 1;
struct video *tmp;
while((ret == 1) && !((xmlTextReaderNodeType(reader) == 15) &&
(strncasecmp("videos", xmlTextReaderConstName(reader), 6
{
if((xmlTextReaderNodeType(reader) == 1) && (strncasecmp("video",
xmlTextReaderConstName(reader), 5)))
{
*videos = realloc(*videos, ++(*numVid) * sizeof(struct video *));
tmp = getvideo(reader);
if(tmp != NULL)
videos[(*numVid)-1] = tmp;
tmp = NULL;
}
ret = xmlTextReaderRead(reader);
}
return; /* the data is perfect at this part of the execution */
}
I've ran it threw gdb and noticing my memory indexes aren't matching up.
here's an example. I have commented within the code.
static void getvideos(xmlTextReaderPtr, struct video**, int*);
static struct video *getvideo(xmlTextReaderPtr);
struct video **loadconfig(const char const *filename)
{
xmlTextReaderPtr reader;
struct video *videos = NULL;
int ret, numVid = 0;
reader = xmlReaderForFile(filename, NULL, 0);
if(reader == NULL){
perror("Unable to open ");
return NULL;
}
ret = xmlTextReaderRead(reader);
if(!ret)
perror("xml problem");
while(ret == 1)
{
if((strncasecmp("videos", xmlTextReaderConstName(reader), 6) == 0)
&& xmlTextReaderNodeType(reader) == 1)
getvideos(reader, &videos, &numVid);
ret = xmlTextReaderRead(reader);
}
/* when i get here, the first index of the array is there but the
rest of the indexes are fragmented. */
xmlCleanupParser();
}
static void getvideos(xmlTextReaderPtr reader, struct video **videos,
int *numVid)
{
int ret = 1;
struct video *tmp;
while((ret == 1) && !((xmlTextReaderNodeType(reader) == 15) &&
(strncasecmp("videos", xmlTextReaderConstName(reader), 6
{
if((xmlTextReaderNodeType(reader) == 1) && (strncasecmp("video",
xmlTextReaderConstName(reader), 5)))
{
*videos = realloc(*videos, ++(*numVid) * sizeof(struct video *));
tmp = getvideo(reader);
if(tmp != NULL)
videos[(*numVid)-1] = tmp;
tmp = NULL;
}
ret = xmlTextReaderRead(reader);
}
return; /* the data is perfect at this part of the execution */
}