From e0b2f02fb7880eb26e4fc28e85253dc56b6c6aab Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Fri, 9 Apr 2004 21:05:39 +0000 Subject: [PATCH] * Ahi la GUI carga bien y no se producen los problemas de memoria. Para resolverlo tuve que poner el campo array de t_LstArticulos estatico (100 elementos), asi que tengo que ver que es lo que hace que cuando uso malloc se caga todo. --- emufs_gui/articulos.c | 20 ++++++++++++-------- emufs_gui/articulos.h | 2 +- emufs_gui/gui.c | 5 ----- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 6226225..6e6f950 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -10,6 +10,7 @@ t_LstArticulos *art_cargar(const char *filename) xmlDocPtr document; xmlNode *node, *inicio; int cant; + lst_articulos = NULL; document = xmlReadFile(filename, "ISO-8859-1",0); @@ -40,9 +41,11 @@ t_LstArticulos *art_cargar(const char *filename) } } t_LstArticulos *tmp = (t_LstArticulos *)malloc(sizeof(t_LstArticulos)); + printf("%p\n", tmp); if (tmp == NULL) return NULL; tmp->cant = cant; - tmp->array = (t_Reg_Articulo *)malloc(sizeof(t_Reg_Articulo)*cant); +/* tmp->array = (t_Reg_Articulo *)malloc(sizeof(t_Reg_Articulo)*tmp->cant);*/ + printf("%p\n", tmp->array); if (tmp->array == NULL) { printf("Fallo malloc\n"); @@ -60,22 +63,23 @@ t_LstArticulos *art_cargar(const char *filename) if (node->type == XML_ELEMENT_NODE) { if (strcmp(node->name, "ARTICULO") == 0) { t_Articulo art; - /* art.numero = atoi(xmlGetProp(node, "NroArtículo"));*/ - /* strncpy(art.desc, xmlGetProp(node, "Descripción"), 50); + art.numero = 1; atoi(xmlGetProp(node, "NroArtículo")); + strncpy(art.desc, xmlGetProp(node, "Descripción"), 50); strncpy(art.presentacion, xmlGetProp(node, "Presentación"), 30); - strncpy(art.existencia, xmlGetProp(node, "Existencia"), 8);*/ - /* strncpy(tmp->array[cant].ubicacion, xmlGetProp(node, "Ubicacion"), 30);*/ + strncpy(art.existencia, xmlGetProp(node, "Existencia"), 8); + /*strncpy(tmp->array[cant].ubicacion, xmlGetProp(node, "Ubicacion"), 30);*/ strncpy(art.pvu, xmlGetProp(node, "PVU"), 8); - /* strncpy(art.emin, xmlGetProp(node, "Emín"), 8); */ + strncpy(art.emin, xmlGetProp(node, "Emín"), 8); /* Ya leido el articulo ahora paso a guardarlo en el archivo y agregarlo a la lista */ - tmp->array[cant].num_reg = tmp->fp->grabar_registro(tmp->fp, &art, sizeof(t_Articulo)); /* REGISTRO CTE! */ + tmp->array[cant].num_reg = tmp->fp->grabar_registro(tmp->fp, &art, sizeof(t_Articulo)); tmp->array[cant].numero = art.numero; + printf("tmp->arra[%d].numero = 1\n", cant); ++cant; } } } - printf("1\n"); + printf("%d\n", cant); xmlFreeDoc(document); xmlCleanupParser(); diff --git a/emufs_gui/articulos.h b/emufs_gui/articulos.h index 2ea23ca..da3a3d5 100644 --- a/emufs_gui/articulos.h +++ b/emufs_gui/articulos.h @@ -40,7 +40,7 @@ typedef struct _reg_articulo_ { } t_Reg_Articulo; typedef struct _lista_articulos_ { - t_Reg_Articulo *array; + t_Reg_Articulo array[100]; unsigned int cant; EMUFS *fp; /* Filepointer al archivo donde estan los datos */ } t_LstArticulos; diff --git a/emufs_gui/gui.c b/emufs_gui/gui.c index 3727e40..eae06e4 100644 --- a/emufs_gui/gui.c +++ b/emufs_gui/gui.c @@ -25,11 +25,6 @@ int main(int argc, char *argv[]) return 1; } - art_cargar(argv[1]); - - art_liberar(NULL); - return 1; - /* Inicio Curses */ signal(SIGINT, finish); initscr(); -- 2.43.0