1
0
mirror of https://gitlab.com/80486DX2-66/gists synced 2025-04-15 03:49:06 +05:30

reverse-ramdisk.c: fix file locking

This commit is contained in:
パチュリー・ノーレッジ 2024-07-30 17:50:36 +03:00
parent b1cce2603a
commit de03ab20f9
Signed by: 80486DX2-66
GPG Key ID: 83631EF27054609B

View File

@ -169,7 +169,8 @@ int tf_free(int ID) {
// Delete the file
if (remove(temp_files[index].file_path) != 0) {
LINE_FAIL(-1);
temp_files[index].locked = false;
LINE_FAIL(-2);
return -1;
}
@ -256,13 +257,15 @@ int tf_write(int ID, size_t offset, void* src, size_t data_size) {
(size_t)
#endif
bytes_written != data_size) {
temp_files[index].locked = false;
errno = EIO;
return -1;
}
#if IS_POSIX
if (fsync(file) == -1) {
LINE_FAIL(-1);
temp_files[index].locked = false;
LINE_FAIL(-2);
return -1;
}
#else
@ -302,11 +305,14 @@ int tf_read(int ID, size_t offset, void* dest, size_t data_size) {
NULL
#endif
) {
temp_files[index].locked = false;
return -1;
}
// Read the data from the file
void* src = malloc(data_size);
if (src == NULL) {
temp_files[index].locked = false;
#if IS_POSIX
close
#else
@ -327,7 +333,8 @@ int tf_read(int ID, size_t offset, void* dest, size_t data_size) {
#endif
(file, offset, SEEK_SET) == -1) {
free(src);
LINE_FAIL(-2);
temp_files[index].locked = false;
LINE_FAIL(-3);
return -1;
}
@ -346,6 +353,7 @@ int tf_read(int ID, size_t offset, void* dest, size_t data_size) {
(size_t)
#endif
bytes_read != data_size) {
temp_files[index].locked = false;
errno = EIO;
return -1;
}