fix strip-semicolon using original file handle size

This commit is contained in:
skytrias
2021-10-23 00:12:32 +02:00
parent 7218a68e89
commit 6399f2b014
2 changed files with 8 additions and 4 deletions
+4 -1
View File
@@ -6030,9 +6030,12 @@ gb_inline b32 gb_file_copy(char const *existing_filename, char const *new_filena
struct stat stat_existing; struct stat stat_existing;
fstat(existing_fd, &stat_existing); fstat(existing_fd, &stat_existing);
size = sendfile(new_fd, existing_fd, 0, stat_existing.st_size); size = sendfile(new_fd, existing_fd, 0, stat_existing.st_size);
// set new handle to wanted size for safety
int i = ftruncate(new_fd, size);
GB_ASSERT(i == 0);
close(new_fd); close(new_fd);
close(existing_fd); close(existing_fd);
+2 -1
View File
@@ -2141,7 +2141,7 @@ int strip_semicolons(Parser *parser) {
generated_count += 1; generated_count += 1;
i64 written = 0; i64 written = 0;
defer (gb_file_truncate(&f, written)); defer (err = gb_file_truncate(&f, written));
debugf("Write file with stripped tokens: %s\n", filename); debugf("Write file with stripped tokens: %s\n", filename);
err = write_file_with_stripped_tokens(&f, file->file, &written); err = write_file_with_stripped_tokens(&f, file->file, &written);
@@ -2178,6 +2178,7 @@ int strip_semicolons(Parser *parser) {
} }
debugf("Copy '%s' to '%s'\n", new_fullpath, old_fullpath); debugf("Copy '%s' to '%s'\n", new_fullpath, old_fullpath);
if (!gb_file_copy(new_fullpath, old_fullpath, false)) { if (!gb_file_copy(new_fullpath, old_fullpath, false)) {
gb_printf_err("failed to copy '%s' to '%s'\n", old_fullpath, new_fullpath); gb_printf_err("failed to copy '%s' to '%s'\n", old_fullpath, new_fullpath);
debugf("Copy '%s' to '%s'\n", old_fullpath_backup, old_fullpath); debugf("Copy '%s' to '%s'\n", old_fullpath_backup, old_fullpath);