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);
/* 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) */