X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/28bf499b8974c640b0c9fb9285488725c347a6a6..a680ab304d20541f4bf03709354b7b7c2ffdf993:/emufs/indice_b_asc.c diff --git a/emufs/indice_b_asc.c b/emufs/indice_b_asc.c index dc2fdfc..42903c4 100644 --- a/emufs/indice_b_asc.c +++ b/emufs/indice_b_asc.c @@ -146,12 +146,15 @@ static void b_asc_insertar_en_nodo(INDICE *idx, CLAVE clave, INDICE_DATO dato, i /* la paso a la derecha */ b_pasar_clave_a_derecha(idx, der, der_id, padre, nodo_header.padre, pos_padre, a_pasar); - /* XXX TODO Liberar memoria y GUARDAR*/ + /* Dejo en nodo las claves que corresponden */ + memcpy(claves, buffer, nodo_header.cant*sizeof(B_NodoEntry)); b_grabar_nodo(idx, der_id, der); b_grabar_nodo(idx, nodo_header.padre, padre); b_grabar_nodo(idx, nodo_id, nodo); free(buffer); - + free(nodo); + free(der); + free(padre); return; } @@ -166,11 +169,15 @@ static void b_asc_insertar_en_nodo(INDICE *idx, CLAVE clave, INDICE_DATO dato, i b_grabar_nodo(idx, nodo_header.padre, padre); b_grabar_nodo(idx, nodo_id, nodo); free(buffer); + free(nodo); + free(izq); + free(padre); return; } /* Tengo que partir, tengo que sacar una clave del padre y mandarla al partir */ clave_que_sale = padre_claves[pos_padre]; + clave_que_sale.hijo_derecho = -1; for(i=pos_padre; i