if (block == NULL) {
PERR("No hay memoria");
*err = EMUFS_ERROR_OUT_OF_MEMORY;
+ fclose(file);
return NULL;
}
if (fread(block, efs->tam_bloque, 1, file) != 1) {
free(block);
+ fclose(file);
PERR("Error al leer bloque");
*err = EMUFS_ERROR_FILE_READ;
return NULL;
/* 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 */