[openbeos] Re: So much for premature optimization

  • From: "Erik Jaesler" <erik@xxxxxxxxxxxxxx>
  • To: openbeos@xxxxxxxxxxxxx
  • Date: Sun, 17 Nov 2002 19:09:01 -0800

Dang!  Not just slower, but buggy, too!  I've said it before and I'll 
say it again: it's really nice to be working with such a sharp bunch of 
folks. =)

e

>Erik Jaesler wrote:
>
>> In my defense, I can say only this: it occured to me that 
utf8_char_len 
>> might be less effecient than the simple loop already there because 
>> although you don't have to look at every single byte, the test in 
>> utf8_char_len is quite a bit more expensive.  Owing to that 
suspicion, I 
>> left the original implementation in place, #if 0'd out, until I could 

>> test it.  You have saved me the testing time, and I thank you. =)  My 

>> mistake was in checking the code in before it was tested; hopefully 
>> others will learn from my error. =)
>
>Seriously, the new code looks nicer, so one might say that this wasn't
>a optimization, just some cleanup, as we all do it sometimes.
>
>But I just realized the new code has a bad problem the old one didn't,
>when invalid UTF-8 sequences are scanned.
>
>An Invalid UTF-8 sequence might for example be generated when a 
>string is truncated but zero terminated, as it can happen when you use
>strncpy, strlcpy, etc.
>
>Consider the following (invalid UTF-8) sequence: "\xF0" (2 bytes, 
>first is 0xF0, second 0x00) The old code will terminate at the second 
>byte, as it is null, the new code will evaulate the first byte 
(indicates 
>a 4 byte character), skip the next three, and continue, until it either
>crashes, or finds a null byte.
>
>Marcus
>
>


Necessity is the plea for every infringement of human freedom. It is the 
argument of tyrants; it is the creed of slaves.
        -William Pitt, British prime-minister (1759-1806)


Other related posts: