X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/ad2c7ad2d8e8e460bc0f9d790da9b7f315bc0125..74c6776ce0ae5ea218cf0363af040bf260b2c72b:/emufs/indice_b.c?ds=sidebyside diff --git a/emufs/indice_b.c b/emufs/indice_b.c index f18312a..dfd4ff3 100644 --- a/emufs/indice_b.c +++ b/emufs/indice_b.c @@ -75,6 +75,7 @@ void emufs_indice_b_crear(INDICE *idx) memcpy(bloque, &header, sizeof(B_NodoHeader)); fwrite(bloque, idx->tam_bloque, 1, fp); + free(bloque); fclose(fp); } @@ -845,6 +846,7 @@ void b_pasar_clave_a_derecha(INDICE *idx, char *der, int der_id, char *padre, in b_leer_header(der, &der_h); padre_entries = b_leer_claves(padre, &padre_h); /* Inserto en el hijo derecho la clave del padre */ + PERR("PASAR CLAVE DERECHA"); b_insertar_en_nodo_con_lugar(idx, padre_entries[padre_pos].clave, padre_entries[padre_pos].dato, der_id, der, der_h.hijo_izquierdo, entry.hijo_derecho); /* Reemplazo clave del padre por clave nueva */ @@ -1281,11 +1283,22 @@ CLAVE emufs_indice_b_obtener_sig_clave(INDICE *idx, CLAVE k) /* Busco al mi padre, perdido en un maremoto hace mucho,muchos * aƱos */ - free(nodo); + tmp = nodo; if (header.padre == -1) { - salida.i_clave = -1; + if (nodo_id == 0) { + /* Bien, son el nodo raiz y aca tendria que ir hacia mi hijo + * derecho + */ + nodo = b_leer_nodo(idx, claves[header.cant-1].hijo_derecho); + free(tmp); + b_leer_header(nodo, &header); + claves = b_leer_claves(nodo, &header); + + salida = claves[0].clave; + } return salida; } + free(nodo); nodo = b_leer_nodo(idx, header.padre); b_leer_header(nodo, &header); claves = b_leer_claves(nodo, &header); @@ -1389,4 +1402,3 @@ int b_borrar_dup_clave(INDICE *idx, INDICE_DATO k_dato, INDICE_DATO dato) } #include "indice_b_asc.c" -