]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/articulos.c
* Arreglo un bug que hacia que se cuelgue la GUI.
[z.facultad/75.06/emufs.git] / emufs_gui / articulos.c
index dd4e29a20b1852916436d5b4da530e71295f2e6b..241547f1aa14320d620b0c19410d06adc6b3018e 100644 (file)
@@ -64,11 +64,11 @@ t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque)
 {
        xmlDocPtr document;
        xmlNode *node, *inicio;
-       int cant, error = 0, i;
+       int error = 0, i;
        EMUFS_REG_SIZE size;
        t_LstArticulos *tmp;
        lst_articulos = NULL;
-       EMUFS_REG_ID id;
+       EMUFS_REG_ID id, *indices, indices_cant;
 
        tmp = (t_LstArticulos *)malloc(sizeof(t_LstArticulos));
        if (tmp == NULL) return NULL;
@@ -101,6 +101,7 @@ t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque)
                                if (strcmp(node->name, "ARTICULO") == 0) {
                                        t_Articulo art;
                                        void *save;
+                                       memset(&art, 0, sizeof(t_Articulo));
                                        art.numero = atoi(xmlGetProp(node, "NroArtículo"));
                                        strncpy(art.desc, xmlGetProp(node, "Descripción"), 50);
                                        strncpy(art.presentacion, xmlGetProp(node, "Presentación"), 30);
@@ -123,18 +124,18 @@ t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque)
        } else {
                tmp->fp = emufs_abrir("articulos");
                /* Ahora trato de recuperar la info */
-               cant = emufs_idx_get_count(tmp->fp);
-               for(i=0; i<cant; i++) {
+               indices = emufs_idx_get(tmp->fp, &indices_cant);
+               for(i=0; i<indices_cant; i++) {
                        t_Articulo art;
                        void *save;
-                       id = emufs_idx_get_id_at(tmp->fp, i);
                        /* Leo el registro */
-                       save = tmp->fp->leer_registro(tmp->fp, id, &size, &error);
+                       save = tmp->fp->leer_registro(tmp->fp, indices[i], &size, &error);
                        if (procesar_leer_articulo(&art, save, size, tmp) == 1) {
-                               agregar_nodo_articulo(tmp, crear_nodo_articulo(id, art.numero));
+                               agregar_nodo_articulo(tmp, crear_nodo_articulo(indices[i], art.numero));
                                free(save);
                        }
                }
+               free(indices);
        }
 
        return tmp;