lucy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marvin Humphrey <mar...@rectangular.com>
Subject Re: [lucy-dev] Re: [lucy-commits] svn commit: r1310742 - /lucy/trunk/core/Lucy/Util/SortUtils.c
Date Tue, 10 Apr 2012 16:03:43 GMT
On Tue, Apr 10, 2012 at 3:21 AM, Nick Wellnhofer <wellnhofer@aevum.de> wrote:
> On 10/04/2012 05:23, Marvin Humphrey wrote:
>>
>> On Sat, Apr 7, 2012 at 4:42 AM,<nwellnhof@apache.org>  wrote:
>>>On Tue, Apr 10, 2012 at 3:21 AM, Nick Wellnhofer <wellnhofer@aevum.de> wrote:
> On 10/04/2012 05:23, Marvin Humphrey wrote:

>> If compare(pivot, pivot) returns anything other than 0, we've got big
>> problems.
>
> That's what happened with Integer64s.

Heh... so we've detected the error (eventually)... Victory!  ;)

>>  I don't think it's in our interest to hide such an error -- better
>> to learn about it as quickly as possible by running off the end of the
>> array and segfaulting.
>
>
> Well, the compare function can be supplied by the user, and I'd prefer that
> we never segfault on bogus user input.

I didn't think we'd exposed the SortUtils routines to users yet, but fair
enough.

How about we throw an exception, then?

    if (i == right) {
        THROW(ERR, "Element failed to test as equal to itself");
    }

If equal elements do not test as equal, the sort is unstable.  That can lead
to very subtle and difficult to diagnose bugs.

I don't adding the exception block it will interfere with any compiler
optimizations, since it's not within a leaf block -- we already CALL the
comparator.

Marvin Humphrey

Mime
View raw message