- memset(block, 0, efs->tam_bloque); /* inicializa bloque */
- /* verifica que el registro no sea más grande que el bloque */
- if (reg_size > block_space) {
- EMUFS_REG_SIZE chunk_size = 0; /* Tamaño de la porción de registro */
- char* chunk_pointer = reg; /* Puntero a la poción del registro */
- do {
- memset(block, 0, efs->tam_bloque); /* inicializa bloque */
- reg_header.size -= chunk_size;
- chunk_size = MIN(reg_header.size, block_space);
- /* graba porción del registro en bloque */
- emufs_tipo1_escribir_reg_chunk_en_memoria(block, reg_header, reg,
- chunk_size);
- /* graba el bloque en el archivo */
- block_id = emufs_tipo1_grabar_bloque(efs, block, block_id, err);
- if (*err) {
- PERR("error al grabar bloque");
- free(block);
- return EMUFS_NOT_FOUND;
- }
+ do {
+ memset(block, 0, efs->tam_bloque); /* inicializa bloque */
+ chunk_ptr += chunk_size; /* Avanzo para guardar prox chunk */
+ reg_header.size -= chunk_size; /* Resto lo que ya guardé */
+ chunk_size = MIN(reg_header.size, block_space);
+ /* graba porción del registro en bloque */
+ emufs_tipo1_escribir_reg_chunk_en_memoria(block, reg_header, chunk_ptr, chunk_size);
+ /* graba el bloque en el archivo */
+ curr_block_id = emufs_tipo1_grabar_bloque(efs, block, EMUFS_NOT_FOUND, err);
+ if (*err) {
+ PERR("error al grabar bloque");