X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/98a4474bbd08bef0e4ecad30ae663295632b8a59..f60bd6b2e681ddce2841392ab10618bb148ca24e:/emufs/tipo3.c diff --git a/emufs/tipo3.c b/emufs/tipo3.c index fd59a68..00adef8 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -158,7 +158,6 @@ EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE t if ( (file = fopen(name_f,"a+"))==NULL ) return -1; /*ERROR*/ /*tengo que buscar un ID valido para el nuevo registro*/ ID_aux = emufs_idx_get_new_id(emu, err); - /* El free esta al final de la funcion! */ bloque = (char*)malloc(emu->tam_bloque); for (i=0; itam_bloque > emu->tam_reg ) resto = emu->tam_reg; if ( emufs_fsc_agregar(emu, num_bloque, emu->tam_bloque - resto - sizeof(EMUFS_REG_ID)) != 0 ) { fclose(file); free(bloque); @@ -294,6 +298,8 @@ int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID) } /*grabo el bloque en el archivo*/ + if ( emu->tam_bloque < emu->tam_reg ) + memset(bloque, 0, emu->tam_bloque); if ( emufs_tipo3_grabar_bloque(emu, bloque, num_bloque) == -1 ){ free(bloque); PERR("No se pudo grabar el bloque"); @@ -301,9 +307,12 @@ int emufs_tipo3_borrar_registro(EMUFS *emu, EMUFS_REG_ID ID) } /*actualizo archivo .fsc*/ - fs = emufs_fsc_get_fs(emu, num_bloque); - if ( emufs_fsc_actualizar(emu, num_bloque, fs + emu->tam_reg + sizeof(EMUFS_REG_ID)) != 0 ) return -1; - + if ( emu->tam_bloque < emu->tam_reg ) { + if ( emufs_fsc_actualizar(emu, num_bloque, emu->tam_bloque) != 0 ) return -1; + } else { + fs = emufs_fsc_get_fs(emu, num_bloque); + if ( emufs_fsc_actualizar(emu, num_bloque, fs + emu->tam_reg + sizeof(EMUFS_REG_ID)) != 0 ) return -1; + } /*actualizo archivo .did*/ if ( emufs_did_agregar(emu, ID) != 0 ) return -1;