From f807fe56b5a9ecd8df90f1ee2c75622557ef4c35 Mon Sep 17 00:00:00 2001 From: nova Date: Thu, 21 May 2026 00:06:39 +0200 Subject: [PATCH] fix of dir->file_list[i].file_type being accidentally overwritten --- dir.c | 6 ++++-- threading.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/dir.c b/dir.c index ef7d126..f3a0efe 100644 --- a/dir.c +++ b/dir.c @@ -52,6 +52,8 @@ void get_dir_content(char *path, dir *dir){ } else { scandir(path, &entry, skip_hidden_files, NULL); } + + char *full_path = NULL; unsigned long i = 0; for (i = 0; i < dir->file_count; i++ ) { @@ -199,7 +201,7 @@ void print_dir(WINDOW *win, char print_info, dir *dir){ } while (file_size > 1 && size_index < size_unit_count); size_char = size_unit[(unsigned)size_index]; - if (dir->file_list[i].file_type &= FILE_TYPE_DIR) { + if (dir->file_list[i].file_type & FILE_TYPE_DIR) { offset_back = line_width - (snprintf(NULL,0,"%ld", dir->file_list[i].file_size) + 1); } else if (size_char =='B') { offset_back = line_width - (snprintf(NULL,0,"%0.0lf %c", printed_size, size_char) + 1); @@ -265,7 +267,7 @@ void print_dir(WINDOW *win, char print_info, dir *dir){ #endif - if (dir->file_list[i].file_type &= FILE_TYPE_DIR) { + if (dir->file_list[i].file_type & FILE_TYPE_DIR) { mvwprintw(win, i-offset_vertical, offset_back, "%ld", dir->file_list[i].file_size); }else if (size_char =='B') { mvwprintw(win, i-offset_vertical, offset_back, "%0.0lf %c", printed_size, size_char); diff --git a/threading.c b/threading.c index e08ec94..c68feb0 100644 --- a/threading.c +++ b/threading.c @@ -215,8 +215,10 @@ void *thread_rgt(){ pthread_mutex_unlock(&mutex_mid); + + if (rgt_dir.current_file->permissions & S_IRUSR) { - if (rgt_dir.current_file->file_type &= FILE_TYPE_DIR) { + if (rgt_dir.current_file->file_type & FILE_TYPE_DIR) { #if SETTINGS_UEBERZUG_IMAGE_PREVIEW != 0 images_clear(); #endif @@ -243,7 +245,7 @@ void *thread_rgt(){ rgt_dir.current_file->file_type |= FILE_TYPE_OPEN_FILE; pthread_mutex_lock(&mutex_render); werase(win_r); - if (rgt_dir.current_file->file_type == FILE_TYPE_OPEN_FILE) { + if (rgt_dir.current_file->file_type & FILE_TYPE_OPEN_FILE) { mvwaddnstr(win_r, 0, 0, rgt_buffer, (terminal_width/2) * terminal_width); } else if ((rgt_dir.current_file->permissions & S_IRUSR) == 0) { mvwaddstr(win_r, 0, 0, "not accessible");