manual: Remove incorrect claim that qsort() can be stabilized
Under certain conditions on the size of the array and its items, qsort() may fall back to an in-place quicksort if it cannot allocate memory for a temporary array with malloc(). This algorithm is not a stable sort even if the comparison function is written in the described manner. Fixes #10672. Signed-off-by: Anders Kaseorg <andersk@mit.edu>
This commit is contained in:
parent
b987c89126
commit
f5f46d51f7
|
@ -1,3 +1,9 @@
|
|||
2014-12-10 Anders Kaseorg <andersk@MIT.EDU>
|
||||
|
||||
[BZ #10672]
|
||||
* manual/search.texi: (Array Sort Function): Remove claim how make
|
||||
qsort stable.
|
||||
|
||||
2014-12-10 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
[BZ #12847]
|
||||
|
|
12
NEWS
12
NEWS
|
@ -9,12 +9,12 @@ Version 2.21
|
|||
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
6652, 12847, 12926, 13862, 14132, 14138, 14171, 14498, 15215, 15884,
|
||||
16469, 16619, 16740, 16857, 17192, 17266, 17344, 17363, 17370, 17371,
|
||||
17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555, 17570,
|
||||
17571, 17572, 17573, 17574, 17581, 17582, 17583, 17584, 17585, 17589,
|
||||
17594, 17601, 17608, 17616, 17625, 17633, 17647, 17653, 17664, 17665,
|
||||
17668, 17682.
|
||||
6652, 10672, 12847, 12926, 13862, 14132, 14138, 14171, 14498, 15215,
|
||||
15884, 16469, 16619, 16740, 16857, 17192, 17266, 17344, 17363, 17370,
|
||||
17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555,
|
||||
17570, 17571, 17572, 17573, 17574, 17581, 17582, 17583, 17584, 17585,
|
||||
17589, 17594, 17601, 17608, 17616, 17625, 17633, 17647, 17653, 17664,
|
||||
17665, 17668, 17682.
|
||||
|
||||
* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
|
||||
under certain input conditions resulting in the execution of a shell for
|
||||
|
|
|
@ -180,11 +180,10 @@ This can make a difference when the comparison considers only part of
|
|||
the elements. Two elements with the same sort key may differ in other
|
||||
respects.
|
||||
|
||||
If you want the effect of a stable sort, you can get this result by
|
||||
writing the comparison function so that, lacking other reason
|
||||
distinguish between two elements, it compares them by their addresses.
|
||||
Note that doing this may make the sorting algorithm less efficient, so
|
||||
do it only if necessary.
|
||||
The addresses passed to the comparison function need not correspond with
|
||||
the original location of the objects, and need not even lie within the
|
||||
original array. The only way to perform a stable sort with @var{qsort}
|
||||
is to first augment the objects with a monotonic counter of some kind.
|
||||
|
||||
Here is a simple example of sorting an array of doubles in numerical
|
||||
order, using the comparison function defined above (@pxref{Comparison
|
||||
|
|
Loading…
Reference in New Issue