diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-05-30 12:01:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-30 12:01:20 +0200 |
commit | 9d6294c78a340c6452f0b3f11a67c186647d6ed7 (patch) | |
tree | a1ba3ff513bb63761951a3d24c338b4cae6435d5 | |
parent | 8c923fc61740afd560e6c814f7ef19b0cdc30112 (diff) | |
parent | a32f020b53d36bed8de61d4313c572c72bcde3bb (diff) |
Merge pull request #29304 from qarmin/fix_unlocking_mutex
Properly unlock mutex
-rw-r--r-- | core/command_queue_mt.h | 4 | ||||
-rw-r--r-- | core/io/file_access_network.cpp | 5 | ||||
-rw-r--r-- | 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 59eabd8786..798fa4394d 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 722e62c54e..2572602e16 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 d91d49f53b..3271744af3 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) { |