From 9b2dcf66ea1809903be6c16e4f226087d9cfa381 Mon Sep 17 00:00:00 2001 From: henrypp Date: Wed, 30 Oct 2019 14:37:58 +0600 Subject: [PATCH] fix locks --- src/helper.cpp | 10 ++-------- src/main.cpp | 20 ++++++++++---------- src/notifications.cpp | 4 ++-- src/profile.cpp | 16 ++++++++-------- 4 files changed, 22 insertions(+), 28 deletions(-) diff --git a/src/helper.cpp b/src/helper.cpp index ff8c9bca..07b89809 100644 --- a/src/helper.cpp +++ b/src/helper.cpp @@ -235,8 +235,6 @@ bool _app_formataddress (ADDRESS_FAMILY af, UINT8 proto, const PVOID ptr_addr, U _app_freeobjects_map (cache_hosts, false); cache_hosts[addr_hash] = _r_obj_allocate (ptr_cache, &_app_dereferencestring); - _r_obj_reference (cache_hosts[addr_hash]); - _r_fastlock_releaseexclusive (&lock_cache); } } @@ -2745,7 +2743,7 @@ bool _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT * forma _r_obj_dereference (ptr_cache_object); } - return *paddr_dns; + return !_r_str_isempty (paddr_dns); } rstring host = _app_parsehostaddress_dns (ni.NamedAddress.Address, port); @@ -2770,8 +2768,6 @@ bool _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT * forma _app_freeobjects_map (cache_dns, false); cache_dns[dns_hash] = _r_obj_allocate (ptr_cache, &_app_dereferencestring); - _r_obj_reference (cache_dns[dns_hash]); - _r_fastlock_releaseexclusive (&lock_cache); } @@ -3020,7 +3016,7 @@ bool _app_resolveaddress (ADDRESS_FAMILY af, LPVOID paddr, LPWSTR * pbuffer) LPWSTR pstraddr = nullptr; _app_formataddress (af, 0, paddr, 0, &pstraddr, FMTADDR_AS_ARPA); - if (pstraddr) + if (!_r_str_isempty (pstraddr)) { const size_t arpa_hash = _r_str_hash (pstraddr); @@ -3068,8 +3064,6 @@ bool _app_resolveaddress (ADDRESS_FAMILY af, LPVOID paddr, LPWSTR * pbuffer) _app_freeobjects_map (cache_arpa, false); cache_arpa[arpa_hash] = _r_obj_allocate (ptr_cache, &_app_dereferencestring); - _r_obj_reference (cache_arpa[arpa_hash]); - _r_fastlock_releaseexclusive (&lock_cache); } } diff --git a/src/main.cpp b/src/main.cpp index fcc90db2..92f2325f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3493,9 +3493,9 @@ INT_PTR CALLBACK DlgProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) DragQueryFile ((HDROP)wparam, i, file, length); - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); app_hash = _app_addapplication (hwnd, file, 0, 0, 0, false, false, false); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); SAFE_DELETE_ARRAY (file); } @@ -4995,9 +4995,9 @@ INT_PTR CALLBACK DlgProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) if (files[ofn.nFileOffset - 1] != 0) { - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); app_hash = _app_addapplication (hwnd, files, 0, 0, 0, false, false, false); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); } else { @@ -5011,9 +5011,9 @@ INT_PTR CALLBACK DlgProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) if (*p) { - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); app_hash = _app_addapplication (hwnd, _r_fmt (L"%s\\%s", dir, p), 0, 0, 0, false, false, false); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); } } } @@ -5389,12 +5389,12 @@ INT_PTR CALLBACK DlgProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) if (DialogBoxParam (nullptr, MAKEINTRESOURCE (IDD_EDITOR), hwnd, &EditorProc, (LPARAM)ptr_rule_object)) { - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); const size_t rule_idx = rules_arr.size (); rules_arr.push_back (ptr_rule_object); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); const INT listview_rules_id = _app_getlistview_id (DataRuleCustom); @@ -5596,9 +5596,9 @@ INT_PTR CALLBACK DlgProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) _app_timer_reset (hwnd, ptr_app); _app_freenotify (app_hash, ptr_app); - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); _app_freeapplication (app_hash); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); _r_obj_dereferenceex (ptr_app_object, 2); } diff --git a/src/notifications.cpp b/src/notifications.cpp index 0df3ae00..8bd3e6d0 100644 --- a/src/notifications.cpp +++ b/src/notifications.cpp @@ -1076,12 +1076,12 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp if (DialogBoxParam (nullptr, MAKEINTRESOURCE (IDD_EDITOR), app.GetHWND (), &EditorProc, (LPARAM)ptr_rule_object)) { - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); const size_t rule_idx = rules_arr.size (); rules_arr.push_back (ptr_rule_object); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); const INT listview_id = _app_gettab_id (app.GetHWND ()); diff --git a/src/profile.cpp b/src/profile.cpp index 8c6f6467..72123956 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -1395,7 +1395,7 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) _r_listview_deleteallitems (hwnd, i); } - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); // clear apps _app_freeobjects_map (apps, true); @@ -1416,7 +1416,7 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) // generate services list _app_generate_services (); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); // load profile if (path_custom || _r_fs_exists (config.profile_path) || _r_fs_exists (config.profile_path_backup)) @@ -1434,9 +1434,9 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) if (result.status != pugi::status_file_not_found && result.status != pugi::status_no_document_element) _app_logerror (L"pugi::load_file", 0, _r_fmt (L"status: %d,offset: %" PR_PTRDIFF L",text: %hs,file: %s", result.status, result.offset, result.description (), path_custom ? path_custom : config.profile_path), false); - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); _app_profile_load_fallback (); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); } else { @@ -1454,9 +1454,9 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) if (root_apps) _app_profile_load_helper (root_apps, DataAppRegular, version); - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); _app_profile_load_fallback (); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); // load rules config (new!) pugi::xml_node root_rules_config = root.child (L"rules_config"); @@ -1502,9 +1502,9 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) _r_fs_move (config.apps_path, config.apps_path_backup, MOVEFILE_REPLACE_EXISTING); } - _r_fastlock_acquireexclusive (&lock_access); + _r_fastlock_acquireshared (&lock_access); _app_profile_load_fallback (); - _r_fastlock_releaseexclusive (&lock_access); + _r_fastlock_releaseshared (&lock_access); } // load rules config (old!)