]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
Puto bug que no podia encontrar hace 3 dias, FIXED!!!!!
authorRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 28 May 2004 23:27:38 +0000 (23:27 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 28 May 2004 23:27:38 +0000 (23:27 +0000)
emufs/indice_b.c
emufs_gui/emufs.xml

index 8f43582b228939577878ca7e9b156b5efbb23b62..82fa4665952f9b63ecc8fc9847208aea6ef020de 100644 (file)
@@ -705,7 +705,7 @@ static void b_borrar_clave(INDICE *idx, char *nodo, int nodo_id, CLAVE k)
        /* Se cumple la condicion de hijos? */
        PERR("Dejo todo consistente");
        fprintf(stderr, "Condicion : %d >= %d\n", header_actual.cant, MIN_HIJOS(idx));
-       if ((header_actual.cant >= MIN_HIJOS(idx)) && (actual_id != 0)) {
+       if ((header_actual.cant >= MIN_HIJOS(idx)) || (actual_id == 0)) {
                PERR("Borrar completo sin fundir");
                return;
        }
@@ -727,6 +727,7 @@ static void b_borrar_clave(INDICE *idx, char *nodo, int nodo_id, CLAVE k)
                        derecha_id = claves_padre[0].hijo_derecho;
                        der = b_leer_nodo(idx, derecha_id);
                        b_leer_header(der, &header_der);
+                       pos_padre = 0;
                } else {
                        PERR("Buscando que hijo soy");
                        for(pos_padre=0; (claves_padre[pos_padre].hijo_derecho != actual_id); pos_padre++)      {       }
@@ -760,6 +761,7 @@ static void b_borrar_clave(INDICE *idx, char *nodo, int nodo_id, CLAVE k)
                if ((derecha_id != -1) && (header_der.cant > MIN_HIJOS(idx))) {
                        PERR("Le pido clave a derecha");
                        fprintf(stderr, "ANTES DE PEDIR DERECHA TENGO %d claves\n", header_actual.cant);
+                       fprintf(stderr, "PEDIR DERECHA DATOS : yo=%d, padre=%d, der=%d, pos_clave=%d\n", actual_id, padre_id, derecha_id, pos_padre);
                        b_pedir_clave_derecha(der, derecha_id, padre, padre_id, actual, actual_id, pos_padre);
                        PERR("listo");
                        b_leer_header(der, &header_der);
@@ -1263,6 +1265,11 @@ int b_borrar_dup_clave(INDICE *idx, INDICE_DATO k_dato, INDICE_DATO dato)
        k.i_clave = k_dato.id;
        leido = (char *)idx->emu_mult->leer_registro(idx->emu_mult, k, &tam, &error);
 
+       if (leido == NULL) {
+               PERR("LEI CUALQUIER COSA, BUG?");
+               return 1;
+       }
+
        cant = *((int *)leido);
 
        /* Obtengo un nuevo lugar para el dato nuevo */
@@ -1281,6 +1288,7 @@ int b_borrar_dup_clave(INDICE *idx, INDICE_DATO k_dato, INDICE_DATO dato)
        if (cant == 0) {
                free(leido);
                /* No tengo mas cosas en esta clave, la borro */
+               PERR("EL REGISTRO MULTIPLE QUEDO VACIO, ELIMINANDO");
                idx->emu_mult->borrar_registro(idx->emu_mult, k, dummy1);
                return 0;
        }
index 689e50ea5f841fc0ecc1a55c5ac855aa65288e2f..9951e340d3473233288d6f0018530db6047ab636 100644 (file)
@@ -8,7 +8,7 @@
                <indices>
                        <indice nombre="codigo" tipo="B" bloque="512" />
                        <indice nombre="desc" tipo="B" bloque="512" />
-                       <indice nombre="presentacion" tipo="B_A" bloque="512" />
+                       <indice nombre="presentacion" tipo="B" bloque="512" />
                </indices>
        </articulos>
        <facturas>