<?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>65063</bug_id>
          
          <creation_ts>2011-07-22 21:01:57 -0700</creation_ts>
          <short_desc>REGRESSION(r91628): 3 canvas tests crash on Chromium Linux and one test fail on Chromium Mac</short_desc>
          <delta_ts>2011-08-19 14:53:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>reed</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tomhudson</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>441337</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-22 21:01:57 -0700</bug_when>
    <thetext>Following tests started crashing on Chromium Linux after r91628:
fast/canvas/webgl/drawingbuffer-test.html
fast/canvas/canvas-bg-multiple-removal.html
fast/canvas/canvas-as-image-incremental-repaint.html

http://build.webkit.org/results/Chromium%20Linux%20Release%20(Tests)/r91629%20(21411)/results.html

In addition, css2.1/t0905-c414-flt-01-d-g.html is failing with image differences on Chromium Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441339</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-22 21:11:06 -0700</bug_when>
    <thetext>This bug is definitely a P1 since this is a crash regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441435</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-23 21:36:59 -0700</bug_when>
    <thetext>Hm, I saw this crash in testing, and thought I fixed it. I won&apos;t be able to fix until next week though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441732</commentid>
    <comment_count>3</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-25 10:41:55 -0700</bug_when>
    <thetext>*** Bug 65121 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441733</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-25 10:42:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; *** Bug 65121 has been marked as a duplicate of this bug. ***

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;group=%40ToT%20GPU%20Mesa%20-%20chromium.org&amp;tests=fast%2Fcanvas%2Fwebgl%2Fgl-enable-enum-test.html

Also add fast/canvas/webgl/gl-enable-enum-test.html to that list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441785</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-25 12:06:44 -0700</bug_when>
    <thetext>Do we have a crash log?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444454</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-31 14:07:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Do we have a crash log?

I don&apos;t; I don&apos;t have access to Chromium Linux build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444743</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-01 10:17:30 -0700</bug_when>
    <thetext>Here&apos;s a stack from my chromium linux build.  This doesn&apos;t look related to Simon&apos;s checkin:


[3660:3660:5964953942181:ERROR:process_util_posix.cc(134)] Received signal 11
        base::debug::StackTrace::StackTrace() [0x8a5c0a]
        base::(anonymous namespace)::StackDumpSignalHandler() [0x86df1d]
        0x7f65eeb7bc20
        SkRefCnt::getRefCnt() [0x8ea3fc]
        SkBitmap::validate() [0x8ea044]
        SkBitmap::~SkBitmap() [0x8e5986]
        WebCore::NativeImageSkia::~NativeImageSkia() [0x104ae16]
        WebCore::BitmapImageSingleFrameSkia::~BitmapImageSingleFrameSkia() [0x104a95e]
        WTF::RefCounted&lt;&gt;::deref() [0x4ed5d8]
        WTF::derefIfNotNull&lt;&gt;() [0x4ecbb9]
        WTF::RefPtr&lt;&gt;::~RefPtr() [0x4ec355]
        WebCore::HTMLCanvasElement::~HTMLCanvasElement() [0xe847dd]
        WebCore::TreeShared&lt;&gt;::removedLastRef() [0xd908d8]
        WebCore::TreeShared&lt;&gt;::deref() [0x47116d]
        WTF::derefIfNotNull&lt;&gt;() [0xdcf977]
        WTF::RefPtr&lt;&gt;::~RefPtr() [0xdc7abb]
        std::pair&lt;&gt;::~pair() [0xdca072]
        WTF::HashTable&lt;&gt;::deallocateTable() [0xdca0c9]
        WTF::HashTable&lt;&gt;::clear() [0xdca532]
        WTF::HashMap&lt;&gt;::clear() [0xdc415e]
        WebCore::Document::removedLastRef() [0xdac9a9]
        WebCore::TreeShared&lt;&gt;::deref() [0x47116d]
        WebCore::DOMDataStore::weakNodeCallback() [0x1565726]
        v8::internal::GlobalHandles::Node::PostGarbageCollectionProcessing() [0xa41dca]
        v8::internal::GlobalHandles::PostGarbageCollectionProcessing() [0xa40735]
        v8::internal::Heap::PerformGarbageCollection() [0xa5298c]
        v8::internal::Heap::CollectGarbage() [0xa51f45]
        v8::internal::Heap::CollectGarbage() [0xa0bbe1]
        v8::internal::Heap::CollectAllGarbage() [0xa51d7f]
        v8::internal::Heap::IdleNotification() [0xa5bdb7]
        v8::internal::V8::IdleNotification() [0xc223a3]
        v8::V8::IdleNotification() [0x9bf0f4]
        WebCore::V8GCForContextDispose::pseudoIdleTimerFired() [0x110cac7]
        WebCore::Timer&lt;&gt;::fired() [0x110cc0c]
        WebCore::ThreadTimers::sharedTimerFiredInternal() [0xf9ed9c]
        WebCore::ThreadTimers::sharedTimerFired() [0xf9ecd3]
        webkit_glue::WebKitClientImpl::DoTimeout() [0x195ab7e]
        DispatchToMethod&lt;&gt;() [0x195b283]
        base::BaseTimer&lt;&gt;::TimerTask::Run() [0x195b1d8]
        base::subtle::TaskClosureAdapter::Run() [0x88720f]
        base::internal::Invoker1&lt;&gt;::DoInvoke() [0x8515be]
        base::Callback&lt;&gt;::Run() [0x8503d7]
        MessageLoop::RunTask() [0x84e055]
        MessageLoop::DeferOrRunPendingTask() [0x84e15d]
        MessageLoop::DoWork() [0x84e973]
        base::MessagePumpGlib::RunWithDispatcher() [0x89c075]
        base::MessagePumpGlib::Run() [0x89c456]
        MessageLoop::RunInternal() [0x84de49]
        MessageLoop::RunHandler() [0x84dcfc]
        MessageLoop::Run() [0x84d717]
        webkit_support::RunMessageLoop() [0x5bc37b]
        TestShell::waitTestFinished() [0x45d9b4]
        TestShell::runFileTest() [0x4566a4]
        runTest() [0x42c56c]
        main [0x42d040]
        0x7f65eeb66d8e
        0x41b5d9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444744</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-01 10:18:16 -0700</bug_when>
    <thetext>To repro, I ran the following:
./out/Debug/DumpRenderTree --pixel-tests /src/WebKit/LayoutTests/fast/canvas/webgl/*.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444757</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-01 10:36:46 -0700</bug_when>
    <thetext>This looks like a Chromium or Skia-specific issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444891</commentid>
    <comment_count>10</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-08-01 14:47:57 -0700</bug_when>
    <thetext>With Chromium Linux 15.0.841.0 (WebKit r92135), drawingbuffer-test, canvas-bg-multiple-removal, and gl-enable-enum-test all run fine.

canvas-as-image-incremental-repaint.html crashes.

HTMLCanvasElement::didDraw() is attempting to call m_copiedImage.clear(). When it arrives at SkBitmap::~SkBitmap, the bitmap appears to be corrupt, with fColorTable = 0x1.

m_copiedImage is set validly in a call from CSSCanvasValue::image(). At this point, the Bitmap looks valid: 300x300, 1200 row bytes, NULL fColorTable, NULL fPixels, Config 6, BytesPerPixel 4.

BitmapImageSingleFrameSkia appears to have *two* SkBitmaps, named Native and Resized. When we enter HTMLCanvasElement::didDraw(), the m_nativeImage is unchanged, but the m_resizedImage - formerly all NULL - now has a fColorTable = 0x1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445893</commentid>
    <comment_count>11</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-08-03 08:52:49 -0700</bug_when>
    <thetext>This appears to be a regression of http://code.google.com/p/chromium/issues/detail?id=79739 / https://bugs.webkit.org/show_bug.cgi?id=58821. However, the changes to GraphicsContext3DSkia::getImageData() made then seem to be intact, suggesting it&apos;s a similar bad cast in some other place.

At least three callers are using Image::isBitmapImage() as RTTI and casting an Image to a BitmapImage so they can call the functions on it. Although BitmapImageSingleFrameSkia is implemented as a bitmap, it doesn&apos;t have all the other baggage that has accreted around BitmapImage (multiple animation frames).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446020</commentid>
    <comment_count>12</comment_count>
      <attachid>102814</attachid>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-08-03 12:41:03 -0700</bug_when>
    <thetext>Created attachment 102814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446021</commentid>
    <comment_count>13</comment_count>
      <attachid>102814</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 12:45:10 -0700</bug_when>
    <thetext>Comment on attachment 102814
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        REGRESSION(r91628): 3 canvas tests crash on Chromium Linux and one test fail on Chromium Mac
&gt; +        Remove casts of BitmapImageSingleFrameSkia to WebCore::BitmapImage;
&gt; +        add virtual functions to WebCore::Image to make casts unnecessary.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=65063

Wrong format. The first two lines should be the bug title and the bug url.

&gt; Source/WebCore/ChangeLog:10
&gt; +        No new tests; was caught by preexisting tests.

You need to have a long description here below &quot;Reviewed by&quot; line and a blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446023</commentid>
    <comment_count>14</comment_count>
      <attachid>102814</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-03 12:46:32 -0700</bug_when>
    <thetext>Comment on attachment 102814
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:103
&gt; +    bool hasAlpha = image-&gt;hasTransparency();

This now seems to have slightly different semantics:  it checks if currentFrameHasAlpha(), rather than frame 0. Is that intentional?  (Maybe this is actually more correct?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446026</commentid>
    <comment_count>15</comment_count>
      <attachid>102817</attachid>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-08-03 12:48:42 -0700</bug_when>
    <thetext>Created attachment 102817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446032</commentid>
    <comment_count>16</comment_count>
      <attachid>102814</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-03 12:55:53 -0700</bug_when>
    <thetext>Comment on attachment 102814
Patch

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

&gt; Source/WebCore/platform/graphics/BitmapImage.h:163
&gt; +    virtual bool hasTransparency() { return currentFrameHasAlpha(); }

It’s rarely helpful to have an inline definition of a function that is also virtual. If this is going to be virtual, I suggest putting the implementation into BitmapImage.cpp rather than putting it here in the header.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:-169
&gt; -#if !ASSERT_DISABLED
&gt; -    bool notSolidColor()
&gt; +    virtual bool notSolidColor()
&gt;      {
&gt;          return size().width() != 1 || size().height() != 1 || frameCount() &gt; 1;
&gt;      }
&gt; -#endif

It’s rarely helpful to have an inline definition of a function that is also virtual. If this is going to be virtual, I suggest putting the implementation into BitmapImage.cpp rather than putting it here in the header.

Why is this now outside ASSERT_DISABLED #if? I ask because the imprecision of this before was partly justified by the fact that it’s for assertions only.

There is no rationale for this change in the change log. In fact, the change log says nothing.

&gt; Source/WebCore/platform/graphics/Image.h:92
&gt; +    // This is not RTTI and may not indicate that the object can
&gt; +    // be safely cast to WebCore::BitmapImage on all ports.
&gt;      virtual bool isBitmapImage() const { return false; }

This comment indicates that we need to rename the function; not add a comment. It’s highly likely someone will use this function wrong and the comment won’t necessarily help.

Many people are not familiar with the RTTI acronym and so it would be better not to use it.

&gt; Source/WebCore/platform/graphics/Image.h:163
&gt; +    virtual bool hasTransparency () { return true; }
&gt; +    virtual bool notSolidColor () { return true; }

I don’t like either of these function names. The reason is that both don’t do what they say. There are many images that have no transparency at all that will still return true for hasTransparency. There are many images that are a solid color that will return true for notSolidColor. Ideally the functions would have precise names rather than imprecise ones. What does it mean if these functions return false? We should name them so their behavior actually matches what they are named, even if that means a longer name.

These are formatted wrong with spaces before braces.

Also, it’s rarely helpful to have an inline definition of a function that is also virtual. If this is going to be virtual, I suggest putting the implementation into Image.cpp rather than putting it here in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446033</commentid>
    <comment_count>17</comment_count>
      <attachid>102817</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-03 12:56:35 -0700</bug_when>
    <thetext>Comment on attachment 102817
Patch

My comments all apply to this new patch as well as the old one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446036</commentid>
    <comment_count>18</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-08-03 13:02:25 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 102814 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102814&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:103
&gt; &gt; +    bool hasAlpha = image-&gt;hasTransparency();
&gt; 
&gt; This now seems to have slightly different semantics:  it checks if currentFrameHasAlpha(), rather than frame 0. Is that intentional?  (Maybe this is actually more correct?)

(In reply to comment #14)
&gt; (From update of attachment 102814 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102814&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:103
&gt; &gt; +    bool hasAlpha = image-&gt;hasTransparency();
&gt; 
&gt; This now seems to have slightly different semantics:  it checks if currentFrameHasAlpha(), rather than frame 0. Is that intentional?  (Maybe this is actually more correct?)

Oh, good point. I think we need somebody familiar with the CG port here - it looks like the subsequent code SOMETIMES operates on frame 0, and SOMETIMES on the current frame?

This may mean that the attempt to define &quot;isBitmapImage()&quot; as &quot;semantically bitmap-like&quot; rather than &quot;fake WebCore::BitmapImage RTTI&quot; isn&apos;t going to work, and we&apos;ll have to make one of the other fixes discussed in email.

I will be out of the office for 2 of the next 3 weeks; if somebody wants to fix this bug before then, other routes forward we&apos;ve considered are:

1. Return false from BitmapImageSingleFrameSkia::isBitmapImage(); add a new function (hasRaster()? hasBitmapSemantics()?) and use that in RenderLayerBacking::isDirectlyCompositedImage(),
ImageQualityController::shouldPaintAtLowQuality(), and possibly CachedImage::destroyDecodedData().

2. Have BitmapImageSingleFrameSkia inherit from WebCore::BitmapImage, and stub out all of the functionality there we don&apos;t want.

3. Separate out AnimatedBitmapImage from BitmapImage; make BitmapImageSingleFrameSkia inherit from BitmapImage. This feels to me like it leaves the source code in the cleanest state, but has a heavy impact on all the other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446056</commentid>
    <comment_count>19</comment_count>
    <who name="Tom Hudson">tomhudson</who>
    <bug_when>2011-08-03 13:28:56 -0700</bug_when>
    <thetext>Darin,

Thanks for the review. 

(In reply to comment #16)
&gt; Why is this now outside ASSERT_DISABLED #if? I ask because the imprecision of this before was partly justified by the fact that it’s for assertions only.

It looks like this is debugging code left over from testing m_isSolidColor. Can it be removed safely and the unit tests relied on? If not, and we decide to keep this function, I can push the #if !ASSERT_DISABLED to other classes that implement it.

&gt; &gt; Source/WebCore/platform/graphics/Image.h:92
&gt; &gt; +    // This is not RTTI and may not indicate that the object can
&gt; &gt; +    // be safely cast to WebCore::BitmapImage on all ports.
&gt; &gt;      virtual bool isBitmapImage() const { return false; }
&gt; 
&gt; This comment indicates that we need to rename the function; not add a comment. It’s highly likely someone will use this function wrong and the comment won’t necessarily help.

The function appears to be being used in two different ways:
 1 - can I cast to a BitmapImage
 2 - does this thing have the semantics of a bitmap

This patch was attempting to remove any uses of case #1 (a previous patch for bug 55821 only addressed a single caller). I&apos;d be happy to add a second function that directly addresses case #2, but it seems to me that #1 is common in WebKit and is difficult to stop people from doing, thus the other approaches we considered that I mentioned in comment #18 above.

&gt; &gt; Source/WebCore/platform/graphics/Image.h:163
&gt; &gt; +    virtual bool hasTransparency () { return true; }
&gt; &gt; +    virtual bool notSolidColor () { return true; }
&gt; 
&gt; I don’t like either of these function names. The reason is that both don’t do what they say. There are many images that have no transparency at all that will still return true for hasTransparency. There are many images that are a solid color that will return true for notSolidColor. Ideally the functions would have precise names rather than imprecise ones. What does it mean if these functions return false? We should name them so their behavior actually matches what they are named, even if that means a longer name.

notSolidColor() was preexisting on BitmapImage; I agree that the name is not descriptive. isSinglePixelConstantColor() (with the sense reversed)?

Do you have alternate name suggestions for hasTransparency()? mayBeTransparent() / isNotCertainlyOpaque(), perhaps?

&gt; Also, it’s rarely helpful to have an inline definition of a function that is also virtual. If this is going to be virtual, I suggest putting the implementation into Image.cpp rather than putting it here in the header.

Inline virtuals are absolutely endemic to these class headers. Should I go through and move the rest into their cpp files? As a new WebKit contributor I was trying to follow established style regardless of whether it conflicted with best practices I&apos;d learned elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453600</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-18 21:04:16 -0700</bug_when>
    <thetext>This still crashing, we&apos;re doing a bad cast on Image* to BitmapImage* and then calling the wrong member functions.  Totally not cool to leave a memory stomping crash in the tree for so long :(

I&apos;ll try to pick this up and fix it, seems like the patch stalled out mostly over naming and style concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453608</commentid>
    <comment_count>21</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-18 21:11:27 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; This appears to be a regression of http://code.google.com/p/chromium/issues/detail?id=79739 / https://bugs.webkit.org/show_bug.cgi?id=58821. However, the changes to GraphicsContext3DSkia::getImageData() made then seem to be intact, suggesting it&apos;s a similar bad cast in some other place.
&gt; 
&gt; At least three callers are using Image::isBitmapImage() as RTTI and casting an Image to a BitmapImage so they can call the functions on it. Although BitmapImageSingleFrameSkia is implemented as a bitmap, it doesn&apos;t have all the other baggage that has accreted around BitmapImage (multiple animation frames).

I think this is a really serious bug that we need to fix with BitmapImageSingleFrameSkia.  That&apos;s an incredibly fragile pattern and very different from the rest of how WebKit works.  That said, the more important thing right now is to fix the crashes, and then later fix the design flaws that lead to it being so easy to write crashers like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453618</commentid>
    <comment_count>22</comment_count>
      <attachid>104455</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-18 21:26:52 -0700</bug_when>
    <thetext>Created attachment 104455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453619</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-18 21:28:29 -0700</bug_when>
    <thetext>Updated the patch.  Darin Adler&apos;s feedback is valid, but right now we have a crash on ToT and crashes on Chrome builds in the wild.  I haven&apos;t changed any function names in this patch, so we can improve them later, but it&apos;s imperative that we fix the crash regression ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453623</commentid>
    <comment_count>24</comment_count>
      <attachid>104457</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-18 21:42:49 -0700</bug_when>
    <thetext>Created attachment 104457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454112</commentid>
    <comment_count>25</comment_count>
      <attachid>104457</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-19 14:50:19 -0700</bug_when>
    <thetext>Comment on attachment 104457
Patch

Clearing flags on attachment: 104457

Committed r93441: &lt;http://trac.webkit.org/changeset/93441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454113</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-19 14:50:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454117</commentid>
    <comment_count>27</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-19 14:53:08 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=66597 to discuss fixing the design issue here.  The Image/BitmapImage code could also use some general cleanup (like moving the definition of virtual functions to the .cpp, some of the function names are pretty poor) - I feel those should be handled with separate bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102814</attachid>
            <date>2011-08-03 12:41:03 -0700</date>
            <delta_ts>2011-08-03 12:56:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65063-20110803154101.patch</filename>
            <type>text/plain</type>
            <size>6462</size>
            <attacher name="Tom Hudson">tomhudson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDgtMDMgIFRvbSBIdWRz
b24gIDx0b21odWRzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHI5MTYyOCk6
IDMgY2FudmFzIHRlc3RzIGNyYXNoIG9uIENocm9taXVtIExpbnV4IGFuZCBvbmUgdGVzdCBmYWls
IG9uIENocm9taXVtIE1hYworICAgICAgICBSZW1vdmUgY2FzdHMgb2YgQml0bWFwSW1hZ2VTaW5n
bGVGcmFtZVNraWEgdG8gV2ViQ29yZTo6Qml0bWFwSW1hZ2U7CisgICAgICAgIGFkZCB2aXJ0dWFs
IGZ1bmN0aW9ucyB0byBXZWJDb3JlOjpJbWFnZSB0byBtYWtlIGNhc3RzIHVubmVjZXNzYXJ5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUwNjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHM7IHdhcyBjYXVnaHQgYnkgcHJlZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
Omhhc1RyYW5zcGFyZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bm90U29s
aWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpoYXNUcmFuc3BhcmVuY3kpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpjcmVhdGVGcmFtZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZy
YW1lU2tpYS5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6
Omhhc1RyYW5zcGFyZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZy
YW1lU2tpYTo6bm90U29saWRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJl
ZCk6CisKIDIwMTEtMDgtMDMgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IGxv
YWQvc2F2ZVNlc3Npb25TZXR0aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlzaW9uIDkyMjkzKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTYw
LDEzICsxNjAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBmcmFtZUF0SW5kZXgoY3VycmVudEZyYW1l
KCkpOyB9CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wg
Y3VycmVudEZyYW1lSGFzQWxwaGEoKSB7IHJldHVybiBmcmFtZUhhc0FscGhhQXRJbmRleChjdXJy
ZW50RnJhbWUoKSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVHJhbnNwYXJlbmN5KCkgeyByZXR1
cm4gY3VycmVudEZyYW1lSGFzQWxwaGEoKTsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAg
IGJvb2wgbm90U29saWRDb2xvcigpCisgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHNpemUoKS53aWR0aCgpICE9IDEgfHwgc2l6ZSgpLmhlaWdo
dCgpICE9IDEgfHwgZnJhbWVDb3VudCgpID4gMTsKICAgICB9Ci0jZW5kaWYKIAogcHJvdGVjdGVk
OgogICAgIGVudW0gUmVwZXRpdGlvbkNvdW50U3RhdHVzIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDkyMjkzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTUsNyArMTE1LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogYwog
CiAgICAgLy8gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi81OTA0Mz4uCiAjaWYgIVBMQVRGT1JN
KFdYKQotICAgIEFTU0VSVCghaXNCaXRtYXBJbWFnZSgpIHx8IHN0YXRpY19jYXN0PEJpdG1hcElt
YWdlKj4odGhpcyktPm5vdFNvbGlkQ29sb3IoKSk7CisgICAgQVNTRVJUKCFpc0JpdG1hcEltYWdl
KCkgfHwgbm90U29saWRDb2xvcigpKTsKICNlbmRpZgogCiAgICAgRmxvYXRTaXplIGludHJpbnNp
Y1RpbGVTaXplID0gc2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCShyZXZpc2lvbiA5MjI5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlPiBsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBj
aGFyKiBuYW1lKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7
IAogCisgICAgLy8gVGhpcyBpcyBub3QgUlRUSSBhbmQgbWF5IG5vdCBpbmRpY2F0ZSB0aGF0IHRo
ZSBvYmplY3QgY2FuCisgICAgLy8gYmUgc2FmZWx5IGNhc3QgdG8gV2ViQ29yZTo6Qml0bWFwSW1h
Z2Ugb24gYWxsIHBvcnRzLgogICAgIHZpcnR1YWwgYm9vbCBpc0JpdG1hcEltYWdlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIERlcml2ZWQgY2xhc3NlcyBzaG91bGQgb3ZlcnJp
ZGUgdGhpcyBpZiB0aGV5IGNhbiBhc3N1cmUgdGhhdCAKQEAgLTE1Nyw2ICsxNTksOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KTsKIAorICAgIHZpcnR1YWwgYm9vbCBoYXNUcmFuc3BhcmVuY3kg
KCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yICgpIHsg
cmV0dXJuIHRydWU7IH0KKwogcHJvdGVjdGVkOgogICAgIEltYWdlKEltYWdlT2JzZXJ2ZXIqID0g
MCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCShyZXZpc2lvbiA5MjI5MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0SW1hZ2VEYXRhKEltYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQ0dJbWFnZVJl
ZiBjZ0ltYWdlOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBkZWNvZGVkSW1hZ2U7Ci0gICAg
Ym9vbCBoYXNBbHBoYSA9IGltYWdlLT5pc0JpdG1hcEltYWdlKCkgPyBzdGF0aWNfY2FzdDxCaXRt
YXBJbWFnZSo+KGltYWdlKS0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgoMCkgOiB0cnVlOworICAgIGJv
b2wgaGFzQWxwaGEgPSBpbWFnZS0+aGFzVHJhbnNwYXJlbmN5KCk7CiAgICAgaWYgKChpZ25vcmVH
YW1tYUFuZENvbG9yUHJvZmlsZSB8fCAoaGFzQWxwaGEgJiYgIXByZW11bHRpcGx5QWxwaGEpKSAm
JiBpbWFnZS0+ZGF0YSgpKSB7CiAgICAgICAgIEltYWdlU291cmNlIGRlY29kZXIoSW1hZ2VTb3Vy
Y2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA/IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJv
ZmlsZUlnbm9yZWQgOiBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VT
aW5nbGVGcmFtZVNraWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHJldmlzaW9uIDkyMjkz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNp
bmdsZUZyYW1lU2tpYS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAmbV9uYXRpdmVJbWFnZTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVHJhbnNwYXJlbmN5KCkgeyByZXR1cm4gIW1fbmF0aXZlSW1hZ2UuaXNPcGFxdWUoKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX25hdGl2ZUltYWdlLndpZHRoKCkgIT0gMSB8fCBtX25hdGl2ZUltYWdlLmhlaWdodCgpICE9
IDE7CisgICAgfQorCisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiA5
MjI5MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwOCwxMyArNDA4LDkgQEAgYm9vbCBSZW5kZXJJbWFnZTo6YmFja2dyb3Vu
ZElzT2JzY3VyZWQoKQogCiAgICAgLy8gQ2hlY2sgZm9yIGJpdG1hcCBpbWFnZSB3aXRoIGFscGhh
LgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKLSAg
ICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQorICAgIGlmICghaW1hZ2Ug
fHwgIWltYWdlLT5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2UtPmhhc1RyYW5zcGFyZW5jeSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIEJpdG1hcEltYWdlKiBiaXRtYXBJ
bWFnZSA9IHN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpOwotICAgIGlmIChiaXRtYXBJ
bWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102817</attachid>
            <date>2011-08-03 12:48:42 -0700</date>
            <delta_ts>2011-08-18 21:26:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65063-20110803154841.patch</filename>
            <type>text/plain</type>
            <size>6464</size>
            <attacher name="Tom Hudson">tomhudson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDgtMDMgIFRvbSBIdWRz
b24gIDx0b21odWRzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHI5MTYyOCk6
IDMgY2FudmFzIHRlc3RzIGNyYXNoIG9uIENocm9taXVtIExpbnV4IGFuZCBvbmUgdGVzdCBmYWls
IG9uIENocm9taXVtIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjUwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgY2FzdHMgb2YgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEgdG8gV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U7CisgICAgICAgIGFkZCB2aXJ0dWFsIGZ1bmN0aW9ucyB0byBXZWJD
b3JlOjpJbWFnZSB0byBtYWtlIGNhc3RzIHVubmVjZXNzYXJ5LgorCisgICAgICAgIE5vIG5ldyB0
ZXN0czsgd2FzIGNhdWdodCBieSBwcmVleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGFzVHJhbnNwYXJlbmN5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpub3RT
b2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omhhc1RyYW5zcGFyZW5jeSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bm90U29saWRDb2xvcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZUZyYW1lQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhLmg6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YTo6aGFzVHJhbnNwYXJlbmN5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhOjpub3RTb2xpZENvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmJhY2tncm91bmRJc09ic2N1
cmVkKToKKwogMjAxMS0wOC0wMyAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qg
bG9hZC9zYXZlU2Vzc2lvblNldHRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gOTIyOTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjAsMTMgKzE2MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJh
bWUoKSk7IH0KICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAgICAgYm9v
bCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpIHsgcmV0dXJuIGZyYW1lSGFzQWxwaGFBdEluZGV4KGN1
cnJlbnRGcmFtZSgpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUcmFuc3BhcmVuY3koKSB7IHJl
dHVybiBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOyB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0g
ICAgYm9vbCBub3RTb2xpZENvbG9yKCkKKyAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigp
CiAgICAgewogICAgICAgICByZXR1cm4gc2l6ZSgpLndpZHRoKCkgIT0gMSB8fCBzaXplKCkuaGVp
Z2h0KCkgIT0gMSB8fCBmcmFtZUNvdW50KCkgPiAxOwogICAgIH0KLSNlbmRpZgogCiBwcm90ZWN0
ZWQ6CiAgICAgZW51bSBSZXBldGl0aW9uQ291bnRTdGF0dXMgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNpb24gOTIyOTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNSw3ICsxMTUsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBj
CiAKICAgICAvLyBTZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzU5MDQzPi4KICNpZiAhUExBVEZP
Uk0oV1gpCi0gICAgQVNTRVJUKCFpc0JpdG1hcEltYWdlKCkgfHwgc3RhdGljX2Nhc3Q8Qml0bWFw
SW1hZ2UqPih0aGlzKS0+bm90U29saWRDb2xvcigpKTsKKyAgICBBU1NFUlQoIWlzQml0bWFwSW1h
Z2UoKSB8fCBub3RTb2xpZENvbG9yKCkpOwogI2VuZGlmCiAKICAgICBGbG9hdFNpemUgaW50cmlu
c2ljVGlsZVNpemUgPSBzaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgJKHJldmlzaW9uIDkyMjkzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIqIG5hbWUpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcm
KTsgCiAKKyAgICAvLyBUaGlzIGlzIG5vdCBSVFRJIGFuZCBtYXkgbm90IGluZGljYXRlIHRoYXQg
dGhlIG9iamVjdCBjYW4KKyAgICAvLyBiZSBzYWZlbHkgY2FzdCB0byBXZWJDb3JlOjpCaXRtYXBJ
bWFnZSBvbiBhbGwgcG9ydHMuCiAgICAgdmlydHVhbCBib29sIGlzQml0bWFwSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRGVyaXZlZCBjbGFzc2VzIHNob3VsZCBvdmVy
cmlkZSB0aGlzIGlmIHRoZXkgY2FuIGFzc3VyZSB0aGF0IApAQCAtMTU3LDYgKzE1OSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogCisgICAgdmlydHVhbCBib29sIGhhc1RyYW5zcGFyZW5j
eSAoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IgKCkg
eyByZXR1cm4gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2UoSW1hZ2VPYnNlcnZlciog
PSAwKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDkyMjkzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRJbWFnZURhdGEoSW1hCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBDR0ltYWdl
UmVmIGNnSW1hZ2U7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGRlY29kZWRJbWFnZTsKLSAg
ICBib29sIGhhc0FscGhhID0gaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSA/IHN0YXRpY19jYXN0PEJp
dG1hcEltYWdlKj4oaW1hZ2UpLT5mcmFtZUhhc0FscGhhQXRJbmRleCgwKSA6IHRydWU7CisgICAg
Ym9vbCBoYXNBbHBoYSA9IGltYWdlLT5oYXNUcmFuc3BhcmVuY3koKTsKICAgICBpZiAoKGlnbm9y
ZUdhbW1hQW5kQ29sb3JQcm9maWxlIHx8IChoYXNBbHBoYSAmJiAhcHJlbXVsdGlwbHlBbHBoYSkp
ICYmIGltYWdlLT5kYXRhKCkpIHsKICAgICAgICAgSW1hZ2VTb3VyY2UgZGVjb2RlcihJbWFnZVNv
dXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQ
cm9maWxlSWdub3JlZCA6IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAkocmV2aXNpb24gOTIy
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICZtX25hdGl2ZUltYWdlOwogICAgIH0KIAorICAgIHZpcnR1YWwg
Ym9vbCBoYXNUcmFuc3BhcmVuY3koKSB7IHJldHVybiAhbV9uYXRpdmVJbWFnZS5pc09wYXF1ZSgp
OyB9CisgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fbmF0aXZlSW1hZ2Uud2lkdGgoKSAhPSAxIHx8IG1fbmF0aXZlSW1hZ2UuaGVpZ2h0KCkg
IT0gMTsKKyAgICB9CisKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9u
IDkyMjkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDA4LDEzICs0MDgsOSBAQCBib29sIFJlbmRlckltYWdlOjpiYWNrZ3Jv
dW5kSXNPYnNjdXJlZCgpCiAKICAgICAvLyBDaGVjayBmb3IgYml0bWFwIGltYWdlIHdpdGggYWxw
aGEuCiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpLmdldCgpOwot
ICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc0JpdG1hcEltYWdlKCkpCisgICAgaWYgKCFpbWFn
ZSB8fCAhaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS0+aGFzVHJhbnNwYXJlbmN5KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgQml0bWFwSW1hZ2UqIGJpdG1h
cEltYWdlID0gc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSk7Ci0gICAgaWYgKGJpdG1h
cEltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104455</attachid>
            <date>2011-08-18 21:26:52 -0700</date>
            <delta_ts>2011-08-18 21:42:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65063-20110818212651.patch</filename>
            <type>text/plain</type>
            <size>5984</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMzNTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiOWY1NGQzZDRhODEyMGVh
ZTJlMzFiY2VlMzVlNjk5MGM0NDhiMTNhLi5lMTViMTY5N2U2ODQ3YzU3ZWVmZDRkZmFmMTA5YTQy
NzEyYTAxM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMTggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHI5
MTYyOCk6IDMgY2FudmFzIHRlc3RzIGNyYXNoIG9uIENocm9taXVtIExpbnV4IGFuZCBvbmUgdGVz
dCBmYWlsIG9uIENocm9taXVtIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXhlcyBjcmFzaGVzIGR1ZSB0byBhIGJhZCBjYXN0IGZyb20gSW1hZ2Ug
dG8gQml0bWFwSW1hZ2Ugb24gc2tpYSBwb3J0cworICAgICAgICB0aGF0IHVzZSBCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYS4gSW4gdGhlIHNraWEgcG9ydAorICAgICAgICBJbWFnZTo6aXNCaXRt
YXBJbWFnZSgpIHJldHVybmluZyB0cnVlIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdAor
ICAgICAgICBJbWFnZSBpcyBvZiB0eXBlIEJpdG1hcEltYWdlLgorCisgICAgICAgIENvdmVyZWQg
YnkgZmFzdC9jYW52YXMvY2FudmFzLWFzLWltYWdlLmh0bWwgYW5kIG1hbnkgb3RoZXIgY2FudmFz
CisgICAgICAgIHRlc3RzLgorCisgICAgICAgIFBhdGNoIG9yaWdpbmFsbHkgYnkgVG9tIEh1ZHNv
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2lu
Z2xlRnJhbWVTa2lhOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bm90U29saWRDb2xvcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpi
YWNrZ3JvdW5kSXNPYnNjdXJlZCk6CisKIDIwMTEtMDgtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI5MzMyOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCmluZGV4IDUxNzQ4OWJhZWYxNzA2ZWIyNjEyNDIxODE2MDIyMmNiODFlNjNhZmYuLjkwODVh
NjU1MjlkNWQ4NmZjNDYzNTZjZGU0MTc0N2U0YTE3YTYzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTU5LDEwICsxNTksMTAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpIHsgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KICAgICBi
b29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7Ci0gICAgYm9vbCBjdXJyZW50RnJhbWVI
YXNBbHBoYSgpIHsgcmV0dXJuIGZyYW1lSGFzQWxwaGFBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpIHsgcmV0dXJuIGZyYW1l
SGFzQWxwaGFBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAotICAgIGJvb2wgbm90U29saWRDb2xvcigpCisgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29s
b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHNpemUoKS53aWR0aCgpICE9IDEgfHwgc2l6ZSgp
LmhlaWdodCgpICE9IDEgfHwgZnJhbWVDb3VudCgpID4gMTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNDhjYWRkMzYwZGM3ZWU5OTMyZGE3
ODhjZTlmYTg3M2ZhZGI1YWQ4ZS4uM2JlZWFlMjhhOTBiYmFhMTM2ZDAxODY4ZDQzMDMwZDI1NDA2
Mzc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAKICAgICAvLyBTZWUgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzU5MDQzPi4KICNpZiAhUExBVEZPUk0oV1gpCi0gICAgQVNTRVJU
KCFpc0JpdG1hcEltYWdlKCkgfHwgc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPih0aGlzKS0+bm90
U29saWRDb2xvcigpKTsKKyAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RTb2xpZENv
bG9yKCkpOwogI2VuZGlmCiAKICAgICBGbG9hdFNpemUgaW50cmluc2ljVGlsZVNpemUgPSBzaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAxZjY4ZGE0
M2RiNDhiZDU2ZjdhNmZiNTI1MzU3NGU4NmQxZWJkMTM2Li4zNGQwMDEwNTljZGEyMTUwOWZkM2Vj
MDNiODUxNTExN2JjZThlYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmKTsgCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhh
c0FscGhhKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIERlcml2ZWQgY2xhc3NlcyBzaG91
bGQgb3ZlcnJpZGUgdGhpcyBpZiB0aGV5IGNhbiBhc3N1cmUgdGhhdCAKICAgICAvLyB0aGUgaW1h
Z2UgY29udGFpbnMgb25seSByZXNvdXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4K
QEAgLTE1Nyw2ICsxNTgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSB7IHJldHVybiB0
cnVlOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEltYWdlKEltYWdlT2JzZXJ2ZXIqID0g
MCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAppbmRleCA5NzRmMTI2MjBj
NjNhNWM2NmQyODRiNzkzN2I4OGZhNWU0ZjE2MWFiLi5hMzNiNWY3NWQ5YWYzNTkxYWYyZWNkYmQz
NTU1ZGM3OTljOTUwMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCkBA
IC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0JpdG1hcEltYWdl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUhhc0FscGhhKCkgeyByZXR1cm4gIW1fbmF0aXZlSW1hZ2UuaXNPcGFxdWUoKTsgfQorCiAgICAg
dmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEludFNp
emUobV9uYXRpdmVJbWFnZS53aWR0aCgpLCBtX25hdGl2ZUltYWdlLmhlaWdodCgpKTsKQEAgLTcy
LDYgKzc0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZtX25hdGl2ZUltYWdlOwogICAg
IH0KIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xv
cigpCisgICAgeworICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS53aWR0aCgpICE9IDEgfHwg
bV9uYXRpdmVJbWFnZS5oZWlnaHQoKSAhPSAxOworICAgIH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCmluZGV4IDcwMjJjZGEzYzhhN2IyOTUxYWIxY2MyMWNiM2NhNjAzYzMxODFj
NzMuLjZjMDVkZTFlZTRlNTAyNjAyNTExNDAyMGNhMTg2YTExMzg2NTlmMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDA4LDEzICs0MDgsOSBAQCBib29s
IFJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0CiAKICAgICAvLyBDaGVj
ayBmb3IgYml0bWFwIGltYWdlIHdpdGggYWxwaGEuCiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFn
ZVJlc291cmNlLT5pbWFnZSgpLmdldCgpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc0Jp
dG1hcEltYWdlKCkpCisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSB8
fCAhaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCi0gICAgQml0bWFwSW1hZ2UqIGJpdG1hcEltYWdlID0gc3RhdGljX2Nhc3Q8Qml0
bWFwSW1hZ2UqPihpbWFnZSk7Ci0gICAgaWYgKGJpdG1hcEltYWdlLT5jdXJyZW50RnJhbWVIYXNB
bHBoYSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104457</attachid>
            <date>2011-08-18 21:42:49 -0700</date>
            <delta_ts>2011-08-19 14:50:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65063-20110818214246.patch</filename>
            <type>text/plain</type>
            <size>5983</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMzNTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiOWY1NGQzZDRhODEyMGVh
ZTJlMzFiY2VlMzVlNjk5MGM0NDhiMTNhLi5lMTViMTY5N2U2ODQ3YzU3ZWVmZDRkZmFmMTA5YTQy
NzEyYTAxM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMTggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHI5
MTYyOCk6IDMgY2FudmFzIHRlc3RzIGNyYXNoIG9uIENocm9taXVtIExpbnV4IGFuZCBvbmUgdGVz
dCBmYWlsIG9uIENocm9taXVtIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjUwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXhlcyBjcmFzaGVzIGR1ZSB0byBhIGJhZCBjYXN0IGZyb20gSW1hZ2Ug
dG8gQml0bWFwSW1hZ2Ugb24gc2tpYSBwb3J0cworICAgICAgICB0aGF0IHVzZSBCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYS4gSW4gdGhlIHNraWEgcG9ydAorICAgICAgICBJbWFnZTo6aXNCaXRt
YXBJbWFnZSgpIHJldHVybmluZyB0cnVlIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdAor
ICAgICAgICBJbWFnZSBpcyBvZiB0eXBlIEJpdG1hcEltYWdlLgorCisgICAgICAgIENvdmVyZWQg
YnkgZmFzdC9jYW52YXMvY2FudmFzLWFzLWltYWdlLmh0bWwgYW5kIG1hbnkgb3RoZXIgY2FudmFz
CisgICAgICAgIHRlc3RzLgorCisgICAgICAgIFBhdGNoIG9yaWdpbmFsbHkgYnkgVG9tIEh1ZHNv
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
Om5vdFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlU2lu
Z2xlRnJhbWVTa2lhOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6bm90U29saWRDb2xvcik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpi
YWNrZ3JvdW5kSXNPYnNjdXJlZCk6CisKIDIwMTEtMDgtMTggIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI5MzMyOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCmluZGV4IDUxNzQ4OWJhZWYxNzA2ZWIyNjEyNDIxODE2MDIyMmNiODFlNjNhZmYuLjkwODVh
NjU1MjlkNWQ4NmZjNDYzNTZjZGU0MTc0N2U0YTE3YTYzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTU5LDEwICsxNTksMTAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpIHsgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KICAgICBi
b29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7Ci0gICAgYm9vbCBjdXJyZW50RnJhbWVI
YXNBbHBoYSgpIHsgcmV0dXJuIGZyYW1lSGFzQWxwaGFBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpIHsgcmV0dXJuIGZyYW1l
SGFzQWxwaGFBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAotICAgIGJvb2wgbm90U29saWRDb2xvcigpCisgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29s
b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHNpemUoKS53aWR0aCgpICE9IDEgfHwgc2l6ZSgp
LmhlaWdodCgpICE9IDEgfHwgZnJhbWVDb3VudCgpID4gMTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNDhjYWRkMzYwZGM3ZWU5OTMyZGE3
ODhjZTlmYTg3M2ZhZGI1YWQ4ZS4uM2JlZWFlMjhhOTBiYmFhMTM2ZDAxODY4ZDQzMDMwZDI1NDA2
Mzc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAKICAgICAvLyBTZWUgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzU5MDQzPi4KICNpZiAhUExBVEZPUk0oV1gpCi0gICAgQVNTRVJU
KCFpc0JpdG1hcEltYWdlKCkgfHwgc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPih0aGlzKS0+bm90
U29saWRDb2xvcigpKTsKKyAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RTb2xpZENv
bG9yKCkpOwogI2VuZGlmCiAKICAgICBGbG9hdFNpemUgaW50cmluc2ljVGlsZVNpemUgPSBzaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAxZjY4ZGE0
M2RiNDhiZDU2ZjdhNmZiNTI1MzU3NGU4NmQxZWJkMTM2Li4zNGQwMDEwNTljZGEyMTUwOWZkM2Vj
MDNiODUxNTExN2JjZThlYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmKTsgCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhh
c0FscGhhKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIERlcml2ZWQgY2xhc3NlcyBzaG91
bGQgb3ZlcnJpZGUgdGhpcyBpZiB0aGV5IGNhbiBhc3N1cmUgdGhhdCAKICAgICAvLyB0aGUgaW1h
Z2UgY29udGFpbnMgb25seSByZXNvdXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4K
QEAgLTE1Nyw2ICsxNTgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSB7IHJldHVybiB0
cnVlOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEltYWdlKEltYWdlT2JzZXJ2ZXIqID0g
MCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAppbmRleCA5NzRmMTI2MjBj
NjNhNWM2NmQyODRiNzkzN2I4OGZhNWU0ZjE2MWFiLi5hMzNiNWY3NWQ5YWYzNTkxYWYyZWNkYmQz
NTU1ZGM3OTljOTUwMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCkBA
IC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0JpdG1hcEltYWdl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFt
ZUhhc0FscGhhKCkgeyByZXR1cm4gIW1fbmF0aXZlSW1hZ2UuaXNPcGFxdWUoKTsgfQorCiAgICAg
dmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEludFNp
emUobV9uYXRpdmVJbWFnZS53aWR0aCgpLCBtX25hdGl2ZUltYWdlLmhlaWdodCgpKTsKQEAgLTcy
LDYgKzc0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZtX25hdGl2ZUltYWdlOwogICAg
IH0KIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xv
cigpCisgICAgeworICAgICAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS53aWR0aCgpICE9IDEgfHwg
bV9uYXRpdmVJbWFnZS5oZWlnaHQoKSAhPSAxOworICAgIH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCmluZGV4IDcwMjJjZGEzYzhhN2IyOTUxYWIxY2MyMWNiM2NhNjAzYzMxODFj
NzMuLjdlYzUzY2ZlZTQyZmMyMWZmNWYxMDVkOGRkYzA1MTQwNTk3ODQyMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDA4LDEzICs0MDgsOSBAQCBib29s
IFJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0CiAKICAgICAvLyBDaGVj
ayBmb3IgYml0bWFwIGltYWdlIHdpdGggYWxwaGEuCiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFn
ZVJlc291cmNlLT5pbWFnZSgpLmdldCgpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc0Jp
dG1hcEltYWdlKCkpCisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSB8
fCBpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKLSAgICBCaXRtYXBJbWFnZSogYml0bWFwSW1hZ2UgPSBzdGF0aWNfY2FzdDxCaXRt
YXBJbWFnZSo+KGltYWdlKTsKLSAgICBpZiAoYml0bWFwSW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0Fs
cGhhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>