On Aug 26, 2011, at 2:50 AM, Ruediger Pluem wrote:
> 
> I followed through the above algorithm with a range of "0-1,1000-1001" and the
> result was a range of "0-1001" which feels wrong. Culprit seems to be the 
> ((end-1) >= oend) check.
> Shouldn't that be oend >= (start-1)?

Yeah, that is wrong. Investigating. That part was to catch
things like 10-20,21-100

> 
>> +        } else {
>> +            char *nr = apr_psprintf(r->pool, "%" APR_OFF_T_FMT "-%" 
>> APR_OFF_T_FMT,
>> +                                    ostart, oend);
>> +            merged = apr_pstrcat(r->pool, merged, (num_ranges++ ? "," : 
>> ""), nr, NULL);
> 
> Doing this in a loop feels bad as it creates new buffers over and over.
> Shouldn't we create a buffer of the size of strlen(range) and add to this 
> subsequently
> (we know that the length of the merged range <= length of range)?

My plan is to put each range into an array and at the
end flatten it via apr_array_pstrcat()

Reply via email to