fix locks

This commit is contained in:
henrypp committed 2019-10-30 14:37:58 +06:00
1 parent fdc61c1d8a
commit 9b2dcf66ea
4 files changed
+22 -28

No files matched your search

+2 -8
View File
@@ -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);
}
}
+10 -10
View File
@@ -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);
}
+2 -2
View File
@@ -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 ());
+8 -8
View File
@@ -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!)