On 28/11/10 00:57, Paul Eggert wrote: > Could you please try this little patch? It should fix your > problem. I came up with this fix in my sleep (literally! > I woke up this morning and the patch was in my head), but > haven't had time to look at the code in this area to see > if it's the best fix. > > Clearly there's at least one more bug as noted in my previous email > <http://lists.gnu.org/archive/html/bug-coreutils/2010-11/msg00216.html> > but I expect it's less likely to fire. > > diff --git a/src/sort.c b/src/sort.c > index 7e25f6a..1aa1eb4 100644 > --- a/src/sort.c > +++ b/src/sort.c > @@ -3226,13 +3226,13 @@ queue_pop (struct merge_node_queue *queue) > static void > write_unique (struct line const *line, FILE *tfp, char const *temp_output) > { > - static struct line const *saved = NULL; > + static struct line saved; > > if (!unique) > write_line (line, tfp, temp_output); > - else if (!saved || compare (line, saved)) > + else if (!saved.text || compare (line, &saved)) > { > - saved = line; > + saved = *line; > write_line (line, tfp, temp_output); > } > } > >
It passes a fleeting test between kids and sleep... $ zcat cracklib-words-20080507.gz | ./coreutils-8.7/src/sort -u > /dev/null Segmentation fault (core dumped) $ zcat cracklib-words-20080507.gz | ./coreutils-8.7/src/sort -u | wc -l 0 $ zcat cracklib-words-20080507.gz | ./coreutils-8.7/src/sort-paul -u | wc -l 1671704 cheers, Pádraig.