fix regression in dynamic-linked tls when both main app & libs have tls
[musl] / src / malloc / memalign.c
index 55fe68e..006bd21 100644 (file)
@@ -31,8 +31,10 @@ void *__memalign(size_t align, size_t len)
        if (!(mem = malloc(len + align-1)))
                return NULL;
 
-       header = ((size_t *)mem)[-1];
        new = (void *)((uintptr_t)mem + align-1 & -align);
+       if (new == mem) return mem;
+
+       header = ((size_t *)mem)[-1];
 
        if (!(header & 7)) {
                ((size_t *)new)[-2] = ((size_t *)mem)[-2] + (new-mem);
@@ -48,7 +50,7 @@ void *__memalign(size_t align, size_t len)
        ((size_t *)new)[-1] = header&7 | end-new;
        ((size_t *)end)[-2] = footer&7 | end-new;
 
-       if (new != mem) free(mem);
+       free(mem);
        return new;
 }