From a32f020b53d36bed8de61d4313c572c72bcde3bb Mon Sep 17 00:00:00 2001 From: qarmin Date: Thu, 30 May 2019 10:28:03 +0200 Subject: [PATCH] Properly unlock mutex --- core/command_queue_mt.h | 4 +++- core/io/file_access_network.cpp | 5 ++++- core/print_string.cpp | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/command_queue_mt.h b/core/command_queue_mt.h index 59eabd87866..798fa4394d4 100644 --- a/core/command_queue_mt.h +++ b/core/command_queue_mt.h @@ -406,8 +406,10 @@ class CommandQueueMT { tryagain: // tried to read an empty queue - if (read_ptr == write_ptr) + if (read_ptr == write_ptr) { + if (p_lock) unlock(); return false; + } uint32_t size_ptr = read_ptr; uint32_t size = *(uint32_t *)&command_mem[read_ptr] >> 1; diff --git a/core/io/file_access_network.cpp b/core/io/file_access_network.cpp index 722e62c54ee..2572602e160 100644 --- a/core/io/file_access_network.cpp +++ b/core/io/file_access_network.cpp @@ -118,7 +118,10 @@ void FileAccessNetworkClient::_thread_func() { FileAccessNetwork *fa = NULL; if (response != FileAccessNetwork::RESPONSE_DATA) { - ERR_FAIL_COND(!accesses.has(id)); + if (!accesses.has(id)) { + unlock_mutex(); + ERR_FAIL_COND(!accesses.has(id)); + } } if (accesses.has(id)) diff --git a/core/print_string.cpp b/core/print_string.cpp index d91d49f53b0..3271744af32 100644 --- a/core/print_string.cpp +++ b/core/print_string.cpp @@ -68,8 +68,8 @@ void remove_print_handler(PrintHandlerList *p_handler) { } //OS::get_singleton()->print("print handler list is %p\n",print_handler_list); - ERR_FAIL_COND(l == NULL); _global_unlock(); + ERR_FAIL_COND(l == NULL); } void print_line(String p_string) {