fixed file descriptor leakage and erroneous flag setting.
This commit is contained in:
parent
9e7add658b
commit
7f3e81f5d3
|
@ -574,7 +574,8 @@ create_log(int16_t file_page, struct file_header *hdr)
|
||||||
hdr->flags |= COFFEE_FLAG_LOG;
|
hdr->flags |= COFFEE_FLAG_LOG;
|
||||||
WRITE_HEADER(hdr, log_page);
|
WRITE_HEADER(hdr, log_page);
|
||||||
for(i = 0; i < COFFEE_FD_SET_SIZE; i++) {
|
for(i = 0; i < COFFEE_FD_SET_SIZE; i++) {
|
||||||
if(coffee_fd_set[i].file_page == file_page) {
|
if(coffee_fd_set[i].file_page == file_page &&
|
||||||
|
coffee_fd_set[i].flags != COFFEE_FD_FREE) {
|
||||||
coffee_fd_set[i].flags |= COFFEE_FD_MODIFIED;
|
coffee_fd_set[i].flags |= COFFEE_FD_MODIFIED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -605,6 +606,7 @@ flush_log(uint16_t file_page)
|
||||||
new_file_page = cfs_coffee_reserve(hdr.name,
|
new_file_page = cfs_coffee_reserve(hdr.name,
|
||||||
(hdr.max_pages - 1) * COFFEE_PAGE_SIZE);
|
(hdr.max_pages - 1) * COFFEE_PAGE_SIZE);
|
||||||
if(new_file_page < 0) {
|
if(new_file_page < 0) {
|
||||||
|
cfs_close(fd);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -640,6 +642,7 @@ flush_log(uint16_t file_page)
|
||||||
for(n = 0; n < COFFEE_FD_SET_SIZE; n++) {
|
for(n = 0; n < COFFEE_FD_SET_SIZE; n++) {
|
||||||
if(coffee_fd_set[n].file_page == file_page) {
|
if(coffee_fd_set[n].file_page == file_page) {
|
||||||
coffee_fd_set[n].file_page = new_file_page;
|
coffee_fd_set[n].file_page = new_file_page;
|
||||||
|
coffee_fd_set[n].flags &= ~COFFEE_FD_MODIFIED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -777,7 +780,7 @@ cfs_open(const char *name, int flags)
|
||||||
|
|
||||||
fd = get_available_fd();
|
fd = get_available_fd();
|
||||||
if(fd < 0) {
|
if(fd < 0) {
|
||||||
PRINTF("Coffee: failed to allocate a new file descriptor!\n");
|
PRINTF("Coffee: Failed to allocate a new file descriptor!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue