@@ -80,25 +80,31 @@ subroutine cam_register_open_file(file, file_name)
8080 end do
8181 ! If we get here, go ahead and register the file
8282 if (associated (open_files_pool)) then
83+ ! Reuse pooled structure and point to the next pool entry
8384 of_new = > open_files_pool
85+ open_files_pool = > open_files_pool% next
8486 allocate (of_new% file_desc, stat= ierr)
8587 call check_allocate(ierr, subname, ' of_file%file_desc' , file= __FILE__, &
8688 line= __LINE__)
8789 of_new% file_desc = file
8890 of_new% file_name = file_name
89- allocate (open_files_pool% next)
90- open_files_pool% next = > open_files_pool
91+ nullify(of_new% next)
9192 else
9293 allocate (of_new)
9394 allocate (of_new% file_desc)
9495 of_new% file_desc = file
9596 of_new% file_name = file_name
96- open_files_pool = > of_new
97- end if
98- open_files_tail = > of_new
99- if (.not. associated (open_files_head)) then
100- open_files_head = > of_new
97+ nullify(of_new% next)
10198 end if
99+
100+ ! Add the registered file to the tail of the open files list
101+ if (associated (open_files_tail)) then
102+ open_files_tail% next = > of_new
103+ open_files_tail = > of_new
104+ else
105+ open_files_head = > of_new
106+ open_files_tail = > of_new
107+ endif
102108 end subroutine cam_register_open_file
103109
104110 subroutine cam_register_close_file (file , log_shutdown_in )
0 commit comments