On Tue, Jul 01, 2014 at 03:56:39PM -0400, Jared Yanovich wrote:
> On Mon, Jun 30, 2014 at 11:53:04AM +0200, Otto Moerbeek wrote:
>
> > This indeed solves some problems, but I have a test file on which it cores.
>
> Patch relative to the original diff I posted.
>
> diff -ru sort.new/fsort.c sort.new2/fsort.c
> --- sort.new/fsort.c Tue Jul 1 15:54:45 2014
> +++ sort.new2/fsort.c Tue Jul 1 15:55:15 2014
> @@ -62,7 +62,7 @@
> static size_t bufsize;
> int ntfiles, mfct = 0;
> int c, nelem;
> - union f_handle tfiles, mstart = { MAXFCT - MERGE_FNUM };
> + union f_handle tfiles = { 0 }, mstart = { MAXFCT - MERGE_FNUM };
> int (*get)(int, union f_handle, int, RECHEADER *,
> u_char *, struct field *);
> RECHEADER *crec;
This works better indeed. But is initing the int member only safe? If
sizeof(top) < sizeof(names), only init some bits of the pointer.
-Otto