1. 29 5月, 2011 1 次提交
  2. 27 5月, 2011 1 次提交
  3. 23 5月, 2011 3 次提交
  4. 18 5月, 2011 1 次提交
  5. 12 5月, 2011 1 次提交
    • R
      fix the last known rounding bug in floating point printing · 8628eff9
      Rich Felker 提交于
      the observed symptom was that the code was incorrectly rounding up
      1.0625 to 1.063 despite the rounding mode being round-to-nearest with
      ties broken by rounding to even last place. however, the code was just
      not right in many respects, and i'm surprised it worked as well as it
      did. this time i tested the values that end up in the variables round,
      small, and the expression round+small, and all look good.
      8628eff9
  6. 08 5月, 2011 4 次提交
  7. 07 5月, 2011 3 次提交
    • R
      reduce some ridiculously large spin counts · 77f15d10
      Rich Felker 提交于
      these should be tweaked according to testing. offhand i know 1000 is
      too low and 5000 is likely to be sufficiently high. consider trying to
      add futexes to file locking, too...
      77f15d10
    • R
      remove debug code that was missed in barrier commit · 9dd6399c
      Rich Felker 提交于
      9dd6399c
    • R
      completely new barrier implementation, addressing major correctness issues · f16a3089
      Rich Felker 提交于
      the previous implementation had at least 2 problems:
      
      1. the case where additional threads reached the barrier before the
      first wave was finished leaving the barrier was untested and seemed
      not to be working.
      
      2. threads leaving the barrier continued to access memory within the
      barrier object after other threads had successfully returned from
      pthread_barrier_wait. this could lead to memory corruption or crashes
      if the barrier object had automatic storage in one of the waiting
      threads and went out of scope before all threads finished returning,
      or if one thread unmapped the memory in which the barrier object
      lived.
      
      the new implementation avoids both problems by making the barrier
      state essentially local to the first thread which enters the barrier
      wait, and forces that thread to be the last to return.
      f16a3089
  8. 06 5月, 2011 1 次提交
  9. 02 5月, 2011 4 次提交
  10. 29 4月, 2011 1 次提交
  11. 28 4月, 2011 4 次提交
    • R
      use compiler builtins for variadic macros when available · def0af18
      Rich Felker 提交于
      this slightly cuts down on the degree musl "fights with" gcc, but more
      importantly, it fixes a critical bug when gcc inlines a variadic
      function and optimizes out the variadic arguments due to noticing that
      they were "not used" (by __builtin_va_arg).
      
      we leave the old code in place if __GNUC__ >= 3 is false; it seems
      like it might be necessary at least for tinycc support and perhaps if
      anyone ever gets around to fixing gcc 2.95.3 enough to make it work..
      def0af18
    • R
      correct variadic prototypes for execl* family · e6bac87d
      Rich Felker 提交于
      the old versions worked, but conflicted with programs which declared
      their own prototypes and generated warnings with some versions of gcc.
      e6bac87d
    • R
      replace heap sort with smoothsort implementation by Valentin Ochs · 22263709
      Rich Felker 提交于
      Smoothsort is an adaptive variant of heapsort. This version was
      written by Valentin Ochs (apo) specifically for inclusion in musl. I
      worked with him to get it working in O(1) memory usage even with giant
      array element widths, and to optimize it heavily for size and speed.
      It's still roughly 4 times as large as the old heap sort
      implementation, but roughly 20 times faster given an almost-sorted
      array of 1M elements (20 being the base-2 log of 1M), i.e. it really
      does reduce O(n log n) to O(n) in the mostly-sorted case. It's still
      somewhat slower than glibc's Introsort for random input, but now
      considerably faster than glibc when the input is already sorted, or
      mostly sorted.
      22263709
    • R
      add word-sized ctz function to atomic.h · 4bb9b4f3
      Rich Felker 提交于
      strictly speaking this and a few other ops should be factored into
      asm.h or the file should just be renamed to asm.h, but whatever. clean
      it up someday.
      4bb9b4f3
  12. 27 4月, 2011 1 次提交
  13. 26 4月, 2011 4 次提交
  14. 25 4月, 2011 1 次提交
    • R
      fix 2 eof-related bugs in scanf · 5efc6af4
      Rich Felker 提交于
      1. failed match of literal chars from the format string would always
      return matching failure rather than input failure at eof, leading to
      infinite loops in some programs.
      
      2. unread of eof would wrongly adjust the character counts reported by
      %n, yielding an off-by-one error.
      5efc6af4
  15. 23 4月, 2011 2 次提交
  16. 22 4月, 2011 5 次提交
  17. 21 4月, 2011 3 次提交
    • R
      fix minor bugs due to incorrect threaded-predicate semantics · 870cc679
      Rich Felker 提交于
      some functions that should have been testing whether pthread_self()
      had been called and initialized the thread pointer were instead
      testing whether pthread_create() had been called and actually made the
      program "threaded". while it's unlikely any mismatch would occur in
      real-world problems, this could have introduced subtle bugs. now, we
      store the address of the main thread's thread descriptor in the libc
      structure and use its presence as a flag that the thread register is
      initialized. note that after fork, the calling thread (not necessarily
      the original main thread) is the new main thread.
      870cc679
    • R
      workaround bug in linux dup2 · f9a6372a
      Rich Felker 提交于
      the linux documentation for dup2 says it can fail with EBUSY due to a
      race condition with open and dup in the kernel. shield applications
      (and the rest of libc) from this nonsense by looping until it succeeds
      f9a6372a
    • R
      10d7561d