[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: r28556 - in /libs/gui/trunk: ChangeLog Source/GSTextStorage.h Source
From: |
Richard Frith-Macdonald |
Subject: |
Re: r28556 - in /libs/gui/trunk: ChangeLog Source/GSTextStorage.h Source/GSTextStorage. |
Date: |
Mon, 8 Feb 2010 11:54:18 +0000 |
On 8 Feb 2010, at 07:41, Wolfgang Lux wrote:
> Hi Richard,
>
>> Author: rfm
>> Date: Thu Aug 27 16:57:00 2009
>> New Revision: 28556
>>
>> URL: http://svn.gna.org/viewcvs/gnustep?rev=28556&view=rev
>> Log:
>> Fix bad return of proxy to user code
>>
>> Modified:
>> libs/gui/trunk/ChangeLog
>> libs/gui/trunk/Source/GSTextStorage.h
>> libs/gui/trunk/Source/GSTextStorage.m
>
>
> I don't know what you attempted to fix here, but your change is definitely
> wrong and the old code which did return a proxy was correct. Here is the
> relevant quote from Apple's documentation of the NSAttributedString -string
> method:
>
> "For performance reasons, this method returns the current backing store
> of the attributed string object. If you want to maintain a snapshot of
> this as you manipulate the returned string, you should make a copy of
> the appropriate substring.
> This primitive method must guarantee efficient access to an attributed
> string's characters; subclasses should implement it to execute in O(1)
> time."
>
> Your change has introduced a nasty O(n^2) performance bug that makes a
> machine with a GB of RAM start thrashing during text layout when loading
> a ~100kB log file into a text view.
>
> Wolfgang
>
> PS: I've notice that GSAttributedString contains the same bug.
Thanks very much ... I had a bug report from someone who was bitten by the
string mutating later on in their code when they thought it was immutable (an
NSString), and I forgot that this was actually a documented feature.
I'm reverting that change, and will tell them the bug is in their code not ours.