mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:12:43 +00:00 
			
		
		
		
	LibWeb+WebContent: Do not reference-count file request objects
There is currently a memory leak with these file request objects due to the callback on_file_request_finish referencing itself in its capture list. This object does not need to be reference counted or allocated on the heap. It is only ever stored in a HashMap until a response is received from the browser, and it is not shared.
This commit is contained in:
		
							parent
							
								
									9bb469f324
								
							
						
					
					
						commit
						96f409ec1e
					
				
					 9 changed files with 29 additions and 26 deletions
				
			
		|  | @ -236,9 +236,8 @@ void ResourceLoader::load(LoadRequest& request, Function<void(ReadonlyBytes, Has | |||
| 
 | ||||
|         if (!m_page.has_value()) | ||||
|             return; | ||||
|         VERIFY(m_page.has_value()); | ||||
|         auto file_ref = make_ref_counted<FileRequest>(url.path()); | ||||
|         file_ref->on_file_request_finish = [this, success_callback = move(success_callback), error_callback = move(error_callback), log_success, log_failure, request, file_ref](ErrorOr<i32> file_or_error) { | ||||
| 
 | ||||
|         FileRequest file_request(url.path(), [this, success_callback = move(success_callback), error_callback = move(error_callback), log_success, log_failure, request](ErrorOr<i32> file_or_error) { | ||||
|             --m_pending_loads; | ||||
|             if (on_load_counter_change) | ||||
|                 on_load_counter_change(); | ||||
|  | @ -271,8 +270,9 @@ void ResourceLoader::load(LoadRequest& request, Function<void(ReadonlyBytes, Has | |||
|             auto data = maybe_data.release_value(); | ||||
|             log_success(request); | ||||
|             success_callback(data, {}, {}); | ||||
|         }; | ||||
|         m_page->client().request_file(file_ref); | ||||
|         }); | ||||
| 
 | ||||
|         m_page->client().request_file(move(file_request)); | ||||
| 
 | ||||
|         ++m_pending_loads; | ||||
|         if (on_load_counter_change) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Flynn
						Timothy Flynn