X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/5a2e60f0e504ec59f3e8b9acbaaf20fc0b9907a3..ad244b41c3a73da27f9b44070a98fa8d427fdc15:/emufs/tipo1.c diff --git a/emufs/tipo1.c b/emufs/tipo1.c index 73ea3e2..a8b5102 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -313,7 +313,9 @@ EMUFS_REG_ID emufs_tipo1_grabar_registro(EMUFS* efs, void* reg, emufs_tipo1_escribir_reg_chunk_en_memoria(block + efs->tam_bloque - fs, header, chunk_ptr, chunk_size); /* rellena el espacio libre con ceros para la GUI */ - if (fs) memset(block + efs->tam_bloque - fs, 0, fs); + memset(block + efs->tam_bloque - fs + chunk_size + + sizeof(EMUFS_TIPO1_REG_HEADER), 0, + fs - chunk_size - sizeof(EMUFS_TIPO1_REG_HEADER)); /* graba el bloque en el archivo */ new_block_id = emufs_tipo1_grabar_bloque_fsc(efs, block, curr_block_id, fs - sizeof(EMUFS_TIPO1_REG_HEADER) - chunk_size, err); @@ -426,11 +428,14 @@ int emufs_tipo1_borrar_registro(EMUFS* efs, EMUFS_REG_ID reg_id) /* si es necesario desplazar */ if (offset < offset_reg_end) { /* muevo la porción de bloque a izquierda */ + /* XXX Este memcpy() puede copiar regiones de memoria que + * se superponen, si copia de principio a fin y byte a byte + * no debería haber problema */ memcpy(block + offset, block + offset_reg_end, efs->tam_bloque - offset_reg_end); /* rellena el espacio libre con ceros para la GUI */ - if (fs) memset(block + offset_reg_end, 0, - efs->tam_bloque - offset_reg_end); + /* FIXME memset(block + offset_reg_end, 0, + efs->tam_bloque - offset_reg_end);*/ } } /* guardo el bloque en disco (actualizando espacio libre) */