Code Review
/
src
/
app-framework-binder.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
websocket: Tune maximum received length
[src/app-framework-binder.git]
/
src
/
locale-root.c
diff --git
a/src/locale-root.c
b/src/locale-root.c
index
ee88f3f
..
8386e66
100644
(file)
--- a/
src/locale-root.c
+++ b/
src/locale-root.c
@@
-263,7
+263,8
@@
static int init_container(struct locale_container *container, int dirfd)
}
/* sort the folders */
}
/* sort the folders */
- qsort(container->folders, container->count, sizeof *container->folders, compare_folders_for_qsort);
+ if (container->count)
+ qsort(container->folders, container->count, sizeof *container->folders, compare_folders_for_qsort);
/* build the parents links */
i = container->count;
/* build the parents links */
i = container->count;
@@
-331,7
+332,7
@@
struct locale_root *locale_root_create_at(int dirfd, const char *path)
*/
struct locale_root *locale_root_addref(struct locale_root *root)
{
*/
struct locale_root *locale_root_addref(struct locale_root *root)
{
-
root->refcount++
;
+
__atomic_add_fetch(&root->refcount, 1, __ATOMIC_RELAXED)
;
return root;
}
return root;
}
@@
-341,7
+342,7
@@
struct locale_root *locale_root_addref(struct locale_root *root)
*/
static void internal_unref(struct locale_root *root)
{
*/
static void internal_unref(struct locale_root *root)
{
- if (!
--root->intcount
) {
+ if (!
__atomic_sub_fetch(&root->intcount, 1, __ATOMIC_RELAXED)
) {
clear_container(&root->container);
close(root->rootfd);
free(root);
clear_container(&root->container);
close(root->rootfd);
free(root);
@@
-356,7
+357,7
@@
void locale_root_unref(struct locale_root *root)
{
size_t i;
{
size_t i;
- if (root
!= NULL && !--root->refcount
) {
+ if (root
&& !__atomic_sub_fetch(&root->refcount, 1, __ATOMIC_RELAXED)
) {
/* clear circular references through searchs */
for (i = 0 ; i < LRU_COUNT ; i++)
locale_search_unref(root->lru[i]);
/* clear circular references through searchs */
for (i = 0 ; i < LRU_COUNT ; i++)
locale_search_unref(root->lru[i]);
@@
-420,7
+421,7
@@
static struct locale_search *create_search(struct locale_root *root, const char
errno = ENOMEM;
} else {
/* init */
errno = ENOMEM;
} else {
/* init */
-
root->intcount++
;
+
__atomic_add_fetch(&root->intcount, 1, __ATOMIC_RELAXED)
;
search->root = root;
search->head = NULL;
search->refcount = 1;
search->root = root;
search->head = NULL;
search->refcount = 1;
@@
-541,7
+542,7
@@
struct locale_search *locale_root_search(struct locale_root *root, const char *d
*/
struct locale_search *locale_search_addref(struct locale_search *search)
{
*/
struct locale_search *locale_search_addref(struct locale_search *search)
{
-
search->refcount++
;
+
__atomic_add_fetch(&search->refcount, 1, __ATOMIC_RELAXED)
;
return search;
}
return search;
}
@@
-552,7
+553,7
@@
void locale_search_unref(struct locale_search *search)
{
struct locale_search_node *it, *nx;
{
struct locale_search_node *it, *nx;
- if (search && !
--search->refcount
) {
+ if (search && !
__atomic_sub_fetch(&search->refcount, 1, __ATOMIC_RELAXED)
) {
it = search->head;
while(it != NULL) {
nx = it->next;
it = search->head;
while(it != NULL) {
nx = it->next;