projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix confstr return value
[musl]
/
src
/
malloc
/
malloc.c
diff --git
a/src/malloc/malloc.c
b/src/malloc/malloc.c
index
4044eb2
..
d6ad904
100644
(file)
--- a/
src/malloc/malloc.c
+++ b/
src/malloc/malloc.c
@@
-64,28
+64,27
@@
static struct {
static inline void lock(volatile int *lk)
{
static inline void lock(volatile int *lk)
{
- if (
!libc.threads_minus_1) return;
- while(a_swap(lk, 1)) __wait(lk, lk+1, 1, 1);
+ if (
libc.threads_minus_1)
+
while(a_swap(lk, 1)) __wait(lk, lk+1, 1, 1);
}
static inline void unlock(volatile int *lk)
{
}
static inline void unlock(volatile int *lk)
{
- if (!libc.threads_minus_1) return;
- a_store(lk, 0);
- if (lk[1]) __wake(lk, 1, 1);
+ if (lk[0]) {
+ a_store(lk, 0);
+ if (lk[1]) __wake(lk, 1, 1);
+ }
}
static inline void lock_bin(int i)
{
}
static inline void lock_bin(int i)
{
- if (libc.threads_minus_1)
- lock(mal.bins[i].lock);
+ lock(mal.bins[i].lock);
if (!mal.bins[i].head)
mal.bins[i].head = mal.bins[i].tail = BIN_TO_CHUNK(i);
}
static inline void unlock_bin(int i)
{
if (!mal.bins[i].head)
mal.bins[i].head = mal.bins[i].tail = BIN_TO_CHUNK(i);
}
static inline void unlock_bin(int i)
{
- if (!libc.threads_minus_1) return;
unlock(mal.bins[i].lock);
}
unlock(mal.bins[i].lock);
}
@@
-178,6
+177,7
@@
static struct chunk *expand_heap(size_t n)
return w;
fail:
unlock(mal.brk_lock);
return w;
fail:
unlock(mal.brk_lock);
+ errno = ENOMEM;
return 0;
}
return 0;
}