<?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>52422</bug_id>
          
          <creation_ts>2011-01-13 21:33:46 -0800</creation_ts>
          <short_desc>[chromium] More crash in FontFallbackList::determinePitch(const Font* font)</short_desc>
          <delta_ts>2011-02-09 00:59:32 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></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="Hironori Bono">hbono</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hamaji</cc>
    
    <cc>jamesr</cc>
    
    <cc>jshin</cc>
    
    <cc>levin</cc>
    
    <cc>mitz</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>334104</commentid>
    <comment_count>0</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-13 21:33:46 -0800</bug_when>
    <thetext>Unfortunately, my previous change for &lt;https://bugs.webkit.org/show_bug.cgi?id=25770&gt; cannot fix the crash in Bug 25770.

This is a crash log for Chrome 10.0.634.0 stored in our crash server.

Product, Version	 Chrome ,  10.0.634.0
Stack Signature	 WebCore::FontFallbackList::determinePitch(WebCore::Font const *)-1EA68F4
New Stack Signature	 WebCore::FontFallbackList::determinePitch(WebCore::Font const *) baeba093_841e5de7_6067284b_f63eebe8_a3d8ae41
Files	 Download minidump
Report Time (UTC)	 2011/01/13 10:29:47, Thu
Uptime	 10453 ms
OS Name, Version	 Windows NT ,  5.1.2600 Service Pack 3
CPU Architecture, Info	 x86 ,  GenuineIntel family 6 model 23 stepping 6
extension-1	 hehijbfgiekmjfkfjpbkbammjbdenadd
num-extensions	 1
num-views	 1
plat	 Win32
ptype	 renderer
url-chunk-1	 http://sdf.kr/xe/buwak
Comments	
Add Comment

0x023323ce	 [chrome.dll	 - fontfallbacklist.cpp:77]	WebCore::FontFallbackList::determinePitch(WebCore::Font const *)
0x022d6227	 [chrome.dll	 - renderblocklinelayout.cpp:1641]	WebCore::RenderBlock::findNextLineBreak(WebCore::BidiResolver&lt;WebCore::InlineIterator,WebCore::BidiRun&gt; &amp;,bool,bool &amp;,bool &amp;,bool &amp;,WebCore::EClear *,WebCore::RenderBlock::FloatingObject *)
0x022d413a	 [chrome.dll	 - renderblocklinelayout.cpp:667]	WebCore::RenderBlock::layoutInlineChildren(bool,int &amp;,int &amp;)
0x0221b470	 [chrome.dll	 - renderblock.cpp:1230]	WebCore::RenderBlock::layoutBlock(bool,int)
0x0221b16c	 [chrome.dll	 - renderblock.cpp:1128]	WebCore::RenderBlock::layout()
0x0221caee	 [chrome.dll	 - renderblock.cpp:1959]	WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox *,WebCore::RenderBlock::MarginInfo &amp;,int &amp;,int &amp;)
0x0221c91a	 [chrome.dll	 - renderblock.cpp:1897]	WebCore::RenderBlock::layoutBlockChildren(bool,int &amp;)
0x0221b480	 [chrome.dll	 - renderblock.cpp:1232]	WebCore::RenderBlock::layoutBlock(bool,int)
0x0221b16c	 [chrome.dll	 - renderblock.cpp:1128]	WebCore::RenderBlock::layout()
0x0221f160	 [chrome.dll	 - renderblock.cpp:3066]	WebCore::RenderBlock::insertFloatingObject(WebCore::RenderBox *)
0x022d5999	 [chrome.dll	 - renderblocklinelayout.cpp:1309]	WebCore::RenderBlock::skipLeadingWhitespace(WebCore::BidiResolver&lt;WebCore::InlineIterator,WebCore::BidiRun&gt; &amp;,bool,bool,bool,WebCore::RenderBlock::FloatingObject *)
0x022d5c86	 [chrome.dll	 - renderblocklinelayout.cpp:1428]	WebCore::RenderBlock::findNextLineBreak(WebCore::BidiResolver&lt;WebCore::InlineIterator,WebCore::BidiRun&gt; &amp;,bool,bool &amp;,bool &amp;,bool &amp;,WebCore::EClear *,WebCore::RenderBlock::FloatingObject *)
0x022d413a	 [chrome.dll	 - renderblocklinelayout.cpp:667]	WebCore::RenderBlock::layoutInlineChildren(bool,int &amp;,int &amp;)
0x0221b470	 [chrome.dll	 - renderblock.cpp:1230]	WebCore::RenderBlock::layoutBlock(bool,int)
0x0221b16c	 [chrome.dll	 - renderblock.cpp:1128]	WebCore::RenderBlock::layout()
0x0221caee	 [chrome.dll	 - renderblock.cpp:1959]	WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox *,WebCore::RenderBlock::MarginInfo &amp;,int &amp;,int &amp;)
0x0221c91a	 [chrome.dll	 - renderblock.cpp:1897]	WebCore::RenderBlock::layoutBlockChildren(bool,int &amp;)
0x0221b480	 [chrome.dll	 - renderblock.cpp:1232]	WebCore::RenderBlock::layoutBlock(bool,int)
0x0221b16c	 [chrome.dll	 - renderblock.cpp:1128]	WebCore::RenderBlock::layout()
0x0221caee	 [chrome.dll	 - renderblock.cpp:1959]	WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox *,WebCore::RenderBlock::MarginInfo &amp;,int &amp;,int &amp;)
0x0221c91a	 [chrome.dll	 - renderblock.cpp:1897]	WebCore::RenderBlock::layoutBlockChildren(bool,int &amp;)
0x0221b480	 [chrome.dll	 - renderblock.cpp:1232]	WebCore::RenderBlock::layoutBlock(bool,int)
0x0221b16c	 [chrome.dll	 - renderblock.cpp:1128]	WebCore::RenderBlock::layout()
0x0221caee	 [chrome.dll	 - renderblock.cpp:1959]	WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox *,WebCore::RenderBlock::MarginInfo &amp;,int &amp;,int &amp;)
0x0221c91a	 [chrome.dll	 - renderblock.cpp:1897]	WebCore::RenderBlock::layoutBlockChildren(bool,int &amp;)
0x0221b480	 [chrome.dll	 - renderblock.cpp:1232]	WebCore::RenderBlock::layoutBlock(bool,int)
0x0221b16c	 [chrome.dll	 - renderblock.cpp:1128]	WebCore::RenderBlock::layout()
0x0221caee	 [chrome.dll	 - renderblock.cpp:1959]	WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox *,WebCore::RenderBlock::MarginInfo &amp;,int &amp;,int &amp;)
0x0221c91a	 [chrome.dll	 - renderblock.cpp:1897]	WebCore::RenderBlock::layoutBlockChildren(bool,int &amp;)
0x0221b480	 [chrome.dll	 - renderblock.cpp:1232]	WebCore::RenderBlock::layoutBlock(bool,int)
0x0221b16c	 [chrome.dll	 - renderblock.cpp:1128]	WebCore::RenderBlock::layout()
0x021739c9	 [chrome.dll	 - renderview.cpp:130]	WebCore::RenderView::layout()
0x0219bfef	 [chrome.dll	 - frameview.cpp:872]	WebCore::FrameView::layout(bool)
0x0219e192	 [chrome.dll	 - frameview.cpp:2247]	WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive()
0x01d721ee	 [chrome.dll	 - render_widget.cc:504]	RenderWidget::DoDeferredUpdate()
0x01d7216c	 [chrome.dll	 - render_widget.cc:483]	RenderWidget::CallDoDeferredUpdate()
0x01d73cbb	 [chrome.dll	 - task.h:331]	RunnableMethod&lt;RenderWidget,void ( RenderWidget::*)(void),Tuple0&gt;::Run()
0x01cff63f	 [chrome.dll	 - message_loop.cc:356]	MessageLoop::RunTask(Task *)
0x01cff6c6	 [chrome.dll	 - message_loop.cc:365]	MessageLoop::DeferOrRunPendingTask(MessageLoop::PendingTask const &amp;)
0x01cffa78	 [chrome.dll	 - message_loop.cc:558]	MessageLoop::DoWork()
0x01d16d3a	 [chrome.dll	 - message_pump_default.cc:50]	base::MessagePumpDefault::Run(base::MessagePump::Delegate *)
0x01cff5c0	 [chrome.dll	 - message_loop.cc:331]	MessageLoop::RunInternal()
0x01cff545	 [chrome.dll	 - message_loop.cc:304]	MessageLoop::RunHandler()
0x01cff439	 [chrome.dll	 - message_loop.cc:234]	MessageLoop::Run()
0x01d2d874	 [chrome.dll	 - renderer_main.cc:297]	RendererMain(MainFunctionParams const &amp;)
0x01c33f99	 [chrome.dll	 - chrome_main.cc:914]	ChromeMain
0x00403e7a	 [chrome.exe	 - client_util.cc:280]	MainDllLoader::Launch(HINSTANCE__ *,sandbox::SandboxInterfaceInfo *)
0x00404243	 [chrome.exe	 - chrome_exe_main_win.cc:46]	wWinMain
0x00449cc0	 [chrome.exe	 - crt0.c:263]	__tmainCRTStartup
0x7c7e7076	 [kernel32.dll	 + 0x00017076]	BaseProcessStart

Even though I still cannot reproduce this crash on my PCs, it may be a good idea to try using all fonts installed to Windows XP by default, i.e. adopting carpet-bombing. (I would note this crash mostly happens when rendering Korean pages.)

Regards,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334116</commentid>
    <comment_count>1</comment_count>
      <attachid>78889</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-13 22:08:24 -0800</bug_when>
    <thetext>Created attachment 78889
A blind and speculative fix

Greetings,

This is just a blind and speculative fix (inspired by &quot;FontCacheWin.cpp&quot;) for this crash. Even though I do not have any clear ideas for writing layout tests for this issue, it may be a good idea to add a function (such as layoutTestController.disableFont(&quot;Arial&quot;)) that prevents DumpRenderTree from loading the given fonts?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334122</commentid>
    <comment_count>2</comment_count>
      <attachid>78889</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-13 22:28:52 -0800</bug_when>
    <thetext>Comment on attachment 78889
A blind and speculative fix

View in context: https://bugs.webkit.org/attachment.cgi?id=78889&amp;action=review

&gt; Source/WebCore/ChangeLog:14
&gt; +        No new tests. (OOPS!)

oops. :)

This line should be removed.  Ideally there would be a test.

What about doing what you mentioned in the bug or something like that? Would that cause a crash that is fixed by this change?

&gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:593
&gt; +        if (simpleFont = getCachedFontData(description, fallbackFonts[i])) {

Consider a fail fast approach.

if (!(simpleFont = getCachedFontData(description, fallbackFonts[i])))
    continue;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336352</commentid>
    <comment_count>3</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-18 22:58:43 -0800</bug_when>
    <thetext>Greetings,

Thank you for your comments. I would like to describe some more details about this issue before updating my change.

(In reply to comment #2)
&gt; (From update of attachment 78889 [details])
&gt; oops. :)
&gt; This line should be removed.  Ideally there would be a test.

Unfortunately, I do not have any idea why this crash still happens, i.e. I do not have any ideas how to reproduce this crash with Chromium with my r72116 &lt;http://trac.webkit.org/changeset/73116&gt;. This change just tries emulating Safari/Win and sees it makes any differences. If it does not make any differences, I need another change.

&gt; What about doing what you mentioned in the bug or something like that?

When I tried enumerating all the fonts with a EnumFontFamiliesEx() call, it took long time (&gt;1s) on my virtual machine and blocks WebKit during the period. Even though WebKit needs to enumerate all the installed fonts only once (and it is pretty rare to fall back to my code), I&apos;m wondering if it is OK to add such huge blocking code.

&gt; Would that cause a crash that is fixed by this change?

In brief, I do not have any clear ideas about this crash except that my r72116 did not fix the crash. As shown in the crash dump, this crash happens in FontFallbackList::determinePitch(), some time after FontCache::getLastResortFallbackFont() returns 0. So, this crash dump does not include any information about why FontCache::getLastResortFallbackFont() returns 0. (I noticed ASSERT_NOT_REACHED() did not cause crashes on Release builds.) If we add code that intentionally crashes as ASSERT_NOT_REACHED() does, we can investigate why this function returns 0. Nevertheless, I&apos;m not sure it is acceptable. (I assume this is a reason why this crash has not been fixed for a long time.)

It is definitely welcome if there are any suggestions about how to identify why this crash still happens and fix it.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337871</commentid>
    <comment_count>4</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-20 22:02:44 -0800</bug_when>
    <thetext>Greetings,

Tamura-san has reported a case that causes this crash while integrating vertical-text support to Chromium at Bug 51450: &lt;http://webkit.org/b/51450&gt;. I will investigate his case and update the change.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337992</commentid>
    <comment_count>5</comment_count>
      <attachid>79721</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-21 03:36:49 -0800</bug_when>
    <thetext>Created attachment 79721
A speculative fix 2

(In reply to comment #4)
&gt; Tamura-san has reported a case that causes this crash while integrating vertical-text support to Chromium at Bug 51450: &lt;http://webkit.org/b/51450&gt;. I will investigate his case and update the change.

To investigate the above case, I noticed FontCache::createFontPlatformData() of Chromium might return 0 when users changed the system fonts to a font which has localized names on Windows XP, such as &quot;HGGothicM&quot;. When a font has localized names, localized Windows returns its localized name for GetObject() call. That is, when we create a font with its English name (&quot;HGGothicM&quot;), the returned font name becomes its localized name &quot;HGゴシックM&quot;. This caused a font-name mismatch in FontCache::createFontPlatformData() and this function returns 0 when my previous fix gets system fonts for a last-resort font. I have updated my change so we can bypass the said font-name check when finding the last-resort font. It would be definitely helpful to give me feedbacks.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338840</commentid>
    <comment_count>6</comment_count>
      <attachid>79721</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-23 22:28:48 -0800</bug_when>
    <thetext>Comment on attachment 79721
A speculative fix 2

Greetings,

I would like to cancel this review request since it has a stupid mistake.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339539</commentid>
    <comment_count>7</comment_count>
      <attachid>80033</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-25 00:56:49 -0800</bug_when>
    <thetext>Created attachment 80033
A carpet-bomb approach

Greetings,

After investigating this issue on Korean WinXP, it is better to use the original idea written in my first description (trying all the installed fonts). Is it possible to review the updated one?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339540</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-25 00:59:30 -0800</bug_when>
    <thetext>Attachment 80033 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:579:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:583:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 2 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339541</commentid>
    <comment_count>9</comment_count>
      <attachid>80034</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-25 01:13:12 -0800</bug_when>
    <thetext>Created attachment 80034
A carpet-bomb approach 2

Greetings,

(In reply to comment #8)
&gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:579:  Use 0 instead of NULL.  [readability/null] [5]
&gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:583:  Use 0 instead of NULL.  [readability/null] [5]
&gt; Total errors found: 2 in 2 files

Oops, I have uploaded a change to fix these style errors.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340096</commentid>
    <comment_count>10</comment_count>
      <attachid>80034</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-25 19:24:24 -0800</bug_when>
    <thetext>Comment on attachment 80034
A carpet-bomb approach 2

View in context: https://bugs.webkit.org/attachment.cgi?id=80034&amp;action=review

I think the change is reasonable.
r- because of a style error.

&gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:419
&gt; +    OutputDebugString(logFont-&gt;lfFaceName);

Is this needed?

&gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:587
&gt; +    if (dc) {
&gt; +      GetLastResortFallbackFontProcData procData(this, &amp;description, fallbackFontName);
&gt; +      EnumFontFamilies(dc, 0, getLastResortFallbackFontProc, reinterpret_cast&lt;LPARAM&gt;(&amp;procData));
&gt; +      ReleaseDC(0, dc);
&gt; +
&gt; +      if (procData.m_fontData)
&gt; +        return procData.m_fontData;
&gt; +    }

Wrong indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340167</commentid>
    <comment_count>11</comment_count>
      <attachid>80174</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-01-26 00:25:36 -0800</bug_when>
    <thetext>Created attachment 80174
A carpet-bomb approach 3

Greetings,

Thank you for your review and comments.

(In reply to comment #10)
&gt; (From update of attachment 80034 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80034&amp;action=review
&gt; &gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:419
&gt; &gt; +    OutputDebugString(logFont-&gt;lfFaceName);
&gt; 
&gt; Is this needed?

Oops, this API call is just for debugging and I should have removed it. I have removed this call.

&gt; &gt; Source/WebCore/platform/graphics/chromium/FontCacheChromiumWin.cpp:587
&gt; &gt; +    if (dc) {
&gt; &gt; +      GetLastResortFallbackFontProcData procData(this, &amp;description, fallbackFontName);
&gt; &gt; +      EnumFontFamilies(dc, 0, getLastResortFallbackFontProc, reinterpret_cast&lt;LPARAM&gt;(&amp;procData));
&gt; &gt; +      ReleaseDC(0, dc);
&gt; &gt; +
&gt; &gt; +      if (procData.m_fontData)
&gt; &gt; +        return procData.m_fontData;
&gt; &gt; +    }
&gt; 
&gt; Wrong indentation.

Ah, thank you for noticing it. I have fixed the indentation.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340168</commentid>
    <comment_count>12</comment_count>
      <attachid>80174</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-26 00:45:15 -0800</bug_when>
    <thetext>Comment on attachment 80174
A carpet-bomb approach 3

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340180</commentid>
    <comment_count>13</comment_count>
      <attachid>80174</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-26 02:13:08 -0800</bug_when>
    <thetext>Comment on attachment 80174
A carpet-bomb approach 3

Clearing flags on attachment: 80174

Committed r76679: &lt;http://trac.webkit.org/changeset/76679&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340181</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-26 02:13:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348046</commentid>
    <comment_count>15</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-02-09 00:59:32 -0800</bug_when>
    <thetext>Greetings Jungshik,

Unfortunately, we still see this crash on 11.0.658.0. Is it OK to bypass the font-name check in FontCache::createFontPlatformData() when we are finding a last-resort font?

Regards,

Hironori Bono</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78889</attachid>
            <date>2011-01-13 22:08:24 -0800</date>
            <delta_ts>2011-01-21 03:36:49 -0800</delta_ts>
            <desc>A blind and speculative fix</desc>
            <filename>issue52422-patch0.txt</filename>
            <type>text/plain</type>
            <size>3148</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1NzY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMTMgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQSBzcGVjdWxhdGl2ZSBmaXggZm9yIEJ1ZyA1MjQyMiAtIFtj
aHJvbWl1bV0gTW9yZSBjcmFzaCBpbgorICAgICAgICBGb250RmFsbGJhY2tMaXN0OjpkZXRlcm1p
bmVQaXRjaChjb25zdCBGb250KiBmb250KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MjIKKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIGFk
ZHMgYSBsaXN0IG9mIHR5cGljYWwgZm9udHMgaW5zdGFsbGVkIHRvIFdpbmRvd3MgWFAgYnkKKyAg
ICAgICAgZGVmYXVsdCBhbmQgdHJ5IHRoZW0gdG8gZmluZCBsYXN0LXJlc29ydCBmb250cyBhbHNv
IGFzIEZvbnRDYWNoZVdpbi5jcHAKKyAgICAgICAgZG9lcy4gVGhpcyBsaXN0IGFsc28gaW5jbHVk
ZXMgc29tZSBDSksgZm9udHMgaW5zdGFsbGVkIHRvIEtvcmVhbiBXaW5kb3dzCisgICAgICAgIGJl
Y2F1c2UgdGhpcyBjcmFzaCBtb3N0bHkgaGFwcGVucyBvbiBLb3JlYW4gd2ViIHBhZ2VzLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KTogQWRkZWQgZmFsbGJhY2tGb250
c1tdCisgICAgICAgIGFuZCB1c2VkIHRoZW0gdG8gZmluZCBhIGxhc3QtcmVzb3J0IGZvbnQuCisK
IDIwMTEtMDEtMTMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNo
ZUNocm9taXVtV2luLmNwcAkocmV2aXNpb24gNzU3NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0OCw2ICs1NDgsNTYgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0
TGFzdFJlc29ydAogICAgICAgICAgICAgcmV0dXJuIHNpbXBsZUZvbnQ7CiAgICAgfQogCisgICAg
Ly8gU2VhcmNoIHR5cGljYWwgZm9udHMgaW5zdGFsbGVkIHRvIFdpbmRvd3MgWFAgYnkgZGVmYXVs
dCByZWdhcmRsZXNzIG9mCisgICAgLy8gdGhlaXIgZm9udCBmYW1pbGllcy4gV2Ugc2VhcmNoIHRo
aXMgbGlzdCBvbmx5IHdoZW4gd2UgZmFpbCByZXRyaWV2aW5nCisgICAgLy8gc3lzdGVtIGZvbnRz
IGJlY2F1c2UgdGhpcyBsaXN0IHRvdGFsbHkgaWdub3JlcyB0aGUgcHJlZmVyZW5jZXMgb2YgdXNl
cnMuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGZhbGxiYWNrRm9udHNbXSA9IHsKKyAgICAgICAg
Ly8gTGF0aW4gRm9udHMuCisgICAgICAgICJUaW1lcyBOZXcgUm9tYW4iLAorICAgICAgICAiTWlj
cm9zb2Z0IFNhbnMgU2VyaWYiLAorICAgICAgICAiVGFob21hIiwKKyAgICAgICAgIkx1Y2lkYSBT
YW5zIFVuaWNvZGUiLAorICAgICAgICAiQXJpYWwiLAorICAgICAgICAiQ291cmllciBOZXciLAor
ICAgICAgICAiR2VvcmdpYSIsCisgICAgICAgICJGcmFua2xpbiBHb3RoaWMgTWVkaXVtIiwKKyAg
ICAgICAgIlBhbGF0aW5vIExpbm90eXBlIiwKKyAgICAgICAgIlRyZWJ1Y2hldCBNUyIsCisgICAg
ICAgICJWZXJkYW5hIiwKKyAgICAgICAgLy8gS29yZWFuIEZvbnRzCisgICAgICAgICJCYXRhbmci
LAorICAgICAgICAiQmF0YW5nQ2hlIiwKKyAgICAgICAgIkRvdHVtIiwKKyAgICAgICAgIkRvdHVt
Q2hlIiwKKyAgICAgICAgIkd1bGltIiwKKyAgICAgICAgIkd1bGltQ2hlIiwKKyAgICAgICAgIkd1
bmdzdWgiLAorICAgICAgICAvLyBTaW1wbGlmaWVkLUNoaW5lc2UgRm9udHMKKyAgICAgICAgIlNp
bVN1biIsCisgICAgICAgICJTaW1IZWkiLAorICAgICAgICAiTlNpbVN1biIsCisgICAgICAgICJG
YW5nU29uZyIsCisgICAgICAgICJLYWlUaSIsCisgICAgICAgIC8vIFRyYWRpdGlvbmFsLUNoaW5l
c2UgRm9udHMKKyAgICAgICAgIk1pbmdMaXUiLAorICAgICAgICAiTWluZ0xpdS1FeHRCIiwKKyAg
ICAgICAgIlBNaW5nTGl1IiwKKyAgICAgICAgIlBNaW5nTGl1LUV4dEIiLAorICAgICAgICAvLyBK
YXBhbmVzZSBGb250cworICAgICAgICAiTVMgUEdvdGhpYyIsCisgICAgICAgICJNUyBQTWluY2hv
IiwKKyAgICAgICAgIk1TIEdvdGhpYyIsCisgICAgICAgICJNUyBNaW5jaG8iCisgICAgfTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tGb250cyk7
ICsraSkgeworICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGdldENhY2hlZEZvbnREYXRhKGRlc2Ny
aXB0aW9uLCBmYWxsYmFja0ZvbnRzW2ldKSkgeworICAgICAgICAgICAgTE9HRk9OVCBmYWxsYmFj
a0ZvbnQ7CisgICAgICAgICAgICBHZXRPYmplY3Qoc2ltcGxlRm9udC0+cGxhdGZvcm1EYXRhKCku
aGZvbnQoKSwgc2l6ZW9mKGZhbGxiYWNrRm9udCksICZmYWxsYmFja0ZvbnQpOworICAgICAgICAg
ICAgbWVtY3B5KGZhbGxiYWNrRm9udE5hbWUsIGZhbGxiYWNrRm9udC5sZkZhY2VOYW1lLCBzaXpl
b2YoZmFsbGJhY2tGb250LmxmRmFjZU5hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBzaW1wbGVG
b250OworICAgICAgICB9CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIDA7CiB9Cg==
</data>
<flag name="review"
          id="70260"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79721</attachid>
            <date>2011-01-21 03:36:49 -0800</date>
            <delta_ts>2011-01-25 00:56:49 -0800</delta_ts>
            <desc>A speculative fix 2</desc>
            <filename>issue52422-patch2.txt</filename>
            <type>text/plain</type>
            <size>6002</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MzM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDEtMjEgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQSBzcGVjdWxhdGl2ZSBmaXggZm9yIEJ1ZyA1MjQyMiAtIFtj
aHJvbWl1bV0gTW9yZSBjcmFzaCBpbgorICAgICAgICBGb250RmFsbGJhY2tMaXN0OjpkZXRlcm1p
bmVQaXRjaChjb25zdCBGb250KiBmb250KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MjIKKworICAgICAgICBVbmZvcnR1bmF0ZWx5LCBteSBwcmV2
aW91cyBmaXggZG9lcyBub3QgcHJvYmFibHkgd29yayBmb3IgdXNlcnMgY2hhbmdlZAorICAgICAg
ICB0aGUgc3lzdGVtIGZvbnRzIHRvIGEgZm9udCBub3QgbGlzdGVkIGluIHRoZSBuYW1lUGFpcnNb
XSBhcnJheSBvbgorICAgICAgICBXaW5kb3dzIFhQLiBXaGVuIGEgZm9udCBoYXMgdHdvIG9yIG1v
cmUgbmFtZXMgKGFuIEVuZ2xpc2ggbmFtZSBhbmQKKyAgICAgICAgbG9jYWxpemVkIG5hbWVzKSwg
V2luZG93cyByZXR1cm5zIG9uZSBvZiBpdHMgbG9jYWxpemVkIG5hbWVzIGluCisgICAgICAgIGNy
ZWF0ZUZvbnRJbmRpcmVjdEFuZEdldFdpbk5hbWUoKS4gRm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKCkKKyAgICAgICAgcmV0dXJucyAwIGZvciB0aGlzIGNhc2UgYmVjYXVzZSBvZiBh
IG5hbWUgbWlzbWF0Y2ggYmV0d2VlbiB8ZmFtaWx5fCBhbmQKKyAgICAgICAgfHdpbk5hbWV8LiBU
byBjb3ZlciB0aGlzIHBvc3NpYmxlIGNhc2UsIHRoaXMgY2hhbmdlIGJ5cGFzc2VzIHRoZSBuYW1l
CisgICAgICAgIGNoZWNrIHdoZW4gcmV0cmlldmluZyB0aGUgbGFzdC1yZXNvcnQgZm9udC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRQbGF0Zm9ybURhdGFGcm9tRGVzY3JpcHRpb25B
bmRMb2dGb250KTogQ2hhbmdlZCB0aGUgZnVuY3Rpb24KKyAgICAgICAgbmFtZSBmcm9tIGZvbnRk
YXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCgpIGJlY2F1c2UgaXRzIHJlc3VsdCB0eXBlIGhh
cworICAgICAgICBiZWVuIGNoYW5nZWQgZnJvbSBTaW1wbGVGb250RGF0YSogdG8gRm9udFBsYXRm
b3JtRGF0YSouCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxs
YmFja0ZvbnQpOiBBZGRlZCB0aGUgY2FsbCBmb3IKKyAgICAgICAgRm9udENhY2hlOjpnZXRDYWNo
ZWRGb250RGF0YShGb250UGxhdGZvcm1EYXRhKikuCisKIDIwMTEtMDEtMjEgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI3NjMzNS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5j
cHAJKHJldmlzaW9uIDc2MzM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQs
MTUgKzMyNCw2IEBAIHN0YXRpYyBib29sIGZvbnRDb250YWluc0NoYXJhY3Rlcihjb25zdCAKICAg
ICByZXR1cm4gY21hcC0+Y29udGFpbnMoY2hhcmFjdGVyKTsKIH0KIAotLy8gVHJpZXMgdGhlIGdp
dmVuIGZvbnQgYW5kIHNhdmUgaXQgfG91dEZvbnRGYW1pbHlOYW1lfCBpZiBpdCBzdWNjZWVkcy4K
LXN0YXRpYyBTaW1wbGVGb250RGF0YSogZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250
KEZvbnRDYWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgY29uc3QgTE9HRk9OVCYgZm9udCwgd2NoYXJfdCogb3V0Rm9udEZhbWlseU5hbWUpCi17
Ci0gICAgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhID0gZm9udENhY2hlLT5nZXRDYWNoZWRGb250
RGF0YShmb250RGVzY3JpcHRpb24sIGZvbnQubGZGYWNlTmFtZSk7Ci0gICAgaWYgKGZvbnREYXRh
KQotICAgICAgICBtZW1jcHkob3V0Rm9udEZhbWlseU5hbWUsIGZvbnQubGZGYWNlTmFtZSwgc2l6
ZW9mKGZvbnQubGZGYWNlTmFtZSkpOwotICAgIHJldHVybiBmb250RGF0YTsKLX0KLQogc3RhdGlj
IExPTkcgdG9HRElGb250V2VpZ2h0KEZvbnRXZWlnaHQgZm9udFdlaWdodCkKIHsKICAgICBzdGF0
aWMgTE9ORyBnZGlGb250V2VpZ2h0c1tdID0gewpAQCAtMzY4LDYgKzM1OSwyNCBAQCBzdGF0aWMg
dm9pZCBGaWxsTG9nRm9udChjb25zdCBGb250RGVzY3JpCiAgICAgd2luZm9udC0+bGZXZWlnaHQg
PSB0b0dESUZvbnRXZWlnaHQoZm9udERlc2NyaXB0aW9uLndlaWdodCgpKTsKIH0KIAorLy8gVHJp
ZXMgdGhlIGdpdmVuIGZvbnQgYW5kIHNhdmUgaXQgfG91dEZvbnRGYW1pbHlOYW1lfCBpZiBpdCBz
dWNjZWVkcy4KK3N0YXRpYyBGb250UGxhdGZvcm1EYXRhKiBmb250UGxhdGZvcm1EYXRhRnJvbURl
c2NyaXB0aW9uQW5kTG9nRm9udChGb250Q2FjaGUqIGZvbnRDYWNoZSwgY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IExPR0ZPTlQmIGZvbnQsIHdjaGFyX3QqIG91
dEZvbnRGYW1pbHlOYW1lKQoreworICAgIExPR0ZPTlQgbG9nRm9udCA9ICB7MH07CisgICAgRmls
bExvZ0ZvbnQoZm9udERlc2NyaXB0aW9uLCAmbG9nRm9udCk7CisgICAgSEZPTlQgd2luRm9udCA9
IENyZWF0ZUZvbnRJbmRpcmVjdCgmbG9nRm9udCk7CisgICAgaWYgKCF3aW5Gb250KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IG5ldyBG
b250UGxhdGZvcm1EYXRhKHdpbkZvbnQsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6
ZSgpKTsKKyAgICBpZiAocGxhdGZvcm1EYXRhKQorICAgICAgICBtZW1jcHkob3V0Rm9udEZhbWls
eU5hbWUsIGZvbnQubGZGYWNlTmFtZSwgc2l6ZW9mKGZvbnQubGZGYWNlTmFtZSkpOworICAgIGVs
c2UKKyAgICAgICAgRGVsZXRlT2JqZWN0KHdpbkZvbnQpOworCisgICAgcmV0dXJuIHBsYXRmb3Jt
RGF0YTsKK30KKwogc3RydWN0IFRyYWl0c0luRmFtaWx5UHJvY0RhdGEgewogICAgIFRyYWl0c0lu
RmFtaWx5UHJvY0RhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lKQogICAgICAgICA6
IG1fZmFtaWx5TmFtZShmYW1pbHlOYW1lKQpAQCAtNTI4LDcgKzUzNyw3IEBAIFNpbXBsZUZvbnRE
YXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnQKICAgICBpZiAoSEZPTlQgZGVmYXVsdEdVSUZv
bnQgPSBzdGF0aWNfY2FzdDxIRk9OVD4oR2V0U3RvY2tPYmplY3QoREVGQVVMVF9HVUlfRk9OVCkp
KSB7CiAgICAgICAgIExPR0ZPTlQgZGVmYXVsdEdVSUxvZ0ZvbnQ7CiAgICAgICAgIEdldE9iamVj
dChkZWZhdWx0R1VJRm9udCwgc2l6ZW9mKGRlZmF1bHRHVUlMb2dGb250KSwgJmRlZmF1bHRHVUlM
b2dGb250KTsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlv
bkFuZExvZ0ZvbnQodGhpcywgZGVzY3JpcHRpb24sIGRlZmF1bHRHVUlMb2dGb250LCBmYWxsYmFj
a0ZvbnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBnZXRDYWNoZWRGb250RGF0YShm
b250UGxhdGZvcm1EYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlv
biwgZGVmYXVsdEdVSUxvZ0ZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKSkKICAgICAgICAgICAgIHJl
dHVybiBzaW1wbGVGb250OwogICAgIH0KIApAQCAtNTM2LDE1ICs1NDUsMTUgQEAgU2ltcGxlRm9u
dERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydAogICAgIE5PTkNMSUVOVE1FVFJJQ1Mgbm9u
Q2xpZW50TWV0cmljcyA9IHswfTsKICAgICBub25DbGllbnRNZXRyaWNzLmNiU2l6ZSA9IHNpemVv
Zihub25DbGllbnRNZXRyaWNzKTsKICAgICBpZiAoU3lzdGVtUGFyYW1ldGVyc0luZm8oU1BJX0dF
VE5PTkNMSUVOVE1FVFJJQ1MsIHNpemVvZihub25DbGllbnRNZXRyaWNzKSwgJm5vbkNsaWVudE1l
dHJpY3MsIDApKSB7Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3Jp
cHRpb25BbmRMb2dGb250KHRoaXMsIGRlc2NyaXB0aW9uLCBub25DbGllbnRNZXRyaWNzLmxmTWVz
c2FnZUZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGdl
dENhY2hlZEZvbnREYXRhKGZvbnRQbGF0Zm9ybURhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250
KHRoaXMsIGRlc2NyaXB0aW9uLCBub25DbGllbnRNZXRyaWNzLmxmTWVzc2FnZUZvbnQsIGZhbGxi
YWNrRm9udE5hbWUpKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwotICAgICAgICBp
ZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBk
ZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZk1lbnVGb250LCBmYWxsYmFja0ZvbnROYW1l
KSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBnZXRDYWNoZWRGb250RGF0YShmb250UGxhdGZv
cm1EYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgbm9uQ2xp
ZW50TWV0cmljcy5sZk1lbnVGb250LCBmYWxsYmFja0ZvbnROYW1lKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gc2ltcGxlRm9udDsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21E
ZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZGVzY3JpcHRpb24sIG5vbkNsaWVudE1ldHJpY3Mu
bGZTdGF0dXNGb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQg
PSBnZXRDYWNoZWRGb250RGF0YShmb250UGxhdGZvcm1EYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9n
Rm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZlN0YXR1c0ZvbnQsIGZh
bGxiYWNrRm9udE5hbWUpKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwotICAgICAg
ICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlz
LCBkZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZkNhcHRpb25Gb250LCBmYWxsYmFja0Zv
bnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBnZXRDYWNoZWRGb250RGF0YShmb250
UGxhdGZvcm1EYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwg
bm9uQ2xpZW50TWV0cmljcy5sZkNhcHRpb25Gb250LCBmYWxsYmFja0ZvbnROYW1lKSkpCiAgICAg
ICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250
RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZGVzY3JpcHRpb24sIG5vbkNsaWVu
dE1ldHJpY3MubGZTbUNhcHRpb25Gb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAgaWYg
KHNpbXBsZUZvbnQgPSBnZXRDYWNoZWRGb250RGF0YShmb250UGxhdGZvcm1EYXRhRnJvbURlc2Ny
aXB0aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZlNt
Q2FwdGlvbkZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKSkKICAgICAgICAgICAgIHJldHVybiBzaW1w
bGVGb250OwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80033</attachid>
            <date>2011-01-25 00:56:49 -0800</date>
            <delta_ts>2011-01-25 01:13:12 -0800</delta_ts>
            <desc>A carpet-bomb approach</desc>
            <filename>issue52422-patch3.txt</filename>
            <type>text/plain</type>
            <size>3645</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NTc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDEtMjUgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQSBzcGVjdWxhdGl2ZSBmaXggZm9yIEJ1ZyA1MjQyMiAtIFtj
aHJvbWl1bV0gTW9yZSBjcmFzaCBpbgorICAgICAgICBGb250RmFsbGJhY2tMaXN0OjpkZXRlcm1p
bmVQaXRjaChjb25zdCBGb250KiBmb250KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MjIKKworICAgICAgICBNeSBwcmV2aW91cyBjaGFuZ2UgbWF5
IG5vdCB3b3JrIG9uIG5vbi1VUyBXaW5kb3dzIHdob3NlIHN5c3RlbSBmb250cworICAgICAgICBo
YXZlIGxvY2FsaXplZCBhbGlhc2VzIG1hdGNoaW5nIHRvIHRoZSBzeXN0ZW0gbG9jYWxlIGJlY2F1
c2Ugb2YgYQorICAgICAgICBmb250LW5hbWUgbWlzbWF0Y2ggaW4gY3JlYXRlRm9udEluZGlyZWN0
QW5kR2V0V2luTmFtZSgpLiBUaGlzIGNoYW5nZQorICAgICAgICB0cmllcyBhbGwgdGhlIGZvbnRz
IGluc3RhbGxlZCBpbiBhIFBDIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBmb250IHRoYXQgd2UKKyAg
ICAgICAgY2FuIGNyZWF0ZSB3aXRob3V0IGVycm9ycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnRQcm9jRGF0YTo6R2V0TGFzdFJlc29ydEZhbGxi
YWNrRm9udFByb2NEYXRhKToKKyAgICAgICAgQWRkZWQgYSBzdHJ1Y3QgdXNlZCBmb3IgZ2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udFByb2MoKS4KKyAgICAgICAgKFdlYkNvcmU6OmdldExhc3RSZXNv
cnRGYWxsYmFja0ZvbnRQcm9jKTogQWRkZWQgYSBjYWxsYmFjayBmb3IgRW51bUZvbnRGYW1pbGll
cygpLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tG
b250KTogVXNlIEVudW1Gb250RmFtaWxpZXMoKSB0byBmaW5kIGEgbGFzdC1yZXNvcnQgZm9udC4K
KwogMjAxMS0wMS0yNCAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLiBNaXNzZWQgbW92ZSBvZiBvbmUgbV9kZWxldGVkIHVzZSB0byBi
ZSBvdXRzaWRlIE5ERUJVRyBibG9jawpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVt
V2luLmNwcAkocmV2aXNpb24gNzY1NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5OSw2ICszOTksMjkgQEAgc3RhdGljIGludCBDQUxMQkFDSyB0cmFpdHNJbkZhbWlseUVudW1Q
cgogICAgIHJldHVybiAxOwogfQogCitzdHJ1Y3QgR2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFBy
b2NEYXRhIHsKKyAgICBHZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250UHJvY0RhdGEoRm9udENhY2hl
KiBmb250Q2FjaGUsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiogZm9udERlc2NyaXB0aW9uLCB3Y2hh
cl90KiBmb250TmFtZSkKKyAgICAgICAgOiBtX2ZvbnRDYWNoZShmb250Q2FjaGUpCisgICAgICAg
ICwgbV9mb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKQorICAgICAgICAsIG1fZm9udE5h
bWUoZm9udE5hbWUpCisgICAgICAgICwgbV9mb250RGF0YSgwKQorICAgIHsKKyAgICB9CisKKyAg
ICBGb250Q2FjaGUqIG1fZm9udENhY2hlOworICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiogbV9m
b250RGVzY3JpcHRpb247CisgICAgd2NoYXJfdCogbV9mb250TmFtZTsKKyAgICBTaW1wbGVGb250
RGF0YSogbV9mb250RGF0YTsKK307CisKK3N0YXRpYyBpbnQgQ0FMTEJBQ0sgZ2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udFByb2MoY29uc3QgTE9HRk9OVCogbG9nRm9udCwgY29uc3QgVEVYVE1FVFJJ
QyogbWV0cmljcywgRFdPUkQgZm9udFR5cGUsIExQQVJBTSBsUGFyYW0pCit7CisgICAgT3V0cHV0
RGVidWdTdHJpbmcobG9nRm9udC0+bGZGYWNlTmFtZSk7CisgICAgR2V0TGFzdFJlc29ydEZhbGxi
YWNrRm9udFByb2NEYXRhKiBwcm9jRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udFByb2NEYXRhKj4obFBhcmFtKTsKKyAgICBwcm9jRGF0YS0+bV9mb250RGF0
YSA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChwcm9jRGF0YS0+bV9mb250Q2Fj
aGUsICpwcm9jRGF0YS0+bV9mb250RGVzY3JpcHRpb24sICpsb2dGb250LCBwcm9jRGF0YS0+bV9m
b250TmFtZSk7CisgICAgcmV0dXJuICFwcm9jRGF0YS0+bV9mb250RGF0YTsKK30KKwogdm9pZCBG
b250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiB7CiAgICAgLy8gTm90IG5lZWRlZCBvbiBXaW5kb3dz
LgpAQCAtNTQ4LDYgKzU3MSwyMSBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0
UmVzb3J0CiAgICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKICAgICB9CiAKKyAgICAvLyBG
YWxsIGJhY2sgdG8gYWxsIHRoZSBmb250cyBpbnN0YWxsZWQgaW4gdGhpcyBQQy4gV2hlbiBhIGZv
bnQgaGFzIGEKKyAgICAvLyBsb2NhbGl6ZWQgYWxpYXMgbWF0Y2hpbmcgdG8gdGhlIHN5c3RlbSBs
b2NhbGUgYXMgd2VsbCBhcyBhbiBFbmdsaXNoIG5hbWUsCisgICAgLy8gYm90aCBHZXRUZXh0RmFj
ZSgpIGFuZCBFbnVtRm9udEZhbWlsaWVzKCkgcmV0dXJuIHRoZSBsb2NhbGl6ZWQgYWxpYXMuIFNv
LAorICAgIC8vIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSgpIGRvZXMgbm90IGZp
bHRlciBvdXQgdGhlIGZvbnRzCisgICAgLy8gcmV0dXJuZWQgYnkgdGhpcyBFbnVtRm9udEZhbWls
aWVzKCkgY2FsbC4KKyAgICBIREMgZGMgPSBHZXREQyhOVUxMKTsKKyAgICBpZiAoZGMpIHsKKyAg
ICAgIEdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnRQcm9jRGF0YSBwcm9jRGF0YSh0aGlzLCAmZGVz
Y3JpcHRpb24sIGZhbGxiYWNrRm9udE5hbWUpOworICAgICAgRW51bUZvbnRGYW1pbGllcyhkYywg
MCwgZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFN
PigmcHJvY0RhdGEpKTsKKyAgICAgIFJlbGVhc2VEQyhOVUxMLCBkYyk7CisKKyAgICAgIGlmIChw
cm9jRGF0YS5tX2ZvbnREYXRhKQorICAgICAgICByZXR1cm4gcHJvY0RhdGEubV9mb250RGF0YTsK
KyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80034</attachid>
            <date>2011-01-25 01:13:12 -0800</date>
            <delta_ts>2011-01-26 00:25:36 -0800</delta_ts>
            <desc>A carpet-bomb approach 2</desc>
            <filename>issue52422-patch4.txt</filename>
            <type>text/plain</type>
            <size>3639</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NTc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDEtMjUgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQSBzcGVjdWxhdGl2ZSBmaXggZm9yIEJ1ZyA1MjQyMiAtIFtj
aHJvbWl1bV0gTW9yZSBjcmFzaCBpbgorICAgICAgICBGb250RmFsbGJhY2tMaXN0OjpkZXRlcm1p
bmVQaXRjaChjb25zdCBGb250KiBmb250KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MjIKKworICAgICAgICBNeSBwcmV2aW91cyBjaGFuZ2UgbWF5
IG5vdCB3b3JrIG9uIG5vbi1VUyBXaW5kb3dzIHdob3NlIHN5c3RlbSBmb250cworICAgICAgICBo
YXZlIGxvY2FsaXplZCBhbGlhc2VzIG1hdGNoaW5nIHRvIHRoZSBzeXN0ZW0gbG9jYWxlIGJlY2F1
c2Ugb2YgYQorICAgICAgICBmb250LW5hbWUgbWlzbWF0Y2ggaW4gY3JlYXRlRm9udEluZGlyZWN0
QW5kR2V0V2luTmFtZSgpLiBUaGlzIGNoYW5nZQorICAgICAgICB0cmllcyBhbGwgdGhlIGZvbnRz
IGluc3RhbGxlZCBpbiBhIFBDIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBmb250IHRoYXQgd2UKKyAg
ICAgICAgY2FuIGNyZWF0ZSB3aXRob3V0IGVycm9ycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnRQcm9jRGF0YTo6R2V0TGFzdFJlc29ydEZhbGxi
YWNrRm9udFByb2NEYXRhKToKKyAgICAgICAgQWRkZWQgYSBzdHJ1Y3QgdXNlZCBmb3IgZ2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udFByb2MoKS4KKyAgICAgICAgKFdlYkNvcmU6OmdldExhc3RSZXNv
cnRGYWxsYmFja0ZvbnRQcm9jKTogQWRkZWQgYSBjYWxsYmFjayBmb3IgRW51bUZvbnRGYW1pbGll
cygpLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tG
b250KTogVXNlIEVudW1Gb250RmFtaWxpZXMoKSB0byBmaW5kIGEgbGFzdC1yZXNvcnQgZm9udC4K
KwogMjAxMS0wMS0yNCAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLiBNaXNzZWQgbW92ZSBvZiBvbmUgbV9kZWxldGVkIHVzZSB0byBi
ZSBvdXRzaWRlIE5ERUJVRyBibG9jawpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVt
V2luLmNwcAkocmV2aXNpb24gNzY1NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5OSw2ICszOTksMjkgQEAgc3RhdGljIGludCBDQUxMQkFDSyB0cmFpdHNJbkZhbWlseUVudW1Q
cgogICAgIHJldHVybiAxOwogfQogCitzdHJ1Y3QgR2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFBy
b2NEYXRhIHsKKyAgICBHZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250UHJvY0RhdGEoRm9udENhY2hl
KiBmb250Q2FjaGUsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiogZm9udERlc2NyaXB0aW9uLCB3Y2hh
cl90KiBmb250TmFtZSkKKyAgICAgICAgOiBtX2ZvbnRDYWNoZShmb250Q2FjaGUpCisgICAgICAg
ICwgbV9mb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKQorICAgICAgICAsIG1fZm9udE5h
bWUoZm9udE5hbWUpCisgICAgICAgICwgbV9mb250RGF0YSgwKQorICAgIHsKKyAgICB9CisKKyAg
ICBGb250Q2FjaGUqIG1fZm9udENhY2hlOworICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiogbV9m
b250RGVzY3JpcHRpb247CisgICAgd2NoYXJfdCogbV9mb250TmFtZTsKKyAgICBTaW1wbGVGb250
RGF0YSogbV9mb250RGF0YTsKK307CisKK3N0YXRpYyBpbnQgQ0FMTEJBQ0sgZ2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udFByb2MoY29uc3QgTE9HRk9OVCogbG9nRm9udCwgY29uc3QgVEVYVE1FVFJJ
QyogbWV0cmljcywgRFdPUkQgZm9udFR5cGUsIExQQVJBTSBsUGFyYW0pCit7CisgICAgT3V0cHV0
RGVidWdTdHJpbmcobG9nRm9udC0+bGZGYWNlTmFtZSk7CisgICAgR2V0TGFzdFJlc29ydEZhbGxi
YWNrRm9udFByb2NEYXRhKiBwcm9jRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udFByb2NEYXRhKj4obFBhcmFtKTsKKyAgICBwcm9jRGF0YS0+bV9mb250RGF0
YSA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChwcm9jRGF0YS0+bV9mb250Q2Fj
aGUsICpwcm9jRGF0YS0+bV9mb250RGVzY3JpcHRpb24sICpsb2dGb250LCBwcm9jRGF0YS0+bV9m
b250TmFtZSk7CisgICAgcmV0dXJuICFwcm9jRGF0YS0+bV9mb250RGF0YTsKK30KKwogdm9pZCBG
b250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiB7CiAgICAgLy8gTm90IG5lZWRlZCBvbiBXaW5kb3dz
LgpAQCAtNTQ4LDYgKzU3MSwyMSBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0
UmVzb3J0CiAgICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKICAgICB9CiAKKyAgICAvLyBG
YWxsIGJhY2sgdG8gYWxsIHRoZSBmb250cyBpbnN0YWxsZWQgaW4gdGhpcyBQQy4gV2hlbiBhIGZv
bnQgaGFzIGEKKyAgICAvLyBsb2NhbGl6ZWQgYWxpYXMgbWF0Y2hpbmcgdG8gdGhlIHN5c3RlbSBs
b2NhbGUgYXMgd2VsbCBhcyBhbiBFbmdsaXNoIG5hbWUsCisgICAgLy8gYm90aCBHZXRUZXh0RmFj
ZSgpIGFuZCBFbnVtRm9udEZhbWlsaWVzKCkgcmV0dXJuIHRoZSBsb2NhbGl6ZWQgYWxpYXMuIFNv
LAorICAgIC8vIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSgpIGRvZXMgbm90IGZp
bHRlciBvdXQgdGhlIGZvbnRzCisgICAgLy8gcmV0dXJuZWQgYnkgdGhpcyBFbnVtRm9udEZhbWls
aWVzKCkgY2FsbC4KKyAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBpZiAoZGMpIHsKKyAgICAg
IEdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnRQcm9jRGF0YSBwcm9jRGF0YSh0aGlzLCAmZGVzY3Jp
cHRpb24sIGZhbGxiYWNrRm9udE5hbWUpOworICAgICAgRW51bUZvbnRGYW1pbGllcyhkYywgMCwg
Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigm
cHJvY0RhdGEpKTsKKyAgICAgIFJlbGVhc2VEQygwLCBkYyk7CisKKyAgICAgIGlmIChwcm9jRGF0
YS5tX2ZvbnREYXRhKQorICAgICAgICByZXR1cm4gcHJvY0RhdGEubV9mb250RGF0YTsKKyAgICB9
CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0K
</data>
<flag name="review"
          id="71496"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80174</attachid>
            <date>2011-01-26 00:25:36 -0800</date>
            <delta_ts>2011-01-26 02:13:08 -0800</delta_ts>
            <desc>A carpet-bomb approach 3</desc>
            <filename>issue52422-patch5.txt</filename>
            <type>text/plain</type>
            <size>3562</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NjY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDEtMjUgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQSBzcGVjdWxhdGl2ZSBmaXggZm9yIEJ1ZyA1MjQyMiAtIFtj
aHJvbWl1bV0gTW9yZSBjcmFzaCBpbgorICAgICAgICBGb250RmFsbGJhY2tMaXN0OjpkZXRlcm1p
bmVQaXRjaChjb25zdCBGb250KiBmb250KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI0MjIKKworICAgICAgICBNeSBwcmV2aW91cyBjaGFuZ2UgbWF5
IG5vdCB3b3JrIG9uIG5vbi1VUyBXaW5kb3dzIHdob3NlIHN5c3RlbSBmb250cworICAgICAgICBo
YXZlIGxvY2FsaXplZCBhbGlhc2VzIG1hdGNoaW5nIHRvIHRoZSBzeXN0ZW0gbG9jYWxlIGJlY2F1
c2Ugb2YgYQorICAgICAgICBmb250LW5hbWUgbWlzbWF0Y2ggaW4gY3JlYXRlRm9udEluZGlyZWN0
QW5kR2V0V2luTmFtZSgpLiBUaGlzIGNoYW5nZQorICAgICAgICB0cmllcyBhbGwgdGhlIGZvbnRz
IGluc3RhbGxlZCBpbiBhIFBDIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBmb250IHRoYXQgd2UKKyAg
ICAgICAgY2FuIGNyZWF0ZSB3aXRob3V0IGVycm9ycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnRQcm9jRGF0YTo6R2V0TGFzdFJlc29ydEZhbGxi
YWNrRm9udFByb2NEYXRhKToKKyAgICAgICAgQWRkZWQgYSBzdHJ1Y3QgdXNlZCBmb3IgZ2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udFByb2MoKS4KKyAgICAgICAgKFdlYkNvcmU6OmdldExhc3RSZXNv
cnRGYWxsYmFja0ZvbnRQcm9jKTogQWRkZWQgYSBjYWxsYmFjayBmb3IgRW51bUZvbnRGYW1pbGll
cygpLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tG
b250KTogVXNlIEVudW1Gb250RmFtaWxpZXMoKSB0byBmaW5kIGEgbGFzdC1yZXNvcnQgZm9udC4K
KwogMjAxMS0wMS0yNSAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdpbmRvd3MgcHJvZHVjdGlvbiBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dENhY2hlQ2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiA3NjY2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzk5LDYgKzM5OSwyOCBAQCBzdGF0aWMgaW50IENBTExCQUNLIHRyYWl0
c0luRmFtaWx5RW51bVByCiAgICAgcmV0dXJuIDE7CiB9CiAKK3N0cnVjdCBHZXRMYXN0UmVzb3J0
RmFsbGJhY2tGb250UHJvY0RhdGEgeworICAgIEdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnRQcm9j
RGF0YShGb250Q2FjaGUqIGZvbnRDYWNoZSwgY29uc3QgRm9udERlc2NyaXB0aW9uKiBmb250RGVz
Y3JpcHRpb24sIHdjaGFyX3QqIGZvbnROYW1lKQorICAgICAgICA6IG1fZm9udENhY2hlKGZvbnRD
YWNoZSkKKyAgICAgICAgLCBtX2ZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pCisgICAg
ICAgICwgbV9mb250TmFtZShmb250TmFtZSkKKyAgICAgICAgLCBtX2ZvbnREYXRhKDApCisgICAg
eworICAgIH0KKworICAgIEZvbnRDYWNoZSogbV9mb250Q2FjaGU7CisgICAgY29uc3QgRm9udERl
c2NyaXB0aW9uKiBtX2ZvbnREZXNjcmlwdGlvbjsKKyAgICB3Y2hhcl90KiBtX2ZvbnROYW1lOwor
ICAgIFNpbXBsZUZvbnREYXRhKiBtX2ZvbnREYXRhOworfTsKKworc3RhdGljIGludCBDQUxMQkFD
SyBnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250UHJvYyhjb25zdCBMT0dGT05UKiBsb2dGb250LCBj
b25zdCBURVhUTUVUUklDKiBtZXRyaWNzLCBEV09SRCBmb250VHlwZSwgTFBBUkFNIGxQYXJhbSkK
K3sKKyAgICBHZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250UHJvY0RhdGEqIHByb2NEYXRhID0gcmVp
bnRlcnByZXRfY2FzdDxHZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250UHJvY0RhdGEqPihsUGFyYW0p
OworICAgIHByb2NEYXRhLT5tX2ZvbnREYXRhID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KHByb2NEYXRhLT5tX2ZvbnRDYWNoZSwgKnByb2NEYXRhLT5tX2ZvbnREZXNjcmlwdGlv
biwgKmxvZ0ZvbnQsIHByb2NEYXRhLT5tX2ZvbnROYW1lKTsKKyAgICByZXR1cm4gIXByb2NEYXRh
LT5tX2ZvbnREYXRhOworfQorCiB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1Jbml0KCkKIHsKICAg
ICAvLyBOb3QgbmVlZGVkIG9uIFdpbmRvd3MuCkBAIC01NDgsNiArNTcwLDIxIEBAIFNpbXBsZUZv
bnREYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnQKICAgICAgICAgICAgIHJldHVybiBzaW1w
bGVGb250OwogICAgIH0KIAorICAgIC8vIEZhbGwgYmFjayB0byBhbGwgdGhlIGZvbnRzIGluc3Rh
bGxlZCBpbiB0aGlzIFBDLiBXaGVuIGEgZm9udCBoYXMgYQorICAgIC8vIGxvY2FsaXplZCBuYW1l
IGFjY29yZGluZyB0byB0aGUgc3lzdGVtIGxvY2FsZSBhcyB3ZWxsIGFzIGFuIEVuZ2xpc2ggbmFt
ZSwKKyAgICAvLyBib3RoIEdldFRleHRGYWNlKCkgYW5kIEVudW1Gb250RmFtaWxpZXMoKSByZXR1
cm4gdGhlIGxvY2FsaXplZCBuYW1lLiBTbywKKyAgICAvLyBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEoKSBkb2VzIG5vdCBmaWx0ZXIgb3V0IHRoZSBmb250cworICAgIC8vIHJldHVy
bmVkIGJ5IHRoaXMgRW51bUZvbnRGYW1pbGllcygpIGNhbGwuCisgICAgSERDIGRjID0gR2V0REMo
MCk7CisgICAgaWYgKGRjKSB7CisgICAgICAgIEdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnRQcm9j
RGF0YSBwcm9jRGF0YSh0aGlzLCAmZGVzY3JpcHRpb24sIGZhbGxiYWNrRm9udE5hbWUpOworICAg
ICAgICBFbnVtRm9udEZhbWlsaWVzKGRjLCAwLCBnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250UHJv
YywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZwcm9jRGF0YSkpOworICAgICAgICBSZWxlYXNl
REMoMCwgZGMpOworCisgICAgICAgIGlmIChwcm9jRGF0YS5tX2ZvbnREYXRhKQorICAgICAgICAg
ICAgcmV0dXJuIHByb2NEYXRhLm1fZm9udERhdGE7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>