From: Nicolás Dimov Date: Sun, 30 May 2004 17:05:09 +0000 (+0000) Subject: mato bicho en obtener claves X-Git-Tag: svn_import_r684~70 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/d367676c2ddb149764c0be1906472f5e5047f831?ds=inline mato bicho en obtener claves --- diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 319b3e2..88706da 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -1129,7 +1129,7 @@ EMUFS_REG_ID emufs_tipo1_modificar_registro_plus(EMUFS *emu, CLAVE k, void *ptr B_PLUS_KEYBUCKET *emufs_tipo1_obtener_claves_raw(EMUFS *emu, int num_bloque) { B_PLUS_KEYBUCKET *keys; - char *bloque; + char *bloque, *aux;; int err = 0, cant_reg, i; EMUFS_REG_SIZE tam_reg; @@ -1144,12 +1144,14 @@ B_PLUS_KEYBUCKET *emufs_tipo1_obtener_claves_raw(EMUFS *emu, int num_bloque) PERR("NO SE PUDO LEER EL BLOQUE"); return NULL; } + aux = bloque; /*leo la cantidad de registros*/ memcpy(&cant_reg, bloque+emu->tam_bloque-sizeof(int), sizeof(int)); /*ya se cuanto guardarle al vector*/ keys->claves = (CLAVE*)malloc(cant_reg*sizeof(CLAVE)); if (keys->claves == NULL){ PERR("NO SE PUDO CREAR EL ARRAY DE CLAVES"); + free(bloque); free(keys); return NULL; } @@ -1160,6 +1162,6 @@ B_PLUS_KEYBUCKET *emufs_tipo1_obtener_claves_raw(EMUFS *emu, int num_bloque) keys->claves[i] = emufs_indice_generar_clave(emu->indices, bloque+sizeof(EMUFS_TIPO1_REG_HEADER)); bloque += tam_reg+sizeof(EMUFS_TIPO1_REG_HEADER); } - free(bloque); + free(aux); return keys; } diff --git a/emufs/tipo1_bplus_main.c b/emufs/tipo1_bplus_main.c index 3d9b15d..119600a 100644 --- a/emufs/tipo1_bplus_main.c +++ b/emufs/tipo1_bplus_main.c @@ -199,11 +199,11 @@ for ( i=0; i<100; i++){ PERR("OBTENIENDO CLAVES"); v = emufs_tipo1_obtener_claves_raw(emu, 3); +printf("Las claves del bloque 3 son:\n"); if (v==NULL) { PERR("NO HAY VECTOR"); emufs_destruir(emu); } -PERR("PASE"); /*printf("Las claves del bloque 3 son:\n");*/ for (i=0; icant_keys; i++) printf("v[%d] = %d\n", i, v->claves[i]); diff --git a/emufs/tipo3.c b/emufs/tipo3.c index fb0acd5..4973603 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -986,7 +986,7 @@ EMUFS_REG_ID emufs_tipo3_modificar_registro_plus(EMUFS *emu, CLAVE k, void *ptr B_PLUS_KEYBUCKET *emufs_tipo3_obtener_claves_raw(EMUFS *emu, int num_bloque) { B_PLUS_KEYBUCKET *keys; - char *bloque; + char *bloque, *aux; int err = 0, cant_reg, i; EMUFS_REG_SIZE tam_reg = emu->tam_reg; @@ -1001,6 +1001,7 @@ B_PLUS_KEYBUCKET *emufs_tipo3_obtener_claves_raw(EMUFS *emu, int num_bloque) PERR("NO SE PUDO LEER EL BLOQUE"); return NULL; } + aux = bloque; /*leo la cantidad de registros*/ memcpy(&cant_reg, bloque+emu->tam_bloque-sizeof(int), sizeof(int)); /*ya se cuanto guardarle al vector*/ @@ -1017,6 +1018,6 @@ B_PLUS_KEYBUCKET *emufs_tipo3_obtener_claves_raw(EMUFS *emu, int num_bloque) keys->claves[i] = emufs_indice_generar_clave(emu->indices, bloque+sizeof(EMUFS_REG_ID)); bloque += tam_reg+sizeof(EMUFS_REG_ID); } - free(bloque); + free(aux); return keys; }