<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>21953</bug_id>
          
          <creation_ts>2008-10-29 13:26:28 -0700</creation_ts>
          <short_desc>Small Caps font crashes webkit</short_desc>
          <delta_ts>2008-11-26 17:46:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>525.x (Safari 3.1)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://wtf.microsiervos.com/mundoreal/cuidadin-conmigo.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon@Chromium">jon</reporter>
          <assigned_to name="Glenn Wilson">gwilson</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>mihnea</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>97029</commentid>
    <comment_count>0</comment_count>
    <who name="Jon@Chromium">jon</who>
    <bug_when>2008-10-29 13:26:28 -0700</bug_when>
    <thetext>This bug originated in the Chromium bug tracker see http://code.google.com/p/chromium/issues/detail?id=1491

The bug does not impact IE7 or FF3.  It crashes Safari 3.1 for Windows and Chromium.  The stack trace attached.

Stack trace :
(142c.10e4): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=e8a0e17f ebx=00cbce2c ecx=00cbce2c edx=00000003 esi=00000000 edi=00000000
eip=0131eed2 esp=00b7f2e8 ebp=00b7f370 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
chrome_1000000!WebCore::SimpleFontData::smallCapsFontData+0x17:
0131eed2 39b754040000    cmp     dword ptr [edi+454h],esi ds:0023:00000454=????????
2:027&gt; g
(142c.10e4): Access violation - code c0000005 (!!! second chance !!!)
eax=e8a0e17f ebx=00cbce2c ecx=00cbce2c edx=00000003 esi=00000000 edi=00000000
eip=0131eed2 esp=00b7f2e8 ebp=00b7f370 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
chrome_1000000!WebCore::SimpleFontData::smallCapsFontData+0x17:
0131eed2 39b754040000    cmp     dword ptr [edi+454h],esi ds:0023:00000454=????????
2:027&gt; k
ChildEBP RetAddr  
00b7f370 010a970b chrome_1000000!WebCore::SimpleFontData::smallCapsFontData+0x17
[c:\b\slave\chrome-official-2\build\src\webkit\port\platform\graphics\simplefontdatawin.cpp
@ 135]
00b7f3a0 010a8f3f chrome_1000000!WebCore::Font::glyphDataForCharacter+0x24b
[c:\b\slave\chrome-official-2\build\src\webkit\pending\font.cpp @ 460]
00b7f3f0 010a9c88 chrome_1000000!WebCore::WidthIterator::advance+0xf2
[c:\b\slave\chrome-official-2\build\src\webkit\pending\font.cpp @ 162]
00b7f428 010a9c58 chrome_1000000!WebCore::Font::floatWidthForSimpleText+0x1e
[c:\b\slave\chrome-official-2\build\src\webkit\pending\font.cpp @ 718]
00b7f438 010a980b chrome_1000000!WebCore::Font::floatWidth+0x41
[c:\b\slave\chrome-official-2\build\src\webkit\pending\font.cpp @ 710]
00b7f440 010ffbf2 chrome_1000000!WebCore::Font::width+0x9
[c:\b\slave\chrome-official-2\build\src\webkit\pending\font.cpp @ 515]
00b7f4dc 010ff393 chrome_1000000!WebCore::RenderText::calcPrefWidths+0x4e9
[c:\b\slave\chrome-official-2\build\src\webkit\pending\rendertext.cpp @ 649]
00b7f520 010d4a5f chrome_1000000!WebCore::RenderText::trimmedPrefWidths+0x38
[c:\b\slave\chrome-official-2\build\src\webkit\pending\rendertext.cpp @ 463]
00b7f5ac 010d438a chrome_1000000!WebCore::RenderBlock::calcInlinePrefWidths+0x300
[c:\b\slave\chrome-official-2\build\src\webkit\pending\renderblock.cpp @ 3754]
00b7f5cc 010e34e6 chrome_1000000!WebCore::RenderBlock::calcPrefWidths+0x92
[c:\b\slave\chrome-official-2\build\src\webkit\pending\renderblock.cpp @ 3432]
00b7f5d4 010e580b chrome_1000000!WebCore::RenderBox::minPrefWidth+0x11
[c:\b\slave\chrome-official-2\build\src\third_party\webkit\webcore\rendering\renderbox.cpp
@ 179]
00b7f5f4 010e5679 chrome_1000000!WebCore::RenderBox::calcWidthUsing+0x86
[c:\b\slave\chrome-official-2\build\src\third_party\webkit\webcore\rendering\renderbox.cpp
@ 1177]
00b7f628 010ce457 chrome_1000000!WebCore::RenderBox::calcWidth+0x25e
[c:\b\slave\chrome-official-2\build\src\third_party\webkit\webcore\rendering\renderbox.cpp
@ 1116]
00b7f6a4 010ce31f chrome_1000000!WebCore::RenderBlock::layoutBlock+0x108
[c:\b\slave\chrome-official-2\build\src\webkit\pending\renderblock.cpp @ 532]
00b7f6b0 011350f9 chrome_1000000!WebCore::RenderBlock::layout+0x17
[c:\b\slave\chrome-official-2\build\src\webkit\pending\renderblock.cpp @ 495]
00b7f79c 010ce5ae chrome_1000000!WebCore::RenderBlock::layoutInlineChildren+0x220
[c:\b\slave\chrome-official-2\build\src\webkit\pending\bidi.cpp @ 884]
00b7f824 010ce31f chrome_1000000!WebCore::RenderBlock::layoutBlock+0x25f
[c:\b\slave\chrome-official-2\build\src\webkit\pending\renderblock.cpp @ 583]
00b7f830 010cf872 chrome_1000000!WebCore::RenderBlock::layout+0x17
[c:\b\slave\chrome-official-2\build\src\webkit\pending\renderblock.cpp @ 495]
00b7f89c 010ce5be chrome_1000000!WebCore::RenderBlock::layoutBlockChildren+0x32a
[c:\b\slave\chrome-official-2\build\src\webkit\pending\renderblock.cpp @ 1233]
00b7f924 010ce31f chrome_1000000!WebCore::RenderBlock::layoutBlock+0x26f
[c:\b\slave\chrome-official-2\build\src\webkit\pending\renderblock.cpp @ 587]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97133</commentid>
    <comment_count>1</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2008-10-30 10:12:40 -0700</bug_when>
    <thetext>Hello,

I was able to reproduce the problem only on WindowsXP, never on Mac Leopard.

Here is a trace for the problem using the latest WebKit debug build on WinXP:

&gt;	WebKit.dll!WebCore::SimpleFontData::smallCapsFontData(const WebCore::FontDescription &amp; fontDescription={...})  Line 101 + 0x3 bytes	C++
 	WebKit.dll!WebCore::Font::glyphDataForCharacter(int c=581, bool mirror=false, bool forceSmallCaps=false)  Line 243 + 0xc bytes	C++
 	WebKit.dll!WebCore::WidthIterator::advance(int offset=12, WebCore::GlyphBuffer * glyphBuffer=0x00000000)  Line 112 + 0x14 bytes	C++
 	WebKit.dll!WebCore::Font::floatWidthForSimpleText(const WebCore::TextRun &amp; run={...}, WebCore::GlyphBuffer * glyphBuffer=0x00000000)  Line 525	C++
 	WebKit.dll!WebCore::Font::floatWidth(const WebCore::TextRun &amp; run={...})  Line 503 + 0xe bytes	C++
 	WebKit.dll!WebCore::Font::width(const WebCore::TextRun &amp; run={...})  Line 298 + 0xc bytes	C++
 	WebKit.dll!WebCore::RenderText::widthFromCache(const WebCore::Font &amp; f={...}, int start=2, int len=12, int xPos=17)  Line 393	C++
 	WebKit.dll!WebCore::RenderText::calcPrefWidths(int leadWidth=0)  Line 600 + 0x1b bytes	C++
 	WebKit.dll!WebCore::RenderText::trimmedPrefWidths(int leadWidth=0, int &amp; beginMinW=-858993460, bool &amp; beginWS=true, int &amp; endMinW=-858993460, bool &amp; endWS=true, bool &amp; hasBreakableChar=true, bool &amp; hasBreak=true, int &amp; beginMaxW=-858993460, int &amp; endMaxW=-858993460, int &amp; minW=0, int &amp; maxW=0, bool &amp; stripFrontSpaces=true)  Line 407 + 0x16 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::calcInlinePrefWidths()  Line 4017	C++
 	WebKit.dll!WebCore::RenderBlock::calcPrefWidths()  Line 3698	C++
 	WebKit.dll!WebCore::RenderBox::minPrefWidth()  Line 215 + 0x12 bytes	C++
 	WebKit.dll!WebCore::RenderBox::calcWidthUsing(WebCore::WidthType widthType=Width, int cw=950)  Line 1368 + 0x12 bytes	C++
 	WebKit.dll!WebCore::RenderBox::calcWidth()  Line 1307 + 0xe bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layoutBlock(bool relayoutChildren=false)  Line 604 + 0x12 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layout()  Line 565 + 0x14 bytes	C++
 	WebKit.dll!WebCore::RenderObject::layoutIfNeeded()  Line 511 + 0x30 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layoutInlineChildren(bool relayoutChildren=true, int &amp; repaintTop=0, int &amp; repaintBottom=0)  Line 848	C++
 	WebKit.dll!WebCore::RenderBlock::layoutBlock(bool relayoutChildren=true)  Line 657	C++
 	WebKit.dll!WebCore::RenderBlock::layout()  Line 565 + 0x14 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layoutBlockChildren(bool relayoutChildren=true, int &amp; maxFloatBottom=142)  Line 1334 + 0x18 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layoutBlock(bool relayoutChildren=true)  Line 661	C++
 	WebKit.dll!WebCore::RenderBlock::layout()  Line 565 + 0x14 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layoutBlockChildren(bool relayoutChildren=true, int &amp; maxFloatBottom=0)  Line 1334 + 0x18 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layoutBlock(bool relayoutChildren=true)  Line 661	C++
 	WebKit.dll!WebCore::RenderBlock::layout()  Line 565 + 0x14 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layoutBlockChildren(bool relayoutChildren=true, int &amp; maxFloatBottom=0)  Line 1334 + 0x18 bytes	C++
 	WebKit.dll!WebCore::RenderBlock::layoutBlock(bool relayoutChildren=true)  Line 661	C++
 	WebKit.dll!WebCore::RenderBlock::layout()  Line 565 + 0x14 bytes	C++
 	WebKit.dll!WebCore::RenderView::layout()  Line 121	C++
 	WebKit.dll!WebCore::FrameView::layout(bool allowSubtree=true)  Line 528 + 0x12 bytes	C++
 	WebKit.dll!WebCore::FrameView::layoutTimerFired(WebCore::Timer&lt;WebCore::FrameView&gt; * __formal=0x01912c70)  Line 736	C++
 	WebKit.dll!WebCore::Timer&lt;WebCore::FrameView&gt;::fired()  Line 99 + 0x29 bytes	C++
 	WebKit.dll!WebCore::TimerBase::fireTimers(double fireTime=1225386376.5731516, const WTF::Vector&lt;WebCore::TimerBase *,0&gt; &amp; firingTimers={...})  Line 347 + 0xf bytes	C++
 	WebKit.dll!WebCore::TimerBase::sharedTimerFired()  Line 368 + 0x12 bytes	C++
 	WebKit.dll!WebCore::TimerWindowWndProc(HWND__ * hWnd=0x00130da0, unsigned int message=49965, unsigned int wParam=0, long lParam=0)  Line 102 + 0x8 bytes	C++
 	user32.dll!_InternalCallWinProc@20()  + 0x28 bytes	
 	user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes	
 	user32.dll!_DispatchMessageWorker@8()  + 0xdc bytes	
 	user32.dll!_DispatchMessageW@4()  + 0xf bytes	
 	Safari.exe!RSSPrefsDlg::`vector deleting destructor&apos;()  + 0x20f bytes	
 	Safari.exe!run()  + 0x9d bytes	
 	Safari.exe!_wWinMain@16()  + 0x34b bytes	
 	Safari.exe!_free()  + 0x1a1 bytes	
 	kernel32.dll!_BaseProcessStart@4()  + 0x23 bytes	

In function const GlyphData&amp; Font::glyphDataForCharacter(UChar32 c, bool mirror, bool forceSmallCaps) const, the following code snippet shows the access violation:

const SimpleFontData* characterFontData = FontCache::getFontDataForCharacters(*this, codeUnits, codeUnitsLength);
if (useSmallCapsFont)
    characterFontData = characterFontData-&gt;smallCapsFontData(m_fontDescription);

useSmallCapsFont is true while loading the above URL but characterFontData is 0 after calling getFontDataForCharacters, therefore the access violation occurs.

Hope that helps,
Mihnea
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97981</commentid>
    <comment_count>2</comment_count>
      <attachid>24977</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-11-07 16:42:14 -0800</bug_when>
    <thetext>Created attachment 24977
Test Reduction for bug 21953

Reduction attached.

Something with setting the charset to UTF-8 and the &apos;Ê&apos; and &apos;Œ&apos; characters together as small-caps.

Investigating further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98182</commentid>
    <comment_count>3</comment_count>
      <attachid>25023</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-11-10 11:26:28 -0800</bug_when>
    <thetext>Created attachment 25023
Possible patch to issue 21953

Here is a possible fix for this issue.

So, here&apos;s what I think is happening to cause a crash:

1.  Font calls FontCache:getFontCacheForCharacters, which gives SimpleFontData for a given set of characters. 
2.  FontCache::getFontCacheForCharacters eventually gets the SimpleFontData that works for the first character &apos;Ê&apos;, but does not have a character mapped for the next character &apos;Œ&apos;.
3.  getFontCacheForCharacters ends up returning null, because the SimpleFontData it was trying to return doesn&apos;t contain all the characters.
4.  Font, seeing that it has the smallCaps flag, tries to call a method on the SimpleFontData that was returned null, and it crashes.

So, this crash was caused by any html that is trying to use the small-caps variant on a font that only contains the first character in a set of text, but not a subsequent character.

This change merely modifies Font to not call the small caps method if getFontCacheForCharacters returns null.  It was already doing a similar check immediately afterwards, so this seems like the right way to guard against this possibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98794</commentid>
    <comment_count>4</comment_count>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-11-14 10:17:03 -0800</bug_when>
    <thetext>It is probably also worth noting that the reason why this happens in Windows only is that the default, &quot;fallback&quot; font on Windows is the &quot;System&quot; font, which does not contain a character for &apos;Œ&apos; (0x00CE).

On OSX, the default font is &quot;Geneva&quot;, I believe.  This font *does* have a character for 0x00CE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98798</commentid>
    <comment_count>5</comment_count>
      <attachid>25023</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-14 10:40:48 -0800</bug_when>
    <thetext>Comment on attachment 25023
Possible patch to issue 21953

Hyatt or mitz are the font experts.  I expect you should be able to convince one of them to review this tiny patch for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100421</commentid>
    <comment_count>6</comment_count>
      <attachid>25023</attachid>
    <who name="">mitz</who>
    <bug_when>2008-11-26 11:35:30 -0800</bug_when>
    <thetext>Comment on attachment 25023
Possible patch to issue 21953

The code change is correct but the analysis in the bug and in the change log is wrong. The reduction contains only a single code point, U+028C (UTF-8 encoded as CA 8C). There is a font containing a glyph for this character, so there is no problem. However, its uppercase counterpart is U+0245, for which there happens to be no font containing a glyph, leading to characterFontData being 0. This is handled correctly in the non-small-caps case, but not in the small-caps case. Please revise the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100434</commentid>
    <comment_count>7</comment_count>
      <attachid>25528</attachid>
    <who name="Glenn Wilson">gwilson</who>
    <bug_when>2008-11-26 13:13:07 -0800</bug_when>
    <thetext>Created attachment 25528
Improved possible patch for issue 21953

Here&apos;s a revised version with the correct descriptions in the Changelogs.

Thanks for the feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100437</commentid>
    <comment_count>8</comment_count>
      <attachid>25528</attachid>
    <who name="">mitz</who>
    <bug_when>2008-11-26 13:28:17 -0800</bug_when>
    <thetext>Comment on attachment 25528
Improved possible patch for issue 21953

r=me
Thanks for fixing this crash!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100496</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-11-26 17:46:11 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/38806</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>24977</attachid>
            <date>2008-11-07 16:42:14 -0800</date>
            <delta_ts>2008-11-07 16:42:14 -0800</delta_ts>
            <desc>Test Reduction for bug 21953</desc>
            <filename>21953-reduction.html</filename>
            <type>text/html</type>
            <size>160</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPg0KPC9oZWFkPg0KPGJvZHkgc3R5bGU9ImZvbnQt
dmFyaWFudDogc21hbGwtY2FwczsiPg0KyowNCjwvYm9keT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25023</attachid>
            <date>2008-11-10 11:26:28 -0800</date>
            <delta_ts>2008-11-26 13:13:07 -0800</delta_ts>
            <desc>Possible patch to issue 21953</desc>
            <filename>patch21953-1.txt</filename>
            <type>text/plain</type>
            <size>3520</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODI2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDgtMTEtMTAgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEZpeGVkIGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTk1MworCisgICAgICAgIFRoZSByb290IGNhdXNlIG9mIHRoaXMgcHJvYmxl
bSBpcyB0aGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBzZXQgb2YgY2hhcmFjdGVycyBpcwor
ICAgICAgICB1c2VkIHRvIGRldGVybWluZSB0aGUgZm9udCB0byBiZSB1c2VkIGZvciB0aGUgc2V0
LiAgSWYgdGhhdCBjaGFyYWN0ZXIgZXhpc3RzIGluIHRoZSBkZWZhdWx0IGZvbnQKKyAgICAgICAg
YnV0IHN1YnNlcXVlbnQgY2hhcmFjdGVycyBkbyBub3QsIGFuZCBGb250LmNwcCB0cmllcyB0byBh
cHBseSB0aGUgc21hbGwtY2FwcyB2YXJpYW50LCB0aGlzIGNyYXNoZXMuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2VzIEZvbnQuY3BwIHRvIGNoZWNrIGlmIHRoZSBmb250IGJlaW5nIHVzZWQgZXhpc3Rz
IGJlZm9yZSB0cnlpbmcgdG8gYXBwbHkgdGhlIHNtYWxsLWNhcHMgdmFyaWFudC4KKyAgICAgICAg
CisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3NtYWxsLWNhcHMtY3Jhc2guaHRtbAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojpn
bHlwaERhdGFGb3JDaGFyYWN0ZXIpOgorCiAyMDA4LTExLTEwICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCShyZXZpc2lvbiAzODI2NCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBA
QCBjb25zdCBHbHlwaERhdGEmIEZvbnQ6OmdseXBoRGF0YUZvckNoYXJhCiAgICAgICAgIGNvZGVV
bml0c0xlbmd0aCA9IDI7CiAgICAgfQogICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBjaGFyYWN0
ZXJGb250RGF0YSA9IEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKCp0aGlzLCBj
b2RlVW5pdHMsIGNvZGVVbml0c0xlbmd0aCk7Ci0gICAgaWYgKHVzZVNtYWxsQ2Fwc0ZvbnQpCisg
ICAgaWYgKHVzZVNtYWxsQ2Fwc0ZvbnQgJiYgY2hhcmFjdGVyRm9udERhdGEpCiAgICAgICAgIGNo
YXJhY3RlckZvbnREYXRhID0gY2hhcmFjdGVyRm9udERhdGEtPnNtYWxsQ2Fwc0ZvbnREYXRhKG1f
Zm9udERlc2NyaXB0aW9uKTsKICAgICBpZiAoY2hhcmFjdGVyRm9udERhdGEpIHsKICAgICAgICAg
Ly8gR290IHRoZSBmYWxsYmFjayBnbHlwaCBhbmQgZm9udC4KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4
MjY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMDgtMTEtMTAgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEZpeGVkIGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTk1MworCisgICAgICAgIEFkZGVkIGxheW91dCB0ZXN0cyB0byB2ZXJpZnkgdGhhdCB1c2lu
ZyBjaGFyYWN0ZXJzIG91dHNpZGUgb2YgdGhlIGRlZmF1bHQgZm9udCB3aXRoIHRoZSBzbWFsbC1j
YXBzIHZhcmlhbnQKKyAgICAgICAgZG9lcyBub3QgY3Jhc2ggdGhlIGJyb3dzZXIKKworICAgICAg
ICAqIGZhc3QvY3NzL3NtYWxsLWNhcHMtY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy9zbWFsbC1jYXBzLWNyYXNoLmh0bWw6IEFkZGVkLgorCiAyMDA4LTExLTA5
ICBDYW1lcm9uIFp3YXJpY2ggIDx6d2FyaWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3NtYWxsLWNhcHMt
Y3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3Nt
YWxsLWNhcHMtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc21hbGwtY2Fwcy1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHVzaW5nIGNoYXJhY3RlcnMgbm90IGZv
dW5kIGluIHRoZSBkZWZhdWx0IGZvbnQgYWxvbmcgd2l0aCB0aGUgc21hbGwtY2FwcyBmb250IHZh
cmlhbnQgZG9lcyBub3QgY3Jhc2ggdGhlIGJyb3dzZXIuIElmIHN1Y2Nlc3NmdWwsIHRoaXMgdGVz
dCBzaG91bGQgbm90IGNyYXNoLCBhbmQgYW4gb2RkIGNoYXJhY3RlciBiZWxvdzogyowKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY3NzL3NtYWxsLWNhcHMtY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zbWFsbC1jYXBzLWNyYXNoLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zbWFsbC1jYXBzLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKzxzY3Jp
cHQ+CisgICAgaWYod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IHN0
eWxlPSJmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7Ij4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHVzaW5nIGNoYXJhY3RlcnMgbm90IGZvdW5kIGluIHRoZSBkZWZhdWx0IGZvbnQgYWxvbmcgd2l0
aCB0aGUgc21hbGwtY2FwcyBmb250IHZhcmlhbnQgZG9lcworbm90IGNyYXNoIHRoZSBicm93c2Vy
LgorCitJZiBzdWNjZXNzZnVsLCB0aGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaCwgYW5kIGFuIG9k
ZCBjaGFyYWN0ZXIgYmVsb3c6CisKK8qMCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="11491"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25528</attachid>
            <date>2008-11-26 13:13:07 -0800</date>
            <delta_ts>2008-11-26 13:28:17 -0800</delta_ts>
            <desc>Improved possible patch for issue 21953</desc>
            <filename>patch21953-1.txt</filename>
            <type>text/plain</type>
            <size>3404</size>
            <attacher name="Glenn Wilson">gwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODI2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDgtMTEtMTAgIEdsZW5uIFdpbHNvbiAgPGd3aWxzb25AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEZpeGVkIGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTk1MworCisgICAgICAgIFRoaXMgZml4ZXMgdGhlIGNyYXNoIHdoZW4gdGhl
IHNtYWxsLWNhcHMgZm9udCB2YXJpYW50IGlzIHVzZWQKKyAgICAgICAgb24gYSBsb3dlci1jYXNl
IGdseXBoIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgdXBwZXIt
Y2FzZSBnbHlwaCBkZWZpbmVkIGluIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGZvbnRzLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlcyBGb250LmNwcCB0byBjaGVjayBpZiB0aGUgZm9udCBiZWluZyB1c2Vk
IGV4aXN0cyBiZWZvcmUgdHJ5aW5nIHRvIGFwcGx5IHRoZSBzbWFsbC1jYXBzIHZhcmlhbnQuCisg
ICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L2Nzcy9zbWFsbC1jYXBzLWNyYXNoLmh0bWwKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKToKKwogMjAwOC0xMS0xMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAkocmV2aXNpb24gMzgyNjQpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNyAr
MjM5LDcgQEAgY29uc3QgR2x5cGhEYXRhJiBGb250OjpnbHlwaERhdGFGb3JDaGFyYQogICAgICAg
ICBjb2RlVW5pdHNMZW5ndGggPSAyOwogICAgIH0KICAgICBjb25zdCBTaW1wbGVGb250RGF0YSog
Y2hhcmFjdGVyRm9udERhdGEgPSBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycygq
dGhpcywgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpOwotICAgIGlmICh1c2VTbWFsbENhcHNG
b250KQorICAgIGlmICh1c2VTbWFsbENhcHNGb250ICYmIGNoYXJhY3RlckZvbnREYXRhKQogICAg
ICAgICBjaGFyYWN0ZXJGb250RGF0YSA9IGNoYXJhY3RlckZvbnREYXRhLT5zbWFsbENhcHNGb250
RGF0YShtX2ZvbnREZXNjcmlwdGlvbik7CiAgICAgaWYgKGNoYXJhY3RlckZvbnREYXRhKSB7CiAg
ICAgICAgIC8vIEdvdCB0aGUgZmFsbGJhY2sgZ2x5cGggYW5kIGZvbnQuCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAzODI2NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDA4LTExLTEwICBHbGVubiBXaWxzb24gIDxnd2lsc29uQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBGaXhlZCBidWcgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE5NTMKKworICAgICAgICBBZGRlZCBsYXlvdXQgdGVzdHMgdG8gdmVyaWZ5IHRo
YXQgY2hhcmFjdGVycyBub3QgZGVmaW5lZCBpbiB0aGUgZGVmYXVsdCBmb250IHdpdGggdGhlIHNt
YWxsLWNhcHMgdmFyaWFudAorICAgICAgICB3b24ndCBjYXVzZSBhIGNyYXNoCisKKyAgICAgICAg
KiBmYXN0L2Nzcy9zbWFsbC1jYXBzLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3Mvc21hbGwtY2Fwcy1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAwOC0xMS0wOSAg
Q2FtZXJvbiBad2FyaWNoICA8endhcmljaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zbWFsbC1jYXBzLWNy
YXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zbWFs
bC1jYXBzLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY3NzL3NtYWxsLWNhcHMtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB1c2luZyBjaGFyYWN0ZXJzIG5vdCBmb3Vu
ZCBpbiB0aGUgZGVmYXVsdCBmb250IGFsb25nIHdpdGggdGhlIHNtYWxsLWNhcHMgZm9udCB2YXJp
YW50IGRvZXMgbm90IGNyYXNoIHRoZSBicm93c2VyLiBJZiBzdWNjZXNzZnVsLCB0aGlzIHRlc3Qg
c2hvdWxkIG5vdCBjcmFzaCwgYW5kIGFuIG9kZCBjaGFyYWN0ZXIgYmVsb3c6IMqMCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zbWFsbC1jYXBzLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3Mvc21hbGwtY2Fwcy1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc21hbGwtY2Fwcy1jcmFzaC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE3IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+Cis8c2NyaXB0
PgorICAgIGlmKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHls
ZT0iZm9udC12YXJpYW50OiBzbWFsbC1jYXBzOyI+CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB1
c2luZyBjaGFyYWN0ZXJzIG5vdCBmb3VuZCBpbiB0aGUgZGVmYXVsdCBmb250IGFsb25nIHdpdGgg
dGhlIHNtYWxsLWNhcHMgZm9udCB2YXJpYW50IGRvZXMKK25vdCBjcmFzaCB0aGUgYnJvd3Nlci4K
KworSWYgc3VjY2Vzc2Z1bCwgdGhpcyB0ZXN0IHNob3VsZCBub3QgY3Jhc2gsIGFuZCBhbiBvZGQg
Y2hhcmFjdGVyIGJlbG93OgorCivKjAorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="11866"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>