<?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>113954</bug_id>
          
          <creation_ts>2013-04-04 13:24:55 -0700</creation_ts>
          <short_desc>Regression(r147639) Causes assertion hit in HashTable</short_desc>
          <delta_ts>2013-04-04 16:55:20 -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>WebCore 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111939</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>869311</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 13:24:55 -0700</bug_when>
    <thetext>After &lt;http://trac.webkit.org/changeset/147639&gt;, we see the following crashes on the EFL bots:

ASSERTION FAILED: m_table
/home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WTF/wtf/HashTable.h(210) : void WTF::HashTableConstIterator&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::checkValidity() const [with Key = WebCore::FontPlatformDataCacheKey, Value = WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, HashFunctions = WebCore::FontPlatformDataCacheKeyHash, Traits = WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, KeyTraits = WebCore::FontPlatformDataCacheKeyTraits]
1   0x2b82fefeb70f WTF::HashTableConstIterator&lt;WebCore::FontPlatformDataCacheKey, WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyHash, WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyTraits&gt;::checkValidity() const
2   0x2b82fefe90d8 WTF::HashTableConstIterator&lt;WebCore::FontPlatformDataCacheKey, WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyHash, WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyTraits&gt;::get() const
3   0x2b82fefe644c WTF::HashTableIterator&lt;WebCore::FontPlatformDataCacheKey, WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyHash, WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyTraits&gt;::get() const
4   0x2b82fefe4928 WTF::HashTableIterator&lt;WebCore::FontPlatformDataCacheKey, WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyHash, WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyTraits&gt;::operator-&gt;() const
5   0x2b82fefe2cec WebCore::FontCache::getCachedFontPlatformData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, bool)
6   0x2b82fefe2d68 WebCore::FontCache::getCachedFontData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, bool, WebCore::FontCache::ShouldRetain)
7   0x2b82fe72406c
8   0x2b82fe724494 WebCore::CSSFontSelector::getFontData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;)
9   0x2b82fefe39d8 WebCore::FontCache::getFontData(WebCore::Font const&amp;, int&amp;, WebCore::FontSelector*)
10  0x2b82feff00cb WebCore::FontFallbackList::fontDataAt(WebCore::Font const*, unsigned int) const
11  0x2b82febc5384 WebCore::FontFallbackList::primaryFontData(WebCore::Font const*) const
12  0x2b82febc5335 WebCore::FontFallbackList::primarySimpleFontData(WebCore::Font const*)
13  0x2b82febc545a WebCore::Font::primaryFont() const
14  0x2b82febc53ac WebCore::Font::fontMetrics() const
15  0x2b82ff346c86 WebCore::RenderStyle::fontMetrics() const
16  0x2b82ff346f72 WebCore::RenderStyle::computedLineHeight(WebCore::RenderView*) const
17  0x2b82ff156de6 WebCore::RenderBlock::lineHeight(bool, WebCore::LineDirectionMode, WebCore::LinePositionMode) const
18  0x2b82ff18a4e3
19  0x2b82ff19bd86 WebCore::LineWidth::updateAvailableWidth(WebCore::LayoutUnit)
20  0x2b82ff19bba6 WebCore::LineWidth::LineWidth(WebCore::RenderBlock*, bool, WebCore::IndentTextOrNot)
21  0x2b82ff19542a WebCore::RenderBlock::LineBreaker::nextSegmentBreak(WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::LineInfo&amp;, WebCore::RenderBlock::RenderTextInfo&amp;, WebCore::RenderBlock::FloatingObject*, unsigned int, WTF::Vector&lt;WebCore::WordMeasurement, 64ul&gt;&amp;)
22  0x2b82ff194f65 WebCore::RenderBlock::LineBreaker::nextLineBreak(WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::LineInfo&amp;, WebCore::RenderBlock::RenderTextInfo&amp;, WebCore::RenderBlock::FloatingObject*, unsigned int, WTF::Vector&lt;WebCore::WordMeasurement, 64ul&gt;&amp;)
23  0x2b82ff18fb07 WebCore::RenderBlock::layoutRunsAndFloatsInRange(WebCore::LineLayoutState&amp;, WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::InlineIterator const&amp;, WebCore::BidiStatus const&amp;, unsigned int)
24  0x2b82ff18f3fd WebCore::RenderBlock::layoutRunsAndFloats(WebCore::LineLayoutState&amp;, bool)
25  0x2b82ff191dcc WebCore::RenderBlock::layoutInlineChildren(bool, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;)
26  0x2b82ff13bb95 WebCore::RenderBlock::layoutBlock(bool, WebCore::LayoutUnit)
27  0x2b82ff13b143 WebCore::RenderBlock::layout()
28  0x2b82ff14092e WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;)
29  0x2b82ff14052a WebCore::RenderBlock::layoutBlockChildren(bool, WebCore::LayoutUnit&amp;)
30  0x2b82ff13bbb6 WebCore::RenderBlock::layoutBlock(bool, WebCore::LayoutUnit)
31  0x2b82ff13b143 WebCore::RenderBlock::layout()

gdb backtrace:
http://pastebin.com/dVhBAXhy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869315</commentid>
    <comment_count>1</comment_count>
      <attachid>196514</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 13:33:01 -0700</bug_when>
    <thetext>Created attachment 196514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869325</commentid>
    <comment_count>2</comment_count>
      <attachid>196514</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-04 13:42:12 -0700</bug_when>
    <thetext>Comment on attachment 196514
Patch

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

This is not making recursive use safer:

&gt; Source/WebCore/platform/graphics/FontCache.cpp:207
&gt; +    OwnPtr&lt;FontPlatformData&gt;&amp; value = result.iterator-&gt;value;

This reference will be okay in the majority of cases.
But...if the table grows or shrink, you are no pointing to the right object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869361</commentid>
    <comment_count>3</comment_count>
      <attachid>196527</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 14:18:52 -0700</bug_when>
    <thetext>Created attachment 196527
Patch

Ok, now I lookup the key in the hash table again after the recursive call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869363</commentid>
    <comment_count>4</comment_count>
      <attachid>196528</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 14:21:37 -0700</bug_when>
    <thetext>Created attachment 196528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869379</commentid>
    <comment_count>5</comment_count>
      <attachid>196532</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 14:50:21 -0700</bug_when>
    <thetext>Created attachment 196532
Patch

Found much simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869382</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 14:53:41 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=196532) [details]
&gt; Patch
&gt; 
&gt; Found much simpler.

No, it is not correct. Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869388</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-04 14:58:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Found much simpler.
&gt; 
&gt; No, it is not correct. Sorry.

No, it is not  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869432</commentid>
    <comment_count>8</comment_count>
      <attachid>196550</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 16:14:52 -0700</bug_when>
    <thetext>Created attachment 196550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869449</commentid>
    <comment_count>9</comment_count>
      <attachid>196550</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-04 16:36:27 -0700</bug_when>
    <thetext>Comment on attachment 196550
Patch

This is correct. But you are slowing down the common case.

Now, you always need 2 table lookup on insertion.

If fontPlatformData() returns something, you should not need a second table lookup, you should just put the value in the bucket you got with the first table lookup.

It is okay (and the correct thing to do) to have the table lookup again if you use alternateName. But if you don&apos;t, you should not have to pay the price for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869461</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 16:54:53 -0700</bug_when>
    <thetext>Committed r147681: &lt;http://trac.webkit.org/changeset/147681&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196514</attachid>
            <date>2013-04-04 13:33:01 -0700</date>
            <delta_ts>2013-04-04 14:18:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113954_it_value_cache.patch</filename>
            <type>text/plain</type>
            <size>2793</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZjc1MTZmLi43NzE3ZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAg
QEAKIDIwMTMtMDQtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgogCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0NzYzOSkgQ2F1c2VzIGFzc2VydGlvbiBoaXQg
aW4gSGFzaFRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTM5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDYWNoZSB0aGUgaXRlcmF0b3IgdmFsdWUgYXMgdGhlIGl0ZXJhdG9yIG1heSBiZSBpbnZh
bGlkYXRlZCBsYXRlcgorICAgICAgICBvbiBieSB0aGUgcmVjdXJzaXZlIGNhbGwgdG8gZ2V0Q2Fj
aGVkRm9udFBsYXRmb3JtRGF0YSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9y
bURhdGEpOgorCisyMDEzLTA0LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5z
YW1zdW5nLmNvbT4KKwogICAgICAgICBbQ2Fpcm9dIFN0b3AgcGFzc2luZyByYXcgcG9pbnRlcnMg
dG8gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTM5NDUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggNmNmODM4OS4uMWQzMDJkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yMDIsMjIgKzIw
MiwyNSBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKTsKIAogICAgIEZvbnRQbGF0
Zm9ybURhdGFDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGdGb250UGxhdGZvcm1EYXRhQ2FjaGUt
PmFkZChrZXksIG51bGxwdHIpOworICAgIC8vIENhY2hlIHRoZSBpdGVyYXRvciB2YWx1ZSBoZXJl
IGFzIHRoZSByZWN1cnNpdmUgY2FsbCB0byBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKCkKKyAg
ICAvLyBtYXkgYWx0ZXIgdGhlIGhhc2ggdGFibGUgYW5kIGludmFsaWRhdGUgdGhlIGl0ZXJhdG9y
LgorICAgIE93blB0cjxGb250UGxhdGZvcm1EYXRhPiYgdmFsdWUgPSByZXN1bHQuaXRlcmF0b3It
PnZhbHVlOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gY3JlYXRlRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGZh
bWlseU5hbWUpOworICAgICAgICB2YWx1ZSA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERl
c2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKIAotICAgICAgICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgJiYgIWNoZWNraW5nQWx0ZXJuYXRlTmFtZSkgeworICAgICAgICBpZiAoIXZhbHVlICYm
ICFjaGVja2luZ0FsdGVybmF0ZU5hbWUpIHsKICAgICAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxl
IHRvIGZpbmQgYSBmb250LiAgV2UgaGF2ZSBhIHNtYWxsIHNldCBvZiBmb250cyB0aGF0IHdlIGFs
aWFzIHRvIG90aGVyIG5hbWVzLAogICAgICAgICAgICAgLy8gZS5nLiwgQXJpYWwvSGVsdmV0aWNh
LCBDb3VyaWVyL0NvdXJpZXIgTmV3LCBldGMuICBUcnkgbG9va2luZyB1cCB0aGUgZm9udCB1bmRl
ciB0aGUgYWxpYXNlZCBuYW1lLgogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRl
cm5hdGVOYW1lID0gYWx0ZXJuYXRlRmFtaWx5TmFtZShmYW1pbHlOYW1lKTsKICAgICAgICAgICAg
IGlmICghYWx0ZXJuYXRlTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBGb250UGxh
dGZvcm1EYXRhKiBmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSA9IGdldENhY2hlZEZv
bnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBhbHRlcm5hdGVOYW1lLCB0cnVlKTsKICAg
ICAgICAgICAgICAgICBpZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgRm9u
dFBsYXRmb3JtRGF0YSgqZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBhZG9wdFB0cihuZXcgRm9udFBsYXRmb3JtRGF0YSgqZm9u
dFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAg
IHJldHVybiB2YWx1ZS5nZXQoKTsKIH0KIAogI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkK
</data>
<flag name="review"
          id="218606"
          type_id="1"
          status="-"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="218607"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196527</attachid>
            <date>2013-04-04 14:18:52 -0700</date>
            <delta_ts>2013-04-04 14:21:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113954_it_value_cache.patch</filename>
            <type>text/plain</type>
            <size>3050</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNjk4MmZkLi5kMTZiN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEg
QEAKIDIwMTMtMDQtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgogCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0NzYzOSkgQ2F1c2VzIGFzc2VydGlvbiBoaXQg
aW4gSGFzaFRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTM5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBMb29rdXAgdGhlIGtleSBpbiB0aGUgaGFzaCB0YWJsZSBhZ2FpbiBhZnRlciB0aGUgcmVj
dXJzaXZlIGNhbGwgdG8KKyAgICAgICAgZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpIGFzIGl0
IG1heSBoYXZlIGFsdGVyZWQgdGhlIGhhc2ggbWFwIGFuZAorICAgICAgICBpbnZhbGlkYXRlZCB0
aGUgcHJldmlvdXMgaXRlcmF0b3Igd2UgaGFkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEpOgorCisyMDEzLTA0LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpA
c2lzYS5zYW1zdW5nLmNvbT4KKwogICAgICAgICBbQ2Fpcm9dIFN0b3AgcGFzc2luZyByYXcgcG9p
bnRlcnMgdG8gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NDUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggNmNmODM4OS4uYWU3MmUzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yMDIs
MjIgKzIwMiwyNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKTsKIAogICAgIEZv
bnRQbGF0Zm9ybURhdGFDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGdGb250UGxhdGZvcm1EYXRh
Q2FjaGUtPmFkZChrZXksIG51bGxwdHIpOworICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZTo6aXRl
cmF0b3IgaXQgPSByZXN1bHQuaXRlcmF0b3I7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjcmVhdGVGb250UGxhdGZvcm1EYXRh
KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CisgICAgICAgIGl0LT52YWx1ZSA9IGNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKIAotICAgICAg
ICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUgJiYgIWNoZWNraW5nQWx0ZXJuYXRlTmFtZSkg
eworICAgICAgICBpZiAoIWl0LT52YWx1ZSAmJiAhY2hlY2tpbmdBbHRlcm5hdGVOYW1lKSB7CiAg
ICAgICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBmaW5kIGEgZm9udC4gIFdlIGhhdmUgYSBz
bWFsbCBzZXQgb2YgZm9udHMgdGhhdCB3ZSBhbGlhcyB0byBvdGhlciBuYW1lcywKICAgICAgICAg
ICAgIC8vIGUuZy4sIEFyaWFsL0hlbHZldGljYSwgQ291cmllci9Db3VyaWVyIE5ldywgZXRjLiAg
VHJ5IGxvb2tpbmcgdXAgdGhlIGZvbnQgdW5kZXIgdGhlIGFsaWFzZWQgbmFtZS4KICAgICAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRlTmFtZSA9IGFsdGVybmF0ZUZhbWlseU5h
bWUoZmFtaWx5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIWFsdGVybmF0ZU5hbWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogZm9udFBsYXRmb3JtRGF0YUZv
ckFsdGVybmF0ZU5hbWUgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlv
biwgYWx0ZXJuYXRlTmFtZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgLy8gTG9va3VwIHRoZSBr
ZXkgaW4gdGhlIGhhc2ggdGFibGUgYWdhaW4gYXMgdGhlIHByZXZpb3VzIGl0ZXJhdG9yIG1heSBo
YXZlCisgICAgICAgICAgICAgICAgLy8gYmVlbiBpbnZhbGlkYXRlZCBieSB0aGUgcmVjdXJzaXZl
IGNhbGwgdG8gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpLgorICAgICAgICAgICAgICAgIEZv
bnRQbGF0Zm9ybURhdGFDYWNoZTo6aXRlcmF0b3IgaXQgPSBnRm9udFBsYXRmb3JtRGF0YUNhY2hl
LT5maW5kKGtleSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGl0ICE9IGdGb250UGxhdGZvcm1E
YXRhQ2FjaGUtPmVuZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZm9udFBsYXRmb3JtRGF0YUZv
ckFsdGVybmF0ZU5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBhZG9wdFB0cihuZXcgRm9udFBsYXRmb3JtRGF0YSgqZm9udFBsYXRmb3JtRGF0YUZvckFs
dGVybmF0ZU5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVlID0gYWRvcHRQdHIo
bmV3IEZvbnRQbGF0Zm9ybURhdGEoKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCiAj
aWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196528</attachid>
            <date>2013-04-04 14:21:37 -0700</date>
            <delta_ts>2013-04-04 16:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113954_it_value_cache.patch</filename>
            <type>text/plain</type>
            <size>3018</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNjk4MmZkLi5kMTZiN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEg
QEAKIDIwMTMtMDQtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgogCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0NzYzOSkgQ2F1c2VzIGFzc2VydGlvbiBoaXQg
aW4gSGFzaFRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTM5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBMb29rdXAgdGhlIGtleSBpbiB0aGUgaGFzaCB0YWJsZSBhZ2FpbiBhZnRlciB0aGUgcmVj
dXJzaXZlIGNhbGwgdG8KKyAgICAgICAgZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpIGFzIGl0
IG1heSBoYXZlIGFsdGVyZWQgdGhlIGhhc2ggbWFwIGFuZAorICAgICAgICBpbnZhbGlkYXRlZCB0
aGUgcHJldmlvdXMgaXRlcmF0b3Igd2UgaGFkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEpOgorCisyMDEzLTA0LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpA
c2lzYS5zYW1zdW5nLmNvbT4KKwogICAgICAgICBbQ2Fpcm9dIFN0b3AgcGFzc2luZyByYXcgcG9p
bnRlcnMgdG8gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NDUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggNmNmODM4OS4uN2YwMGVlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yMDIs
MjIgKzIwMiwyNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKTsKIAogICAgIEZv
bnRQbGF0Zm9ybURhdGFDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGdGb250UGxhdGZvcm1EYXRh
Q2FjaGUtPmFkZChrZXksIG51bGxwdHIpOworICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZTo6aXRl
cmF0b3IgaXQgPSByZXN1bHQuaXRlcmF0b3I7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjcmVhdGVGb250UGxhdGZvcm1EYXRh
KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CisgICAgICAgIGl0LT52YWx1ZSA9IGNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKIAotICAgICAg
ICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUgJiYgIWNoZWNraW5nQWx0ZXJuYXRlTmFtZSkg
eworICAgICAgICBpZiAoIWl0LT52YWx1ZSAmJiAhY2hlY2tpbmdBbHRlcm5hdGVOYW1lKSB7CiAg
ICAgICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBmaW5kIGEgZm9udC4gIFdlIGhhdmUgYSBz
bWFsbCBzZXQgb2YgZm9udHMgdGhhdCB3ZSBhbGlhcyB0byBvdGhlciBuYW1lcywKICAgICAgICAg
ICAgIC8vIGUuZy4sIEFyaWFsL0hlbHZldGljYSwgQ291cmllci9Db3VyaWVyIE5ldywgZXRjLiAg
VHJ5IGxvb2tpbmcgdXAgdGhlIGZvbnQgdW5kZXIgdGhlIGFsaWFzZWQgbmFtZS4KICAgICAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRlTmFtZSA9IGFsdGVybmF0ZUZhbWlseU5h
bWUoZmFtaWx5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIWFsdGVybmF0ZU5hbWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogZm9udFBsYXRmb3JtRGF0YUZv
ckFsdGVybmF0ZU5hbWUgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlv
biwgYWx0ZXJuYXRlTmFtZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgLy8gTG9va3VwIHRoZSBr
ZXkgaW4gdGhlIGhhc2ggdGFibGUgYWdhaW4gYXMgdGhlIHByZXZpb3VzIGl0ZXJhdG9yIG1heSBo
YXZlCisgICAgICAgICAgICAgICAgLy8gYmVlbiBpbnZhbGlkYXRlZCBieSB0aGUgcmVjdXJzaXZl
IGNhbGwgdG8gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpLgorICAgICAgICAgICAgICAgIGl0
ID0gZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+ZmluZChrZXkpOworICAgICAgICAgICAgICAgIEFT
U0VSVChpdCAhPSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5lbmQoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IEZvbnRQbGF0Zm9ybURh
dGEoKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKSk7CisgICAgICAgICAgICAgICAg
ICAgIGl0LT52YWx1ZSA9IGFkb3B0UHRyKG5ldyBGb250UGxhdGZvcm1EYXRhKCpmb250UGxhdGZv
cm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJu
IGl0LT52YWx1ZS5nZXQoKTsKIH0KIAogI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196532</attachid>
            <date>2013-04-04 14:50:21 -0700</date>
            <delta_ts>2013-04-04 14:55:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113954_it_value_cache.patch</filename>
            <type>text/plain</type>
            <size>2232</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNjk4MmZkLi45ZTA4NWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIg
QEAKIDIwMTMtMDQtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgogCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0NzYzOSkgQ2F1c2VzIGFzc2VydGlvbiBoaXQg
aW4gSGFzaFRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTM5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTdG9wIHVzaW5nIHRoZSBpdGVyYXRvciBhZnRlciB0aGUgcmVjdXJzaXZlIGNhbGwgdG8g
Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpCisgICAgICAgIGFzIGl0IG1heSBoYXZlIGFsdGVy
ZWQgdGhlIGhhc2ggdGFibGUgYW5kIHRodXMgaW52YWxpZGF0ZWQgdGhlIGl0ZXJhdG9yLgorICAg
ICAgICBBbHNvIHJlbW92ZWQgaGFzaCB0YWJsZSBpbnNlcnRpb24gb2YgdGhlIHZhbHVlIHJldHVy
bmVkIGJ5IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoKQorICAgICAgICBhcyB0aGUgbWV0aG9k
IGFscmVhZHkgdGFrZXMgY2FyZSBvZiB0aGUgaW5zZXJ0aW9uLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldENh
Y2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorCisyMDEzLTA0LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKwogICAgICAgICBbQ2Fpcm9dIFN0b3AgcGFzc2lu
ZyByYXcgcG9pbnRlcnMgdG8gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5NDUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggNmNmODM4OS4uMjA1MzRj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
CkBAIC0yMDksMTEgKzIwOSw4IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2Fj
aGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAgICAgICAgICAg
ICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBmaW5kIGEgZm9udC4gIFdlIGhhdmUgYSBzbWFsbCBzZXQg
b2YgZm9udHMgdGhhdCB3ZSBhbGlhcyB0byBvdGhlciBuYW1lcywKICAgICAgICAgICAgIC8vIGUu
Zy4sIEFyaWFsL0hlbHZldGljYSwgQ291cmllci9Db3VyaWVyIE5ldywgZXRjLiAgVHJ5IGxvb2tp
bmcgdXAgdGhlIGZvbnQgdW5kZXIgdGhlIGFsaWFzZWQgbmFtZS4KICAgICAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRlTmFtZSA9IGFsdGVybmF0ZUZhbWlseU5hbWUoZmFtaWx5
TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWFsdGVybmF0ZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0
ZU5hbWUgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgYWx0ZXJu
YXRlTmFtZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGZvbnRQbGF0Zm9ybURhdGFGb3JB
bHRlcm5hdGVOYW1lKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gYWRvcHRQdHIobmV3IEZvbnRQbGF0Zm9ybURhdGEoKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRl
cm5hdGVOYW1lKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWFsdGVybmF0ZU5h
bWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBnZXRDYWNoZWRGb250UGxhdGZv
cm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgYWx0ZXJuYXRlTmFtZSwgdHJ1ZSk7CiAgICAgICAgIH0K
ICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196550</attachid>
            <date>2013-04-04 16:14:52 -0700</date>
            <delta_ts>2013-04-04 16:47:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113954_it_value_cache.patch</filename>
            <type>text/plain</type>
            <size>4247</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNjk4MmZkLi4wZjMzMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAg
QEAKIDIwMTMtMDQtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgogCisgICAgICAgIFJlZ3Jlc3Npb24ocjE0NzYzOSkgQ2F1c2VzIGFzc2VydGlvbiBoaXQg
aW4gSGFzaFRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTM5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTdG9wIHVzaW5nIHRoZSBpdGVyYXRvciBhZnRlciB0aGUgcmVjdXJzaXZlIGNhbGwgdG8g
Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpCisgICAgICAgIGFzIGl0IG1heSBhbHRlciB0aGUg
aGFzaCB0YWJsZSBhbmQgdGh1cyBpbnZhbGlkYXRlIHRoZSBpdGVyYXRvci4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKworMjAxMy0wNC0wNCAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKICAgICAgICAgW0NhaXJvXSBTdG9w
IHBhc3NpbmcgcmF3IHBvaW50ZXJzIHRvIEJpdG1hcEltYWdlOjpjcmVhdGUoKQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzOTQ1CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDZjZjgzODku
LjY3NzM0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6
Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAjaWYg
T1MoV0lORE9XUykgJiYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgIC8vIExlYWRpbmcg
IkAiIGluIHRoZSBmb250IG5hbWUgZW5hYmxlcyBXaW5kb3dzIHZlcnRpY2FsIGZsb3cgZmxhZyBm
b3IgdGhlIGZvbnQuCiAgICAgLy8gQmVjYXVzZSB3ZSBkbyB2ZXJ0aWNhbCBmbG93IGJ5IG91cnNl
bHZlcywgd2UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIFdpbmRvd3MgZmVhdHVyZS4KLSAgICAvLyBJ
RSBkaXNyZWdhcmRzICJAIiByZWdhcmRsZXNzIG9mIHRoZSBvcmllbnRhdG9pbiwgc28gd2UgZm9s
bG93IHRoZSBiZWhhdmlvci4KKyAgICAvLyBJRSBkaXNyZWdhcmRzICJAIiByZWdhcmRsZXNzIG9m
IHRoZSBvcmllbnRhdGlvbiwgc28gd2UgZm9sbG93IHRoZSBiZWhhdmlvci4KICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseU5hbWUgPSAocGFzc2VkRmFtaWx5TmFtZS5pc0VtcHR5KCkgfHwg
cGFzc2VkRmFtaWx5TmFtZVswXSAhPSAnQCcpID8KICAgICAgICAgcGFzc2VkRmFtaWx5TmFtZSA6
IEF0b21pY1N0cmluZyhwYXNzZWRGYW1pbHlOYW1lLmltcGwoKS0+c3Vic3RyaW5nKDEpKTsKICNl
bHNlCkBAIC0yMDEsMjMgKzIwMSwyNiBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6Omdl
dENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnVzZVByaW50ZXJGb250
KCksIGZvbnREZXNjcmlwdGlvbi5yZW5kZXJpbmdNb2RlKCksIGZvbnREZXNjcmlwdGlvbi5vcmll
bnRhdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLndpZHRoVmFyaWFudCgpKTsKIAotICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZTo6QWRkUmVz
dWx0IHJlc3VsdCA9IGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPmFkZChrZXksIG51bGxwdHIpOwot
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gY3JlYXRlRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUp
OwotCi0gICAgICAgIGlmICghcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSAmJiAhY2hlY2tpbmdBbHRl
cm5hdGVOYW1lKSB7Ci0gICAgICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBmaW5kIGEgZm9u
dC4gIFdlIGhhdmUgYSBzbWFsbCBzZXQgb2YgZm9udHMgdGhhdCB3ZSBhbGlhcyB0byBvdGhlciBu
YW1lcywKLSAgICAgICAgICAgIC8vIGUuZy4sIEFyaWFsL0hlbHZldGljYSwgQ291cmllci9Db3Vy
aWVyIE5ldywgZXRjLiAgVHJ5IGxvb2tpbmcgdXAgdGhlIGZvbnQgdW5kZXIgdGhlIGFsaWFzZWQg
bmFtZS4KLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRlTmFtZSA9IGFs
dGVybmF0ZUZhbWlseU5hbWUoZmFtaWx5TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWFsdGVybmF0
ZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogZm9u
dFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KGZvbnREZXNjcmlwdGlvbiwgYWx0ZXJuYXRlTmFtZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
aWYgKGZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IEZvbnRQbGF0Zm9ybURhdGEo
KmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKSk7Ci0gICAgICAgICAgICB9CisgICAg
Rm9udFBsYXRmb3JtRGF0YUNhY2hlOjppdGVyYXRvciBpdCA9IGdGb250UGxhdGZvcm1EYXRhQ2Fj
aGUtPmZpbmQoa2V5KTsKKyAgICBpZiAoaXQgIT0gZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+ZW5k
KCkpCisgICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CisKKyAgICBPd25QdHI8Rm9udFBs
YXRmb3JtRGF0YT4gZm9udFBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9u
dERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKKyAgICBpZiAoIWZvbnRQbGF0Zm9ybURhdGEgJiYg
IWNoZWNraW5nQWx0ZXJuYXRlTmFtZSkgeworICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBm
aW5kIGEgZm9udC4gV2UgaGF2ZSBhIHNtYWxsIHNldCBvZiBmb250cyB0aGF0IHdlIGFsaWFzIHRv
IG90aGVyIG5hbWVzLAorICAgICAgICAvLyBlLmcuLCBBcmlhbC9IZWx2ZXRpY2EsIENvdXJpZXIv
Q291cmllciBOZXcsIGV0Yy4gVHJ5IGxvb2tpbmcgdXAgdGhlIGZvbnQgdW5kZXIgdGhlIGFsaWFz
ZWQgbmFtZS4KKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGVOYW1lID0gYWx0
ZXJuYXRlRmFtaWx5TmFtZShmYW1pbHlOYW1lKTsKKyAgICAgICAgaWYgKCFhbHRlcm5hdGVOYW1l
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogZm9udFBsYXRmb3Jt
RGF0YUZvckFsdGVybmF0ZU5hbWUgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnREZXNj
cmlwdGlvbiwgYWx0ZXJuYXRlTmFtZSwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoZm9udFBsYXRm
b3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgZm9udFBsYXRmb3JtRGF0
YSA9IGFkb3B0UHRyKG5ldyBGb250UGxhdGZvcm1EYXRhKCpmb250UGxhdGZvcm1EYXRhRm9yQWx0
ZXJuYXRlTmFtZSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CisgICAgaWYgKCFmb250UGxhdGZvcm1EYXRhKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIHJldHVybiBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5hZGQoa2V5LCBm
b250UGxhdGZvcm1EYXRhLnJlbGVhc2UoKSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCiAj
aWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQo=
</data>
<flag name="review"
          id="218636"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>