/* 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;
}
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++) { }
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);
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 */
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;
}