Greg and others,

Qsort.c in src/exec/libdx seems to be giving problems:

My compilers complain about basic type redefinition errors of
QUICSORT_LOCAL. On Windows MVSC gives errors,
on Linux KAI and Fujitsu compilers complain with errors... only GCC, seems
to ignore it with warnings only.

you have:

static void QUICSORT_LOCAL(TYPE *base,TYPE *max);

static void
QUICKSORT(TYPE *base, int n)
{
    register TYPE *i;
    register TYPE *j;
    register TYPE *hi;
    register TYPE *lo;
    TYPE swaptmp;
    TYPE *min;
    TYPE *max;
----<snip>----

   max = base + n;
    if (n >= THRESHOLD)
    {
        QUICKSORT_LOCAL(base, max);
        hi = base + THRESHOLD;
    }
    else
    {
        hi = max;
-------------------------------------------
Then redefined the QUICKSORT_LOCAL with different type in:

/*
 * perform quicksort partitioning
 */

static void
QUICKSORT_LOCAL(TYPE *base, TYPE *max)
{
    register TYPE *i;
    register TYPE *j;
    register TYPE *t;
    TYPE *mid;
    TYPE *tmp;
    TYPE swaptmp;
    int         lo, hi;
--------<snip>----------

        {
            if (lo >= THRESHOLD)
                QUICKSORT_LOCAL(base, j);
            base = i;
            lo = hi;
        }
        else /* hi > lo */
        {
            if (hi >= THRESHOLD)
                QUICKSORT_LOCAL(i, max);
            max = j;
        }


Also: I am getting stack overflow on opening very large *.net files.  On
Windows MSVC
and on Linux KAI and Fujitsu Debugs points to following lines in qsort.c

    /*
     * sort using insertion sort
     */
    for (min = base; (hi = ++min) < max;)
    {
        while (hi--, GT(hi, min))
             continue ;

        if (++hi != min)
        {
            swaptmp = *min;
            for (i = j = min; --j >= hi; i = j)
                *i = *j;
            *i = swaptmp;
        }
    }

Any suggestions from any one?

Suhaib

Reply via email to