# HG changeset patch # User Paul Boddie # Date 1616446974 -3600 # Node ID 32e4227eba8717d606dc3098606a1ee788068e85 # Parent 9314408dbd26bd2c075e9bfbcc1e449ee16319f7 Removed erroneous deletion of resources upon thread initiation failure. The finalisation of resources should occur automatically upon failure. diff -r 9314408dbd26 -r 32e4227eba87 opener_context_resource.cc --- a/opener_context_resource.cc Sat Mar 20 01:40:39 2021 +0100 +++ b/opener_context_resource.cc Mon Mar 22 22:02:54 2021 +0100 @@ -54,7 +54,8 @@ FilePager *pager = _opener->open(path, flags); - /* Complete the initialisation and start a server in a new thread. */ + /* Complete the initialisation and start a server in a new thread. + If the thread does not start, the resource should be finalised. */ ResourceServer server(pager); long err = server.start_thread(); @@ -67,8 +68,6 @@ *size = pager->get_data_size(); *file = server.config()->server; } - else - delete pager; return err; } diff -r 9314408dbd26 -r 32e4227eba87 opener_resource.cc --- a/opener_resource.cc Sat Mar 20 01:40:39 2021 +0100 +++ b/opener_resource.cc Mon Mar 22 22:02:54 2021 +0100 @@ -79,14 +79,17 @@ { OpenerContextResource *resource = new OpenerContextResource(this); - /* Complete the initialisation and start a server in a new thread. */ + /* Complete the initialisation and start a server in a new thread. + If the thread does not start, the resource should be finalised. */ ResourceServer server(resource); long err = server.start_thread(); /* Return the server capability to the caller. */ - *context = server.config()->server; + if (!err) + *context = server.config()->server; + return err; }