<?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>90720</bug_id>
          
          <creation_ts>2012-07-06 23:37:01 -0700</creation_ts>
          <short_desc>[Mac] Do not perform 8 to 16bits characters conversion when converting a WTFString to NSString/CFString</short_desc>
          <delta_ts>2012-08-16 13:48:19 -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>WebKit Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92169</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>andersca</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>664346</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-06 23:37:01 -0700</bug_when>
    <thetext>Do not perform 8 to 16bits characters conversion when converting a WTFString to NSString/CFString.

&lt;rdar://problem/11822873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664348</commentid>
    <comment_count>1</comment_count>
      <attachid>151135</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-06 23:48:28 -0700</bug_when>
    <thetext>Created attachment 151135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664407</commentid>
    <comment_count>2</comment_count>
      <attachid>151135</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-07-07 13:20:52 -0700</bug_when>
    <thetext>Comment on attachment 151135
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WTF::String::createCFString): CFSTR() create static CFString, it is unecessary to retain it.

Is this true on Windows as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664409</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-07 13:29:54 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        (WTF::String::createCFString): CFSTR() create static CFString, it is unecessary to retain it.
&gt; 
&gt; Is this true on Windows as well?

I don&apos;t know for sure but it is used elsewhere without extra retain on Windows (e.g. LocalizedStringsWin.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675339</commentid>
    <comment_count>4</comment_count>
      <attachid>151135</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-07-22 13:03:05 -0700</bug_when>
    <thetext>Comment on attachment 151135
Patch

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

&gt; Source/WebCore/platform/text/cf/StringImplCF.cpp:139
&gt; +            return CFStringCreateWithBytes(0, reinterpret_cast&lt;const UInt8*&gt;(characters8()), m_length, kCFStringEncodingASCII, false);

I think this should be Latin-1 and not ASCII.

&gt; Source/WebCore/platform/text/cf/StringImplCF.cpp:150
&gt; +        string = CFStringCreateWithBytesNoCopy(allocator, reinterpret_cast&lt;const UInt8*&gt;(characters8()), m_length, kCFStringEncodingASCII, false, kCFAllocatorNull);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675915</commentid>
    <comment_count>5</comment_count>
      <attachid>151135</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 12:46:11 -0700</bug_when>
    <thetext>Comment on attachment 151135
Patch

&gt; &gt; Source/WebCore/platform/text/cf/StringImplCF.cpp:139
&gt; &gt; +            return CFStringCreateWithBytes(0, reinterpret_cast&lt;const UInt8*&gt;(characters8()), m_length, kCFStringEncodingASCII, false);
&gt; 
&gt; I think this should be Latin-1 and not ASCII.

Oops, you are right, that could have ended up badly. I&apos;ll update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676126</commentid>
    <comment_count>6</comment_count>
      <attachid>153888</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 16:00:35 -0700</bug_when>
    <thetext>Created attachment 153888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676148</commentid>
    <comment_count>7</comment_count>
      <attachid>153888</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-07-23 16:27:43 -0700</bug_when>
    <thetext>Comment on attachment 153888
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676162</commentid>
    <comment_count>8</comment_count>
      <attachid>153888</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-23 16:40:33 -0700</bug_when>
    <thetext>Comment on attachment 153888
Patch

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

&gt; Source/WebCore/platform/text/cf/StringImplCF.cpp:141
&gt; +    if (!m_length || !isMainThread()) {
&gt; +        if (is8Bit())
&gt; +            return CFStringCreateWithBytes(0, reinterpret_cast&lt;const UInt8*&gt;(characters8()), m_length, kCFStringEncodingISOLatin1, false);
&gt; +        return CFStringCreateWithCharacters(0, reinterpret_cast&lt;const UniChar*&gt;(characters16()), m_length);
&gt; +    }

Seems to me that since we’re already checking explicitly for m_length, we should just return CFSTR(&quot;&quot;) here for that case, rather than sharing code with the general non-main thread case and calling CFStringCreateWithBytes or CFStringCreateWithCharacters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676179</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 16:55:35 -0700</bug_when>
    <thetext>&gt; Seems to me that since we’re already checking explicitly for m_length, we should just return CFSTR(&quot;&quot;) here for that case, rather than sharing code with the general non-main thread case and calling CFStringCreateWithBytes or CFStringCreateWithCharacters.

The reasons I did not do that is m_length == 0 is very uncommon in practice. I did not want to add a special case for something that almost never happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677091</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-24 12:13:19 -0700</bug_when>
    <thetext>Committed r123504: &lt;http://trac.webkit.org/changeset/123504&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677247</commentid>
    <comment_count>11</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-07-24 15:18:43 -0700</bug_when>
    <thetext>This patch broke a bunch of text related layout tests in chromium mac debug


canvas/philip/tests/2d.text.draw.fill.basic.html
fast/css/font-face-default-font.html
fast/forms/text-control-intrinsic-widths.html
fast/lists/w3-css3-list-styles-fallback-style.html
fast/text/custom-font-data-crash2.html
fast/text/format-control.html
fast/writing-mode/text-orientation-basic.html
http/tests/misc/SVGFont-delayed-load.html
platform/chromium/virtual/gpu/canvas/philip/tests/2d.text.draw.fill.basic.html
platform/chromium/virtual/gpu/fast/canvas/text-globalAlpha.html
svg/W3C-SVG-1.1/text-fonts-01-t.svg
svg/W3C-SVG-1.1/text-intro-01-t.svg
svg/animations/animate-elem-02-t-drt.html
svg/custom/font-face-move.svg
svg/custom/svg-allowed-in-dashboard-object.html
svg/custom/svg-fonts-segmented.xhtml
svg/custom/use-multiple-on-nested-disallowed-font.html
svg/text/text-fonts-01-t.svg
svg/text/text-path-01-b.svg
tables/mozilla_expected_failures/bugs/bug89315.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677250</commentid>
    <comment_count>12</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-07-24 15:19:14 -0700</bug_when>
    <thetext>The failure is below:

crash log for DumpRenderTree (pid 4157):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: !StringWrapperCFAllocator::currentString
STDERR: /Volumes/data/b/build/slave/webkit-mac-latest-dbg/build/src/third_party/WebKit/Source/WebCore/WebCore.gyp/../platform/text/cf/StringImplCF.cpp(155) : CFStringRef WTF::StringImpl::createCFString()
STDERR: 1   0x3c1d6d0e WTF::StringImpl::createCFString()
STDERR: 2   0x3c1d974c WTF::StringImpl::operator NSString*()
STDERR: 3   0x3c1f32af WTF::String::operator NSString*() const
STDERR: 4   0x3c0f420c WTF::AtomicString::operator NSString*() const
STDERR: 5   0x3c0f3d48 WebCore::FontCache::createFontPlatformData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;)
STDERR: 6   0x3bfe1597 WebCore::FontCache::getCachedFontPlatformData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, bool)
STDERR: 7   0x3bfe1b37 WebCore::FontCache::getCachedFontData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, bool, WebCore::FontCache::ShouldRetain)
STDERR: 8   0x3bfe2c86 WebCore::FontCache::getFontData(WebCore::Font const&amp;, int&amp;, WebCore::FontSelector*)
STDERR: 9   0x3bffb002 WebCore::FontFallbackList::fontDataAt(WebCore::Font const*, unsigned int) const
STDERR: 10  0x3c0e32a7 WebCore::Font::fontDataAt(unsigned int) const
STDERR: 11  0x3bffd621 WebCore::Font::glyphDataAndPageForCharacter(int, bool, WebCore::FontDataVariant) const
STDERR: 12  0x3bffcef3 WebCore::Font::glyphDataForCharacter(int, bool, WebCore::FontDataVariant) const
STDERR: 13  0x3c06863d WebCore::WidthIterator::glyphDataForCharacter(int, bool, int, unsigned int&amp;)
STDERR: 14  0x3c06892c WebCore::WidthIterator::advance(int, WebCore::GlyphBuffer*)
STDERR: 15  0x3d8f8633 WebCore::SVGTextMetricsBuilder::advanceSimpleText()
STDERR: 16  0x3d8f8352 WebCore::SVGTextMetricsBuilder::advance()
STDERR: 17  0x3d8f8c2a WebCore::SVGTextMetricsBuilder::measureTextRenderer(WebCore::RenderSVGInlineText*, WebCore::MeasureTextData*)
STDERR: 18  0x3d8f900d WebCore::SVGTextMetricsBuilder::walkTree(WebCore::RenderObject*, WebCore::RenderSVGInlineText*, WebCore::MeasureTextData*)
STDERR: 19  0x3d8f9280 WebCore::SVGTextMetricsBuilder::buildMetricsAndLayoutAttributes(WebCore::RenderSVGText*, WebCore::RenderSVGInlineText*, WTF::HashMap&lt;unsigned int, WebCore::SVGCharacterData, WTF::IntHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WebCore::SVGCharacterData&gt; &gt;&amp;)
STDERR: 20  0x3d8ef253 WebCore::SVGTextLayoutAttributesBuilder::buildLayoutAttributesForForSubtree(WebCore::RenderSVGText*)
STDERR: 21  0x3d8b563b WebCore::RenderSVGText::layout()
STDERR: 22  0x3d8c8bd4 WebCore::SVGRenderSupport::layoutChildren(WebCore::RenderObject*, bool)
STDERR: 23  0x3d86c8e2 WebCore::RenderSVGContainer::layout()
STDERR: 24  0x3d8c8bd4 WebCore::SVGRenderSupport::layoutChildren(WebCore::RenderObject*, bool)
STDERR: 25  0x3d86c8e2 WebCore::RenderSVGContainer::layout()
STDERR: 26  0x3d8c8bd4 WebCore::SVGRenderSupport::layoutChildren(WebCore::RenderObject*, bool)
STDERR: 27  0x3d8a860c WebCore::RenderSVGRoot::layout()
STDERR: 28  0x3d07749d WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, WebCore::FractionalLayoutUnit&amp;, WebCore::FractionalLayoutUnit&amp;)
STDERR: 29  0x3d06db88 WebCore::RenderBlock::layoutBlockChildren(bool, WebCore::FractionalLayoutUnit&amp;)
STDERR: 30  0x3d06b147 WebCore::RenderBlock::layoutBlock(bool, WebCore::FractionalLayoutUnit)
STDERR: 31  0x3d06a165 WebCore::RenderBlock::layout()
STDERR: [4157:-1602484928:5699341254117:ERROR:process_util_posix.cc(143)] Received signal 11
STDERR: 	0   DumpRenderTree                      0x3a4807cf base::debug::StackTrace::StackTrace() + 63
STDERR: 	1   DumpRenderTree                      0x3a48076b base::debug::StackTrace::StackTrace() + 43
STDERR: 	2   DumpRenderTree                      0x3a536d27 base::(anonymous namespace)::StackDumpSignalHandler(int, __siginfo*, __darwin_ucontext*) + 295
STDERR: 	3   libSystem.B.dylib                   0x9539405b _sigtramp + 43
STDERR: 	4   ???                                 0xffffffff 0x0 + 4294967295
STDERR: 	5   DumpRenderTree                      0x3c1d974c WTF::StringImpl::operator NSString*() + 44
STDERR: 	6   DumpRenderTree                      0x3c1f32af WTF::String::operator NSString*() const + 95
STDERR: 	7   DumpRenderTree                      0x3c0f420c WTF::AtomicString::operator NSString*() const + 44
STDERR: 	8   DumpRenderTree                      0x3c0f3d48 WebCore::FontCache::createFontPlatformData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;) + 152
STDERR: 	9   DumpRenderTree                      0x3bfe1597 WebCore::FontCache::getCachedFontPlatformData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, bool) + 567
STDERR: 	10  DumpRenderTree                      0x3bfe1b37 WebCore::FontCache::getCachedFontData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, bool, WebCore::FontCache::ShouldRetain) + 103
STDERR: 	11  DumpRenderTree                      0x3bfe2c86 WebCore::FontCache::getFontData(WebCore::Font const&amp;, int&amp;, WebCore::FontSelector*) + 438
STDERR: 	12  DumpRenderTree                      0x3bffb002 WebCore::FontFallbackList::fontDataAt(WebCore::Font const*, unsigned int) const + 466
STDERR: 	13  DumpRenderTree                      0x3c0e32a7 WebCore::Font::fontDataAt(unsigned int) const + 199
STDERR: 	14  DumpRenderTree                      0x3bffd621 WebCore::Font::glyphDataAndPageForCharacter(int, bool, WebCore::FontDataVariant) const + 1777
STDERR: 	15  DumpRenderTree                      0x3bffcef3 WebCore::Font::glyphDataForCharacter(int, bool, WebCore::FontDataVariant) const + 99
STDERR: 	16  DumpRenderTree                      0x3c06863d WebCore::WidthIterator::glyphDataForCharacter(int, bool, int, unsigned int&amp;) + 333
STDERR: 	17  DumpRenderTree                      0x3c06892c WebCore::WidthIterator::advance(int, WebCore::GlyphBuffer*) + 684
STDERR: 	18  DumpRenderTree                      0x3d8f8633 WebCore::SVGTextMetricsBuilder::advanceSimpleText() + 99
STDERR: 	19  DumpRenderTree                      0x3d8f8352 WebCore::SVGTextMetricsBuilder::advance() + 146
STDERR: 	20  DumpRenderTree                      0x3d8f8c2a WebCore::SVGTextMetricsBuilder::measureTextRenderer(WebCore::RenderSVGInlineText*, WebCore::MeasureTextData*) + 330
STDERR: 	21  DumpRenderTree                      0x3d8f900d WebCore::SVGTextMetricsBuilder::walkTree(WebCore::RenderObject*, WebCore::RenderSVGInlineText*, WebCore::MeasureTextData*) + 221
STDERR: 	22  DumpRenderTree                      0x3d8f9280 WebCore::SVGTextMetricsBuilder::buildMetricsAndLayoutAttributes(WebCore::RenderSVGText*, WebCore::RenderSVGInlineText*, WTF::HashMap&lt;unsigned int, WebCore::SVGCharacterData, WTF::IntHash&lt;unsigned int&gt;, WTF::HashTraits&lt;unsigned int&gt;, WTF::HashTraits&lt;WebCore::SVGCharacterData&gt; &gt;&amp;) + 208
STDERR: 	23  DumpRenderTree                      0x3d8ef253 WebCore::SVGTextLayoutAttributesBuilder::buildLayoutAttributesForForSubtree(WebCore::RenderSVGText*) + 323
STDERR: 	24  DumpRenderTree                      0x3d8b563b WebCore::RenderSVGText::layout() + 619
STDERR: 	25  DumpRenderTree                      0x3d8c8bd4 WebCore::SVGRenderSupport::layoutChildren(WebCore::RenderObject*, bool) + 548
STDERR: 	26  DumpRenderTree                      0x3d86c8e2 WebCore::RenderSVGContainer::layout() + 466
STDERR: 	27  DumpRenderTree                      0x3d8c8bd4 WebCore::SVGRenderSupport::layoutChildren(WebCore::RenderObject*, bool) + 548
STDERR: 	28  DumpRenderTree                      0x3d86c8e2 WebCore::RenderSVGContainer::layout() + 466
STDERR: 	29  DumpRenderTree                      0x3d8c8bd4 WebCore::SVGRenderSupport::layoutChildren(WebCore::RenderObject*, bool) + 548
STDERR: 	30  DumpRenderTree                      0x3d8a860c WebCore::RenderSVGRoot::layout() + 652
STDERR: 	31  DumpRenderTree                      0x3d07749d WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, WebCore::FractionalLayoutUnit&amp;, WebCore::FractionalLayoutUnit&amp;) + 1117
STDERR: 	32  DumpRenderTree                      0x3d06db88 WebCore::RenderBlock::layoutBlockChildren(bool, WebCore::FractionalLayoutUnit&amp;) + 1560
STDERR: 	33  DumpRenderTree                      0x3d06b147 WebCore::RenderBlock::layoutBlock(bool, WebCore::FractionalLayoutUnit) + 1991
STDERR: 	34  DumpRenderTree                      0x3d06a165 WebCore::RenderBlock::layout() + 149
STDERR: 	35  DumpRenderTree                      0x3d315dbb WebCore::RenderView::layout() + 1211
STDERR: 	36  DumpRenderTree                      0x3ce919cd WebCore::FrameView::layout(bool) + 3677
STDERR: 	37  DumpRenderTree                      0x3a0ed9c6 WebCore::Document::updateLayout() + 326
STDERR: 	38  DumpRenderTree                      0x3a0edaea WebCore::Document::updateLayoutIgnorePendingStylesheets() + 250
STDERR: 	39  DumpRenderTree                      0x3ca67448 WebCore::Editor::Command::execute(WTF::String const&amp;, WebCore::Event*) const + 184
STDERR: 	40  DumpRenderTree                      0x3a0fa433 WebCore::Document::execCommand(WTF::String const&amp;, bool, WTF::String const&amp;) + 131
STDERR: 	41  DumpRenderTree                      0x3d6cb31e WebCore::DocumentV8Internal::execCommandCallback(v8::Arguments const&amp;) + 750
STDERR: 	42  DumpRenderTree                      0x3ad99ff6 v8::internal::MaybeObject* v8::internal::HandleApiCallHelper&lt;false&gt;(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*) + 1318
STDERR: 	43  DumpRenderTree                      0x3ad99a9a v8::internal::Builtin_Impl_HandleApiCall(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*) + 74
STDERR: 	44  DumpRenderTree                      0x3ad8fdac v8::internal::Builtin_HandleApiCall(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*) + 172
STDERR: 	45  ???                                 0x5ea0a336 0x0 + 1587585846
STDERR: ax: bbadbeef, bx: 135660, cx: 1e6da69, dx: 1e6da69
STDERR: di: 3e34ef50, si: 3e34ef22, bp: bfffa0b8, sp: bfffa050, ss: 23, flags: 10286
STDERR: ip: 3c1d6d18, cs: 1b, ds: 23, es: 23, fs: 0, gs: f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677255</commentid>
    <comment_count>13</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-07-24 15:20:21 -0700</bug_when>
    <thetext>I can&apos;t reach you at irc, so I am going to roll this out for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677262</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 15:24:36 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 92169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696839</commentid>
    <comment_count>15</comment_count>
      <attachid>158731</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-16 00:33:41 -0700</bug_when>
    <thetext>Created attachment 158731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696844</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-16 00:35:30 -0700</bug_when>
    <thetext>&gt; STDERR: ASSERTION FAILED: !StringWrapperCFAllocator::currentString

It turns out CFStringCreateWithBytesNoCopy() is even more awesome than expected :)

In some cases, the function reuses an existing string instead of allocating a new one. In this case, we never use the allocator and currentString is not cleared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697192</commentid>
    <comment_count>17</comment_count>
      <attachid>158731</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-16 09:04:50 -0700</bug_when>
    <thetext>Comment on attachment 158731
Patch

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

r=me

&gt; Source/WebCore/platform/text/cf/StringImplCF.cpp:153
&gt; +        ASSERT(!StringWrapperCFAllocator::currentString);

Seems like you should remove this ASSERT too. CFStringCreateWithCharactersNoCopy might implement the same optimization -- now, or in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697374</commentid>
    <comment_count>18</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-16 12:42:31 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/text/cf/StringImplCF.cpp:153
&gt; &gt; +        ASSERT(!StringWrapperCFAllocator::currentString);
&gt; 
&gt; Seems like you should remove this ASSERT too. CFStringCreateWithCharactersNoCopy might implement the same optimization -- now, or in the future.

Yep, I think that is a fair assumption. This assertion is too restrictive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697476</commentid>
    <comment_count>19</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-16 13:48:19 -0700</bug_when>
    <thetext>Committed r125809: &lt;http://trac.webkit.org/changeset/125809&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151135</attachid>
            <date>2012-07-06 23:48:28 -0700</date>
            <delta_ts>2012-07-23 16:00:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90720-20120706234827.patch</filename>
            <type>text/plain</type>
            <size>3984</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk0NTEwNjIwZDdlNzg4
NWQ0MDY2YWM1NGVkOWE3YzFkNTEyZTYwNi4uODIxYzQ0NDllMTQxN2ZiNjYzYTUxNWQ5NzM2NWI1
MjU3NTk1Yjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA3LTA2ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIERvIG5vdCBwZXJm
b3JtIDggdG8gMTZiaXRzIGNoYXJhY3RlcnMgY29udmVyc2lvbiB3aGVuIGNvbnZlcnRpbmcgYSBX
VEZTdHJpbmcgdG8gTlNTdHJpbmcvQ0ZTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW4gbW9zdCBTdHJpbmcgdG8gQ0ZTdHJpbmcgY29udmVyc2lv
biwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHRoZSAiTm9Db3B5IiBjb25zdHJ1Y3RvciBhbmQg
aGF2ZQorICAgICAgICBhIHJlbGF0aXZlbHkgY2hlYXAgY29udmVyc2lvbiBmcm9tIFdURjo6U3Ry
aW5nIHRvIENGU3RyaW5nLgorCisgICAgICAgIFdoZW4gdGhlIFN0cmluZyBpcyA4IGJpdHMsIGl0
IHdhcyBjb252ZXJ0ZWQgdG8gMTYgYml0cyBieSBnZXREYXRhMTZTbG93Q2FzZSgpIGJlY2F1c2Ug
b2YgdGhlIGNhbGwKKyAgICAgICAgdG8gU3RyaW5nOjpjaGFyYWN0ZXJzKCkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGEgcGF0aCBmb3IgY3JlYXRpbmcgYSBDRlN0cmluZyBmcm9tIGEgOGJp
dHMgc3RyaW5nIHVzaW5nIENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzLgorCisgICAgICAgIFRoaXMg
aXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQv
Y2YvU3RyaW5nQ0YuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKTog
Q0ZTVFIoKSBjcmVhdGUgc3RhdGljIENGU3RyaW5nLCBpdCBpcyB1bmVjZXNzYXJ5IHRvIHJldGFp
biBpdC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHA6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKTogVGhlIGxvZ2ljIHRvIGF2b2lk
IHRoZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgaGFzIGFsc28gYmVlbiBzaW1wbGlmaWVkLgor
ICAgICAgICBUaGUgYWxsb2NhdG9yIGNyZWF0aW9uIGlzIG5vdyBjbG9zZXIgdG8gd2hlcmUgaXQg
aXMgdXNlZnVsLgorCiAyMDEyLTA3LTA2ICBMYXVybyBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9z
c2Eub3JnPgogCiAgICAgICAgIFtRdF0gQXZvaWQgZGVlcCBjb3B5IG9mIFFJbWFnZSBpbiBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9jZi9TdHJpbmdDRi5jcHAKaW5kZXggMGExOTI4Yjg3MTEyMzBjYjUxZTM1NWEzYjU0NGZj
MDIzODNhZmZjZi4uNDVmY2NhODEzNWRlYjVlZjgzMmM0NjFmOTc0MzEyZDkyNjIyODliMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgU3RyaW5nOjpTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogQ0ZTdHJpbmdSZWYgU3Ry
aW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ltcGwpCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIiIpKSk7Cisg
ICAgICAgIHJldHVybiBDRlNUUigiIik7CiAKICAgICByZXR1cm4gbV9pbXBsLT5jcmVhdGVDRlN0
cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9T
dHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJ
bXBsQ0YuY3BwCmluZGV4IDE5ZmVkODQ5ZmQ4MDY0ZWMwZjUwOTA5ZGY1ZjVhODdhNzFhNTU1YTUu
LmRkODY1NmRlOGY1YzJjYTFkNDA5ZGJjOGIyNTNmMjUwNTcyNTM4OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKQEAgLTEzNCwxNSAr
MTM0LDIyIEBAIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogCiBDRlN0cmlu
Z1JlZiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiB7Ci0gICAgQ0ZBbGxvY2F0b3JSZWYg
YWxsb2NhdG9yID0gKG1fbGVuZ3RoICYmIGlzTWFpblRocmVhZCgpKSA/IFN0cmluZ1dyYXBwZXJD
RkFsbG9jYXRvcjo6YWxsb2NhdG9yKCkgOiAwOwotICAgIGlmICghYWxsb2NhdG9yKQotICAgICAg
ICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVuaUNoYXIqPihjaGFyYWN0ZXJzKCkpLCBtX2xlbmd0aCk7CisgICAgaWYgKCFtX2xl
bmd0aCB8fCAhaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKGlzOEJpdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5n
QVNDSUksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBt
X2xlbmd0aCk7CisgICAgfQorICAgIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciA9IFN0cmluZ1dy
YXBwZXJDRkFsbG9jYXRvcjo6YWxsb2NhdG9yKCk7CiAKICAgICAvLyBQdXQgcG9pbnRlciB0byB0
aGUgU3RyaW5nSW1wbCBpbiBhIGdsb2JhbCBzbyB0aGUgYWxsb2NhdG9yIGNhbiBzdG9yZSBpdCB3
aXRoIHRoZSBDRlN0cmluZy4KICAgICBBU1NFUlQoIVN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6
Y3VycmVudFN0cmluZyk7CiAgICAgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3Ry
aW5nID0gdGhpczsKIAotICAgIENGU3RyaW5nUmVmIHN0cmluZyA9IENGU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNo
YXIqPihjaGFyYWN0ZXJzKCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCk7CisgICAgQ0ZT
dHJpbmdSZWYgc3RyaW5nOworICAgIGlmIChpczhCaXQoKSkKKyAgICAgICAgc3RyaW5nID0gQ0ZT
dHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNv
bnN0IFVJbnQ4Kj4oY2hhcmFjdGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0FT
Q0lJLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCk7CisgICAgZWxzZQorICAgICAgICBzdHJpbmcg
PSBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxs
b2NhdG9yTnVsbCk7CiAKICAgICAvLyBUaGUgYWxsb2NhdG9yIGNsZWFyZWQgdGhlIGdsb2JhbCB3
aGVuIGl0IHJlYWQgaXQsIGJ1dCBhbHNvIGNsZWFyIGl0IGhlcmUganVzdCBpbiBjYXNlLgogICAg
IEFTU0VSVCghU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153888</attachid>
            <date>2012-07-23 16:00:35 -0700</date>
            <delta_ts>2012-08-16 00:33:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90720-20120723160027.patch</filename>
            <type>text/plain</type>
            <size>4048</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ0ZjAyZTRhODUwNjMx
ZDg5OGYxMGQwZThiMjI5YTI0YjBkMjkzOC4uYTNiOTA2YTdhNjUwODVkNzRkNDkxMTVkNTkxZGUw
ZjU1MjFmN2VjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA3LTIzICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIERvIG5vdCBwZXJm
b3JtIDggdG8gMTZiaXRzIGNoYXJhY3RlcnMgY29udmVyc2lvbiB3aGVuIGNvbnZlcnRpbmcgYSBX
VEZTdHJpbmcgdG8gTlNTdHJpbmcvQ0ZTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW4gbW9zdCBTdHJpbmcgdG8gQ0ZTdHJpbmcgY29udmVyc2lv
biwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHRoZSAiTm9Db3B5IiBjb25zdHJ1Y3RvciBhbmQg
aGF2ZQorICAgICAgICBhIHJlbGF0aXZlbHkgY2hlYXAgY29udmVyc2lvbiBmcm9tIFdURjo6U3Ry
aW5nIHRvIENGU3RyaW5nLgorCisgICAgICAgIFdoZW4gdGhlIFN0cmluZyBpcyA4IGJpdHMsIGl0
IHdhcyBjb252ZXJ0ZWQgdG8gMTYgYml0cyBieSBnZXREYXRhMTZTbG93Q2FzZSgpIGJlY2F1c2Ug
b2YgdGhlIGNhbGwKKyAgICAgICAgdG8gU3RyaW5nOjpjaGFyYWN0ZXJzKCkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGEgcGF0aCBmb3IgY3JlYXRpbmcgYSBDRlN0cmluZyBmcm9tIGEgOGJp
dHMgc3RyaW5nIHVzaW5nIENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzLgorCisgICAgICAgIFRoaXMg
aXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQv
Y2YvU3RyaW5nQ0YuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKTog
Q0ZTVFIoKSBjcmVhdGUgc3RhdGljIENGU3RyaW5nLCBpdCBpcyB1bmVjZXNzYXJ5IHRvIHJldGFp
biBpdC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHA6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKTogVGhlIGxvZ2ljIHRvIGF2b2lk
IHRoZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgaGFzIGFsc28gYmVlbiBzaW1wbGlmaWVkLgor
ICAgICAgICBUaGUgYWxsb2NhdG9yIGNyZWF0aW9uIGlzIG5vdyBjbG9zZXIgdG8gd2hlcmUgaXQg
aXMgdXNlZnVsLgorCiAyMDEyLTA3LTIwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBw
bGUuY29tPiAmJiBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUXVhbGlmaWVkTmFtZSdzIEhhc2hTZXQgc2hvdWxkIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBh
dCBsZWFzdCBhbGwgdGhlIHN0YXRpYyBuYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2NmL1N0cmluZ0NGLmNwcAppbmRleCAwYTE5MjhiODcxMTIzMGNiNTFlMzU1YTNiNTQ0ZmMw
MjM4M2FmZmNmLi40NWZjY2E4MTM1ZGViNWVmODMyYzQ2MWY5NzQzMTJkOTI2MjI4OWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBTdHJpbmc6OlN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiBDRlN0cmluZ1JlZiBTdHJp
bmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihDRlNUUigiIikpKTsKKyAg
ICAgICAgcmV0dXJuIENGU1RSKCIiKTsKIAogICAgIHJldHVybiBtX2ltcGwtPmNyZWF0ZUNGU3Ry
aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0lt
cGxDRi5jcHAKaW5kZXggMTlmZWQ4NDlmZDgwNjRlYzBmNTA5MDlkZjVmNWE4N2E3MWE1NTVhNS4u
OTJkZTc4YmZjMWJhYzhjOTUxNmU1OGU2ZDE5N2MyYmZlNjU5YzgxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTM0LDE1ICsx
MzQsMjIgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAKIENGU3RyaW5n
UmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKIHsKLSAgICBDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IgPSAobV9sZW5ndGggJiYgaXNNYWluVGhyZWFkKCkpID8gU3RyaW5nV3JhcHBlckNG
QWxsb2NhdG9yOjphbGxvY2F0b3IoKSA6IDA7Ci0gICAgaWYgKCFhbGxvY2F0b3IpCi0gICAgICAg
IHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMoKSksIG1fbGVuZ3RoKTsKKyAgICBpZiAoIW1fbGVu
Z3RoIHx8ICFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBpZiAoaXM4Qml0KCkpCisgICAgICAg
ICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KGNoYXJhY3RlcnM4KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJ
U09MYXRpbjEsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkp
LCBtX2xlbmd0aCk7CisgICAgfQorICAgIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciA9IFN0cmlu
Z1dyYXBwZXJDRkFsbG9jYXRvcjo6YWxsb2NhdG9yKCk7CiAKICAgICAvLyBQdXQgcG9pbnRlciB0
byB0aGUgU3RyaW5nSW1wbCBpbiBhIGdsb2JhbCBzbyB0aGUgYWxsb2NhdG9yIGNhbiBzdG9yZSBp
dCB3aXRoIHRoZSBDRlN0cmluZy4KICAgICBBU1NFUlQoIVN0cmluZ1dyYXBwZXJDRkFsbG9jYXRv
cjo6Y3VycmVudFN0cmluZyk7CiAgICAgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50
U3RyaW5nID0gdGhpczsKIAotICAgIENGU3RyaW5nUmVmIHN0cmluZyA9IENGU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVu
aUNoYXIqPihjaGFyYWN0ZXJzKCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCk7CisgICAg
Q0ZTdHJpbmdSZWYgc3RyaW5nOworICAgIGlmIChpczhCaXQoKSkKKyAgICAgICAgc3RyaW5nID0g
Q0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoYWxsb2NhdG9yLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4oY2hhcmFjdGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpOworICAgIGVsc2UKKyAgICAgICAg
c3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weShhbGxvY2F0b3IsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgs
IGtDRkFsbG9jYXRvck51bGwpOwogCiAgICAgLy8gVGhlIGFsbG9jYXRvciBjbGVhcmVkIHRoZSBn
bG9iYWwgd2hlbiBpdCByZWFkIGl0LCBidXQgYWxzbyBjbGVhciBpdCBoZXJlIGp1c3QgaW4gY2Fz
ZS4KICAgICBBU1NFUlQoIVN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158731</attachid>
            <date>2012-08-16 00:33:41 -0700</date>
            <delta_ts>2012-08-16 09:04:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90720-20120816003307.patch</filename>
            <type>text/plain</type>
            <size>4543</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFlM2JhMzcxMDZlMDMz
ZDQ1MjU4NGYxNDU3MjVmYTI3Y2JlZTg3OS4uMjk5YjNmZDIzYWE4Y2VhNDA2Y2IwZTExZjVjZjI1
MDE2MWY1MjRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA4LTE1ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIERvIG5vdCBwZXJm
b3JtIDggdG8gMTZiaXRzIGNoYXJhY3RlcnMgY29udmVyc2lvbiB3aGVuIGNvbnZlcnRpbmcgYSBX
VEZTdHJpbmcgdG8gTlNTdHJpbmcvQ0ZTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCisKKyAgICAgICAgSW4gbW9zdCBTdHJpbmcgdG8gQ0ZTdHJpbmcgY29udmVyc2lv
biwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHRoZSAiTm9Db3B5IiBjb25zdHJ1Y3RvciBhbmQg
aGF2ZQorICAgICAgICBhIHJlbGF0aXZlbHkgY2hlYXAgY29udmVyc2lvbiBmcm9tIFdURjo6U3Ry
aW5nIHRvIENGU3RyaW5nLgorCisgICAgICAgIFdoZW4gdGhlIFN0cmluZyBpcyA4IGJpdHMsIGl0
IHdhcyBjb252ZXJ0ZWQgdG8gMTYgYml0cyBieSBnZXREYXRhMTZTbG93Q2FzZSgpIGJlY2F1c2Ug
b2YgdGhlIGNhbGwKKyAgICAgICAgdG8gU3RyaW5nOjpjaGFyYWN0ZXJzKCkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGEgcGF0aCBmb3IgY3JlYXRpbmcgYSBDRlN0cmluZyBmcm9tIGEgOGJp
dHMgc3RyaW5nIHVzaW5nIENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzLgorCisgICAgICAgIFRoaXMg
aXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQv
Y2YvU3RyaW5nQ0YuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKTog
Q0ZTVFIoKSBjcmVhdGUgc3RhdGljIENGU3RyaW5nLCBpdCBpcyB1bmVjZXNzYXJ5IHRvIHJldGFp
biBpdC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHA6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKTogVGhlIGxvZ2ljIHRvIGF2b2lk
IHRoZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgaGFzIGFsc28gYmVlbiBzaW1wbGlmaWVkLgor
ICAgICAgICBUaGUgYWxsb2NhdG9yIGNyZWF0aW9uIGlzIG5vdyBjbG9zZXIgdG8gd2hlcmUgaXQg
aXMgdXNlZnVsLgorCisgICAgICAgIFRoZSBmdW5jdGlvbiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRl
c05vQ29weSgpIGRvZXMgbm90IG5lY2Vzc2FyaWxseSBhbGxvY2F0ZSBhIG5ldyBzdHJpbmcsIGl0
IGNhbiByZXVzZQorICAgICAgICBleGlzdGluZyBzdHJpbmdzLiBJbiB0aG9zZSBjYXNlcywgdGhl
IGFsbG9jYXRvciBpcyBub3QgdXNlZC4gRm9yIHRoYXQgcmVhc29uLCB0aGUgYXNzZXJ0aW9uIHJl
Z2FyZGluZworICAgICAgICBjdXJyZW50U3RyaW5nIGlzIG1vdmVkIHRvIHRoZSBicmFuY2ggdGhh
dCBhbHdheXMgYWxsb2NhdGUgbmV3IHN0cmluZ3MuCisKIDIwMTItMDgtMTUgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBWb2lkQ2FsbGJhY2sgc2hvdWxkIG5vdCBi
ZSBhIHNwZWNpYWwgc25vd2ZsYWtlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2NmL1N0cmluZ0NGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2Yv
U3RyaW5nQ0YuY3BwCmluZGV4IDBhMTkyOGI4NzExMjMwY2I1MWUzNTVhM2I1NDRmYzAyMzgzYWZm
Y2YuLjQ1ZmNjYTgxMzVkZWI1ZWY4MzJjNDYxZjk3NDMxMmQ5MjYyMjg5YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IFN0cmluZzo6U3RyaW5nKENGU3RyaW5nUmVmIHN0cikKIENGU3RyaW5nUmVmIFN0cmluZzo6Y3Jl
YXRlQ0ZTdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9pbXBsKQotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCIiKSkpOworICAgICAgICBy
ZXR1cm4gQ0ZTVFIoIiIpOwogCiAgICAgcmV0dXJuIG1faW1wbC0+Y3JlYXRlQ0ZTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNw
cAppbmRleCAxOWZlZDg0OWZkODA2NGVjMGY1MDkwOWRmNWY1YTg3YTcxYTU1NWE1Li44OTQwMmJm
NTM2N2Y4MTg1ZTEzMTZkMDk5OTU3NDkxNDM3MTllZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCkBAIC0xMzQsMTggKzEzNCwyNSBA
QCBuYW1lc3BhY2UgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKIAogQ0ZTdHJpbmdSZWYgU3Ry
aW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewotICAgIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciA9IChtX2xlbmd0aCAmJiBpc01haW5UaHJlYWQoKSkgPyBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0
b3I6OmFsbG9jYXRvcigpIDogMDsKLSAgICBpZiAoIWFsbG9jYXRvcikKLSAgICAgICAgcmV0dXJu
IENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
bmlDaGFyKj4oY2hhcmFjdGVycygpKSwgbV9sZW5ndGgpOworICAgIGlmICghbV9sZW5ndGggfHwg
IWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmIChpczhCaXQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4oY2hhcmFjdGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGlu
MSwgZmFsc2UpOworICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjaGFyYWN0ZXJzMTYoKSksIG1fbGVu
Z3RoKTsKKyAgICB9CisgICAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yID0gU3RyaW5nV3JhcHBl
ckNGQWxsb2NhdG9yOjphbGxvY2F0b3IoKTsKIAogICAgIC8vIFB1dCBwb2ludGVyIHRvIHRoZSBT
dHJpbmdJbXBsIGluIGEgZ2xvYmFsIHNvIHRoZSBhbGxvY2F0b3IgY2FuIHN0b3JlIGl0IHdpdGgg
dGhlIENGU3RyaW5nLgogICAgIEFTU0VSVCghU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpjdXJy
ZW50U3RyaW5nKTsKICAgICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcg
PSB0aGlzOwogCi0gICAgQ0ZTdHJpbmdSZWYgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+
KGNoYXJhY3RlcnMoKSksIG1fbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLQotICAgIC8vIFRo
ZSBhbGxvY2F0b3IgY2xlYXJlZCB0aGUgZ2xvYmFsIHdoZW4gaXQgcmVhZCBpdCwgYnV0IGFsc28g
Y2xlYXIgaXQgaGVyZSBqdXN0IGluIGNhc2UuCi0gICAgQVNTRVJUKCFTdHJpbmdXcmFwcGVyQ0ZB
bGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcpOworICAgIENGU3RyaW5nUmVmIHN0cmluZzsKKyAgICBp
ZiAoaXM4Qml0KCkpCisgICAgICAgIHN0cmluZyA9IENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9D
b3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNoYXJhY3RlcnM4
KCkpLCBtX2xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlLCBrQ0ZBbGxv
Y2F0b3JOdWxsKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVyc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5p
Q2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpOworICAg
ICAgICBBU1NFUlQoIVN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyk7Cisg
ICAgfQorICAgIC8vIENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5IG1pZ2h0IG5vdCBoYXZl
IHRvIGFsbG9jYXRlIGFueXRoaW5nLCBjbGVhciBjdXJyZW50U3RyaW5nIGluIGNhc2Ugd2UgZGlk
IG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCiAgICAgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjpj
dXJyZW50U3RyaW5nID0gMDsKIAogICAgIHJldHVybiBzdHJpbmc7Cg==
</data>
<flag name="review"
          id="168917"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>