From b7e442a0e29d6f54ce1287a9fe407fedb52de949 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Fri, 28 May 2004 23:27:38 +0000 Subject: [PATCH] Puto bug que no podia encontrar hace 3 dias, FIXED!!!!! --- emufs/indice_b.c | 10 +++++++++- emufs_gui/emufs.xml | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/emufs/indice_b.c b/emufs/indice_b.c index 8f43582..82fa466 100644 --- a/emufs/indice_b.c +++ b/emufs/indice_b.c @@ -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; } diff --git a/emufs_gui/emufs.xml b/emufs_gui/emufs.xml index 689e50e..9951e34 100644 --- a/emufs_gui/emufs.xml +++ b/emufs_gui/emufs.xml @@ -8,7 +8,7 @@ - + -- 2.43.0