<?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>9678</bug_id>
          
          <creation_ts>2006-07-01 15:09:14 -0700</creation_ts>
          <short_desc>fmod function of MS CRT returns NaN for x / Inf</short_desc>
          <delta_ts>2006-07-04 21:07:51 -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>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Björn Graf (boki)">bjoern.graf</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>47925</commentid>
    <comment_count>0</comment_count>
    <who name="Björn Graf (boki)">bjoern.graf</who>
    <bug_when>2006-07-01 15:09:14 -0700</bug_when>
    <thetext>JavaScriptCore expects fmod to return Inf for finite dividend and infinite divisor , but the MS CRT version of fmod returns NaN in these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47926</commentid>
    <comment_count>1</comment_count>
      <attachid>9128</attachid>
    <who name="Björn Graf (boki)">bjoern.graf</who>
    <bug_when>2006-07-01 15:11:38 -0700</bug_when>
    <thetext>Created attachment 9128
MS CRT fmod bug workaround where x % (1/0) = NaN, not x.

The workaround checks the arguments for infinity and only calls fmod when the divisor is not infinite. Otherwise it returns the dividend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48120</commentid>
    <comment_count>2</comment_count>
      <attachid>9128</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-03 18:05:48 -0700</bug_when>
    <thetext>Comment on attachment 9128
MS CRT fmod bug workaround where x % (1/0) = NaN, not x.

I&apos;d like to see this workaround in MathExtras.h rather than inline in the JavaScript-specific files. We just need a name for the fmod with the workaround, and then we can use that. It can be an inline that expands to a call to fmod on platforms other than Win32.

Also, we do COMPILER(MSVC) rather than _MSC_VER for these kinds of ifdefs.

I don&apos;t think we need PLATFORM(WIN) at all -- probably COMPILER(MSVC) is the whole check needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48138</commentid>
    <comment_count>3</comment_count>
      <attachid>9183</attachid>
    <who name="Björn Graf (boki)">bjoern.graf</who>
    <bug_when>2006-07-03 20:20:49 -0700</bug_when>
    <thetext>Created attachment 9183
Workaround for MSVCRTs fmod function

This patch implements the necessary workaround in wtf/MathExtras.h.

Defining fmod inside the KJS namespace would have worked, if all call sites where in the namespace explicitly. However, being implicitly declared in the namespace and defined in it via the using namespace KJS; directive requires the #define workaround.

Needed to change isinf() because NaN is not finite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48155</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-07-03 23:54:07 -0700</bug_when>
    <thetext>I think Darin&apos;s suggestion was to just use an alternate function name besides fmod at the call sites, and for non-MSVC compilers it could just expand inline to fmod. It could just be called _fmod, or fremainder or something. I actually think this solution is fine though, so I&apos;ll just r+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48183</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-04 10:43:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think Darin&apos;s suggestion was to just use an alternate function name besides
&gt; fmod at the call sites, and for non-MSVC compilers it could just expand inline
&gt; to fmod. It could just be called _fmod, or fremainder or something. I actually
&gt; think this solution is fine though, so I&apos;ll just r+ it.

Maciej&apos;s right about what I was suggesting. But I think it&apos;s also OK to use a trick so it can still be fmod at the call site. I would not have called the other function _fmod, though, because those identifiers are specifically reserved for the implementation! Maybe fmodWithWorkaround or something like that.

Also, if we are doing a macro, a macro that takes parameters is safer than one that just does the bare name. But I also think this is OK as-is, so I&apos;ll just leave Maciej&apos;s review flag intact. We can always enhance the technique used in MathExtras.h when and if we run into trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48187</commentid>
    <comment_count>6</comment_count>
      <attachid>9193</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-04 12:25:52 -0700</bug_when>
    <thetext>Created attachment 9193
my alternate version of the fmod patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48282</commentid>
    <comment_count>7</comment_count>
      <attachid>9198</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-04 16:40:37 -0700</bug_when>
    <thetext>Created attachment 9198
my alternate version of the fmod patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48294</commentid>
    <comment_count>8</comment_count>
      <attachid>9198</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-07-04 20:45:49 -0700</bug_when>
    <thetext>Comment on attachment 9198
my alternate version of the fmod patch

This looks ok too, but I kinda like MathExtras.h being transparent and letting you use the normal function names. Saying wtf_fmod all over (w/ potential to mistakenly say fmod) seems worse to me than a macro solution. Agreed though that a macro with parameters would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48295</commentid>
    <comment_count>9</comment_count>
      <attachid>9198</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-07-04 20:45:49 -0700</bug_when>
    <thetext>Comment on attachment 9198
my alternate version of the fmod patch

This looks ok too, but I kinda like MathExtras.h being transparent and letting you use the normal function names. Saying wtf_fmod all over (w/ potential to mistakenly say fmod) seems worse to me than a macro solution. Agreed though that a macro with parameters would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48301</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-04 21:07:51 -0700</bug_when>
    <thetext>Committed revision 15155.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9128</attachid>
            <date>2006-07-01 15:11:38 -0700</date>
            <delta_ts>2006-07-03 19:15:40 -0700</delta_ts>
            <desc>MS CRT fmod bug workaround where x % (1/0) = NaN, not x.</desc>
            <filename>jsc-fmod.patch</filename>
            <type>text/plain</type>
            <size>1606</size>
            <attacher name="Björn Graf (boki)">bjoern.graf</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTUw
OTEpDQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDEyIEBADQorMjAw
Ni14eC14eCAgQmpvZXJuIEdyYWYgICAgICA8YmpvZXJuLmdyYWZAZ21haWwuY29tPg0KKw0KKyAg
ICAgICAgUmV2aWV3ZWQgYnkgYW4gdW5rbm93biBlbnRpdHkNCisNCisgICAgICAgIFdvcmthcm91
bmQgZm9yIE1TVkNSVHMgZm1vZCBmdW5jdGlvbiByZXR1cm5pbmcgTmFOIGZvciB4ICUgSW5maW5p
dGUgaW5zdGVhZCBvZiB4DQorDQorICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6DQorICAgICAgICAq
IGtqcy9vcGVyYXRpb25zLmNwcDoNCisNCiAyMDA2LTA2LTI4ICBUaW1vdGh5IEhhdGNoZXIgIDx0
aW1vdGh5QGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFByZWZlciB0aGUgU3RhYnMgZGVidWdnaW5n
IHN5bWJvbHMgZm9ybWF0IHVudGlsIERXQVJGIGJ1Z3MgYXJlIGZpeGVkLg0KSW5kZXg6IGtqcy9u
b2Rlcy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBranMvbm9kZXMuY3BwCShyZXZpc2lvbiAxNTA5MSkN
CisrKyBranMvbm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTM2Nyw2ICsxMzY3LDEyIEBA
DQogICBjYXNlIE9wTW9kRXE6IHsNCiAgICAgZG91YmxlIGQxID0gdjEtPnRvTnVtYmVyKGV4ZWMp
Ow0KICAgICBkb3VibGUgZDIgPSB2Mi0+dG9OdW1iZXIoZXhlYyk7DQorI2lmIFBMQVRGT1JNKFdJ
TikgJiYgX01TQ19WRVINCisgICAgLy8gTVMgQ1JUIGZtb2QgYnVnIHdvcmthcm91bmQgd2hlcmUg
eCAlICgxLzApID0gTmFOLCBub3QgeC4NCisgICAgaWYgKCFpc0luZihkMSkgJiYgaXNJbmYoZDIp
KQ0KKyAgICAgIHYgPSB2MTsNCisgICAgZWxzZQ0KKyNlbmRpZg0KICAgICB2ID0ganNOdW1iZXIo
Zm1vZChkMSwgZDIpKTsNCiAgIH0NCiAgICAgYnJlYWs7DQpJbmRleDoga2pzL29wZXJhdGlvbnMu
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0ga2pzL29wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNTA5MSkN
CisrKyBranMvb3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yNDQsNyArMjQ0LDEz
IEBADQogICAgIGVsc2UgaWYgKG9wZXIgPT0gJy8nKQ0KICAgICAgICAgcmVzdWx0ID0gbjEgLyBu
MjsNCiAgICAgZWxzZQ0KLSAgICAgICAgcmVzdWx0ID0gZm1vZChuMSwgbjIpOw0KKyNpZiBQTEFU
Rk9STShXSU4pICYmIF9NU0NfVkVSDQorICAgIC8vIE1TIENSVCBmbW9kIGJ1ZyB3b3JrYXJvdW5k
IHdoZXJlIHggJSAoMS8wKSA9IE5hTiwgbm90IHguDQorICAgIGlmICghaXNJbmYobjEpICYmIGlz
SW5mKG4yKSkNCisgICAgICAgIHJlc3VsdCA9IG4xOw0KKyAgICBlbHNlDQorI2VuZGlmDQorICAg
IHJlc3VsdCA9IGZtb2QobjEsIG4yKTsNCiAgICAgDQogICAgIHJldHVybiBqc051bWJlcihyZXN1
bHQpOw0KIH0NCg==
</data>
<flag name="review"
          id="2729"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9183</attachid>
            <date>2006-07-03 20:20:49 -0700</date>
            <delta_ts>2006-07-03 23:54:17 -0700</delta_ts>
            <desc>Workaround for MSVCRTs fmod function</desc>
            <filename>jsc-fmod2.patch</filename>
            <type>text/plain</type>
            <size>2344</size>
            <attacher name="Björn Graf (boki)">bjoern.graf</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTUx
NDcpDQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDEzIEBADQorMjAw
Ni14eC14eCAgQmpvZXJuIEdyYWYgPGJqb2Vybi5ncmFmQGdtYWlsLmNvbT4NCisNCisgICAgICAg
IFJldmlld2VkIGJ5IGFuIHVua25vd24gZW50aXR5DQorDQorICAgICAgICBXb3JrYXJvdW5kIGZv
ciBNU1ZDUlRzIGZtb2QgZnVuY3Rpb24gcmV0dXJuaW5nIE5hTiBmb3IgeCAlIEluZmluaXRlIGlu
c3RlYWQgb2YgeA0KKw0KKyAgICAgICAgKiB3dGYvTWF0aEV4dHJhcy5oOg0KKyAgICAgICAgKiBr
anMvbm9kZXMuY3BwOg0KKyAgICAgICAgKiBranMvb3BlcmF0aW9ucy5jcHA6DQorDQogMjAwNi0w
Ny0wMiAgSnVzdGluIEhheWdvb2QgPGpoYXlnb29kQHNwc3UuZWR1DQogDQogICAgICAgICBSZXZp
ZXdlZCwgdHdlYWtlZCwgbGFuZGVkIGJ5IGdnYXJlbi4NCkluZGV4OiBranMvbm9kZXMuY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0ga2pzL25vZGVzLmNwcAkocmV2aXNpb24gMTUxNDcpDQorKysga2pzL25v
ZGVzLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTM4LDYgKzM4LDcgQEANCiAjaW5jbHVkZSAicmVm
ZXJlbmNlX2xpc3QuaCINCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4NCiAjaW5jbHVkZSA8d3Rm
L0hhc2hDb3VudGVkU2V0Lmg+DQorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+DQogDQogdXNp
bmcgbmFtZXNwYWNlIEtKUzsNCiANCkluZGV4OiBranMvb3BlcmF0aW9ucy5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBranMvb3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1MTQ3KQ0KKysrIGtqcy9vcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTM0LDYgKzM0LDggQEANCiAjaW5jbHVkZSA8
ZmxvYXQuaD4NCiAjZW5kaWYNCiANCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4NCisNCiAj
aW5jbHVkZSAib2JqZWN0LmgiDQogDQogbmFtZXNwYWNlIEtKUyB7DQpJbmRleDogd3RmL01hdGhF
eHRyYXMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIHd0Zi9NYXRoRXh0cmFzLmgJKHJldmlzaW9uIDE1MTQ3
KQ0KKysrIHd0Zi9NYXRoRXh0cmFzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw3ICsyOSwxMSBA
QA0KIA0KICNpbmNsdWRlIDx4bWF0aC5oPg0KIA0KLWlubGluZSBib29sIGlzaW5mKGRvdWJsZSBu
dW0pIHsgcmV0dXJuICFfZmluaXRlKG51bSk7IH0NCisjaWYgSEFWRShGTE9BVF9IKQ0KKyNpbmNs
dWRlIDxmbG9hdC5oPg0KKyNlbmRpZg0KKw0KK2lubGluZSBib29sIGlzaW5mKGRvdWJsZSBudW0p
IHsgcmV0dXJuICFfZmluaXRlKG51bSkgJiYgIV9pc25hbihudW0pOyB9DQogaW5saW5lIGJvb2wg
aXNuYW4oZG91YmxlIG51bSkgeyByZXR1cm4gX2lzbmFuKG51bSk7IH0NCiBpbmxpbmUgbG9uZyBs
cm91bmQoZG91YmxlIG51bSkgeyByZXR1cm4gbnVtID4gMCA/IG51bSArIDAuNSA6IGNlaWwobnVt
IC0gMC41KTsgfQ0KIGlubGluZSBsb25nIGxyb3VuZGYoZmxvYXQgbnVtKSB7IHJldHVybiBudW0g
PiAwID8gbnVtICsgMC41ZiA6IGNlaWxmKG51bSAtIDAuNWYpOyB9DQpAQCAtMzcsNCArNDEsMTUg
QEANCiBpbmxpbmUgZmxvYXQgcm91bmRmKGZsb2F0IG51bSkgeyByZXR1cm4gbnVtID4gMCA/IGZs
b29yZihudW0gKyAwLjVmKSA6IGNlaWxmKG51bSAtIDAuNWYpOyB9DQogaW5saW5lIGJvb2wgc2ln
bmJpdChkb3VibGUgbnVtKSB7IHJldHVybiBfY29weXNpZ24oMS4wLCBudW0pIDwgMDsgfQ0KIA0K
KyNpZiBDT01QSUxFUihNU1ZDKQ0KKw0KKy8vIE1TIENSVCBmbW9kIGJ1ZyB3b3JrYXJvdW5kIHdo
ZXJlIHggJSAoMS8wKSA9IE5hTiwgbm90IHguDQoraW5saW5lIGRvdWJsZSBfZm1vZChkb3VibGUg
eCwgZG91YmxlIHkpIHsgcmV0dXJuICghaXNpbmYoeCkgJiYgaXNpbmYoeSkpID8geCA6IDo6Zm1v
ZCh4LCB5KTsgfQ0KKw0KKy8vIFRoaXMgZGVmaW5lIGlzIHJlcXVpcmVkIGJlY2F1c2UgZm1vZCBp
cyBhbiBpbnRyaW5zaWMgZnVuY3Rpb24gaW4gcmVsZWFzZQ0KKy8vIGJ1aWxkcyB3aGljaCBjYW5u
b3QgYmUgb3ZlcmxvYWRlZC4NCisjZGVmaW5lIGZtb2QgX2Ztb2QNCisNCiAjZW5kaWYNCisNCisj
ZW5kaWYNCg==
</data>
<flag name="review"
          id="2754"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9193</attachid>
            <date>2006-07-04 12:25:52 -0700</date>
            <delta_ts>2006-07-04 16:40:37 -0700</delta_ts>
            <desc>my alternate version of the fmod patch</desc>
            <filename>FModPatch.txt</filename>
            <type>text/plain</type>
            <size>4993</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE1MTUw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYteHgt
eHggIEJqb2VybiBHcmFmIDxiam9lcm4uZ3JhZkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgYW4gdW5rbm93biBlbnRpdHkKKworICAgICAgICBXb3JrYXJvdW5kIGZvciBNU1ZDUlRz
IGZtb2QgZnVuY3Rpb24gcmV0dXJuaW5nIE5hTiBmb3IgeCAlIEluZmluaXRlIGluc3RlYWQgb2Yg
eAorCisgICAgICAgICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAgICAgKiBranMvbm9kZXMuY3Bw
OgorICAgICAgICAqIGtqcy9vcGVyYXRpb25zLmNwcDoKKwogMjAwNi0wNy0wMSAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpJ
bmRleDoga2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvbm9kZXMuY3BwCShyZXZpc2lv
biAxNTE1MCkKKysrIGtqcy9ub2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJyZWZlcmVuY2VfbGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEtKUzsKIApAQCAtMTM2Nyw3ICsxMzY4LDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSAqdmFsdWVGb3JSZQogICBjYXNlIE9wTW9kRXE6IHsK
ICAgICBkb3VibGUgZDEgPSB2MS0+dG9OdW1iZXIoZXhlYyk7CiAgICAgZG91YmxlIGQyID0gdjIt
PnRvTnVtYmVyKGV4ZWMpOwotICAgIHYgPSBqc051bWJlcihmbW9kKGQxLCBkMikpOworICAgIHYg
PSBqc051bWJlcih3dGZfZm1vZChkMSwgZDIpKTsKICAgfQogICAgIGJyZWFrOwogICBkZWZhdWx0
OgpJbmRleDoga2pzL251bWJlcl9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9udW1iZXJf
b2JqZWN0LmNwcAkocmV2aXNpb24gMTUxNTApCisrKyBranMvbnVtYmVyX29iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBKU1ZhbHVlICpOdW1iZXJQcm90b0Z1bmM6
OmNhbGxBc0Z1bmN0aW9uCiAgICAgICBjaGFyICpwID0gZG90OwogICAgICAgKnAgPSAnXDAnOwog
ICAgICAgZG8gewotICAgICAgICAqLS1wID0gZGlnaXRzW3N0YXRpY19jYXN0PGludD4oZm1vZChk
LCByYWRpeCkpXTsKKyAgICAgICAgKi0tcCA9IGRpZ2l0c1tzdGF0aWNfY2FzdDxpbnQ+KHd0Zl9m
bW9kKGQsIHJhZGl4KSldOwogICAgICAgICBkIC89IHJhZGl4OwogICAgICAgfSB3aGlsZSAoKGQg
PD0gLTEuMCB8fCBkID49IDEuMCkgJiYgcCA+IHMpOwogICAgICAgLy8gYW55IGRlY2ltYWwgZnJh
Y3Rpb24gPwpJbmRleDoga2pzL29wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9vcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTUxNTApCisrKyBranMvb3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDggKzIzLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAib3BlcmF0aW9ucy5oIgogCisjaW5jbHVkZSAib2JqZWN0LmgiCiAjaW5jbHVkZSA8bWF0aC5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2lm
IEhBVkUoRlVOQ19JU0lORikgJiYgSEFWRShJRUVFRlBfSCkKICNpbmNsdWRlIDxpZWVlZnAuaD4K
QEAgLTM0LDE1ICszNiwxNCBAQAogI2luY2x1ZGUgPGZsb2F0Lmg+CiAjZW5kaWYKIAotI2luY2x1
ZGUgIm9iamVjdC5oIgotCiBuYW1lc3BhY2UgS0pTIHsKICAgICAKICNpZiAhUExBVEZPUk0oREFS
V0lOKQotLy8gRklYTUU6IHNob3VsZCBwcm9iYWJseSBiZSBpbmxpbmVkIG9uIG90aGVyIHBsYXRm
b3JtcyB0b28sIGFuZCBjb250cm9sbGVkIGV4Y2x1c2l2ZWx5Ci0vLyBieSBIQVZFIG1hY3Jvcwot
ICAgIAotICAgIAorCisvLyBGSVhNRTogU2hvdWxkIHByb2JhYmx5IGJlIGlubGluZWQgb24gbm9u
LURhcndpbiBwbGF0Zm9ybXMgdG9vLCBhbmQgY29udHJvbGxlZCBleGNsdXNpdmVseQorLy8gYnkg
SEFWRSBtYWNyb3MgcmF0aGVyIHRoYW4gUExBVEZPUk0uCisKKy8vIEZJWE1FOiBNZXJnZSB3aXRo
IGlzbmFuIGluIE1hdGhFeHRyYXMuaCBhbmQgcmVtb3ZlIHRoaXMgb25lIGVudGlyZWx5LgogYm9v
bCBpc05hTihkb3VibGUgZCkKIHsKICNpZiBIQVZFKEZVTkNfSVNOQU4pCkBAIC01NCw2ICs1NSw3
IEBAIGJvb2wgaXNOYU4oZG91YmxlIGQpCiAjZW5kaWYKIH0KIAorLy8gRklYTUU6IE1lcmdlIHdp
dGggaXNpbmYgaW4gTWF0aEV4dHJhcy5oIGFuZCByZW1vdmUgdGhpcyBvbmUgZW50aXJlbHkuCiBi
b29sIGlzSW5mKGRvdWJsZSBkKQogewogICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgSEFWRShfRlBD
TEFTUykKQEAgLTI0NCw3ICsyNDYsNyBAQCBKU1ZhbHVlICptdWx0KEV4ZWNTdGF0ZSAqZXhlYywg
SlNWYWx1ZSAqCiAgICAgZWxzZSBpZiAob3BlciA9PSAnLycpCiAgICAgICAgIHJlc3VsdCA9IG4x
IC8gbjI7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBmbW9kKG4xLCBuMik7CisgICAgICAg
IHJlc3VsdCA9IHd0Zl9mbW9kKG4xLCBuMik7CiAgICAgCiAgICAgcmV0dXJuIGpzTnVtYmVyKHJl
c3VsdCk7CiB9CkluZGV4OiBranMvdmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy92YWx1ZS5j
cHAJKHJldmlzaW9uIDE1MTUwKQorKysga2pzL3ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCBpbnQzMl90IEpTVmFsdWU6OnRvSW50MzIoRXhlY1N0YXRlICpleGVjCiAg
ICAgZG91YmxlIGQgPSByb3VuZFZhbHVlKGV4ZWMsIGNvbnN0X2Nhc3Q8SlNWYWx1ZSo+KHRoaXMp
KTsKICAgICBpZiAoaXNOYU4oZCkgfHwgaXNJbmYoZCkpCiAgICAgICAgIHJldHVybiAwOwotICAg
IGRvdWJsZSBkMzIgPSBmbW9kKGQsIEQzMik7CisgICAgZG91YmxlIGQzMiA9IHd0Zl9mbW9kKGQs
IEQzMik7CiAKICAgICBpZiAoZDMyID49IEQzMiAvIDIpCiAgICAgICAgIGQzMiAtPSBEMzI7CkBA
IC04NCw3ICs4NCw3IEBAIHVpbnQzMl90IEpTVmFsdWU6OnRvVUludDMyKEV4ZWNTdGF0ZSAqZXgK
ICAgICBkb3VibGUgZCA9IHJvdW5kVmFsdWUoZXhlYywgY29uc3RfY2FzdDxKU1ZhbHVlKj4odGhp
cykpOwogICAgIGlmIChpc05hTihkKSB8fCBpc0luZihkKSkKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgZG91YmxlIGQzMiA9IGZtb2QoZCwgRDMyKTsKKyAgICBkb3VibGUgZDMyID0gd3RmX2Ztb2Qo
ZCwgRDMyKTsKIAogICAgIGlmIChkMzIgPCAwKQogICAgICAgICBkMzIgKz0gRDMyOwpAQCAtMTAx
LDcgKzEwMSw3IEBAIHVpbnQxNl90IEpTVmFsdWU6OnRvVUludDE2KEV4ZWNTdGF0ZSAqZXgKICAg
ICBkb3VibGUgZCA9IHJvdW5kVmFsdWUoZXhlYywgY29uc3RfY2FzdDxKU1ZhbHVlKj4odGhpcykp
OwogICAgIGlmIChpc05hTihkKSB8fCBpc0luZihkKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ZG91YmxlIGQxNiA9IGZtb2QoZCwgRDE2KTsKKyAgICBkb3VibGUgZDE2ID0gd3RmX2Ztb2QoZCwg
RDE2KTsKIAogICAgIGlmIChkMTYgPCAwKQogICAgICAgICBkMTYgKz0gRDE2OwpJbmRleDogd3Rm
L01hdGhFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvTWF0aEV4dHJhcy5oCShyZXZpc2lvbiAx
NTE1MCkKKysrIHd0Zi9NYXRoRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDEx
IEBACiAKICNpbmNsdWRlIDx4bWF0aC5oPgogCi1pbmxpbmUgYm9vbCBpc2luZihkb3VibGUgbnVt
KSB7IHJldHVybiAhX2Zpbml0ZShudW0pOyB9CisjaWYgSEFWRShGTE9BVF9IKQorI2luY2x1ZGUg
PGZsb2F0Lmg+CisjZW5kaWYKKworaW5saW5lIGJvb2wgaXNpbmYoZG91YmxlIG51bSkgeyByZXR1
cm4gIV9maW5pdGUobnVtKSAmJiAhX2lzbmFuKG51bSk7IH0KIGlubGluZSBib29sIGlzbmFuKGRv
dWJsZSBudW0pIHsgcmV0dXJuIF9pc25hbihudW0pOyB9CiBpbmxpbmUgbG9uZyBscm91bmQoZG91
YmxlIG51bSkgeyByZXR1cm4gbnVtID4gMCA/IG51bSArIDAuNSA6IGNlaWwobnVtIC0gMC41KTsg
fQogaW5saW5lIGxvbmcgbHJvdW5kZihmbG9hdCBudW0pIHsgcmV0dXJuIG51bSA+IDAgPyBudW0g
KyAwLjVmIDogY2VpbGYobnVtIC0gMC41Zik7IH0KQEAgLTM4LDMgKzQyLDE0IEBAIGlubGluZSBm
bG9hdCByb3VuZGYoZmxvYXQgbnVtKSB7IHJldHVybiAKIGlubGluZSBib29sIHNpZ25iaXQoZG91
YmxlIG51bSkgeyByZXR1cm4gX2NvcHlzaWduKDEuMCwgbnVtKSA8IDA7IH0KIAogI2VuZGlmCisK
KyNpZiBQTEFURk9STShXSU4pICYmIENPTVBJTEVSKE1TVkMpCisKKy8vIFdvcmsgYXJvdW5kIGEg
YnVnIGluIHRoZSBNaWNyb3NvZnQgQ1JULCB3aGVyZSBmbW9kKHgsICstaW5maW5pdHkpIHlpZWxk
cyBOYU4gaW5zdGVhZCBvZiB4LgoraW5saW5lIGRvdWJsZSB3dGZfZm1vZChkb3VibGUgeCwgZG91
YmxlIHkpIHsgcmV0dXJuICghaXNpbmYoeCkgJiYgaXNpbmYoeSkpID8geCA6IGZtb2QoeCwgeSk7
IH0KKworI2Vsc2UKKworaW5saW5lIGRvdWJsZSB3dGZfZm1vZChkb3VibGUgeCwgZG91YmxlIHkp
IHsgcmV0dXJuIGZtb2QoeCwgeSk7IH0KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9198</attachid>
            <date>2006-07-04 16:40:37 -0700</date>
            <delta_ts>2006-07-04 20:45:49 -0700</delta_ts>
            <desc>my alternate version of the fmod patch</desc>
            <filename>FModPatch.txt</filename>
            <type>text/plain</type>
            <size>7659</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE1MTUy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDYtMDct
MDQgIEJqb2VybiBHcmFmICA8YmpvZXJuLmdyYWZAZ21haWwuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IDxub2JvZHkteWV0LWJ1dC1kYXJpbj4uCisKKyAgICAgICAgVHdlYWtlZCBhIGxvdCBi
eSBEYXJpbiAtLSAiRGFyaW4ncyB2ZXJzaW9uIi4KKworICAgICAgICAtIHdvcmsgYXJvdW5kIE1T
VkNSVHMgZm1vZCBmdW5jdGlvbiByZXR1cm5pbmcgTmFOIGZvciBmbW9kKHgsIGluZmluaXR5KSBp
bnN0ZWFkIG9mIHgKKworICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6ICh2YWx1ZUZvclJlYWRNb2Rp
ZnlBc3NpZ25tZW50KToKKyAgICAgICAgKiBranMvbnVtYmVyX29iamVjdC5jcHA6IChOdW1iZXJQ
cm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBranMvb3BlcmF0aW9ucy5jcHA6
IChLSlM6Om11bHQpOgorICAgICAgICAqIGtqcy92YWx1ZS5jcHA6CisgICAgICAgIChLSlM6OkpT
VmFsdWU6OnRvSW50MzIpOgorICAgICAgICAoS0pTOjpKU1ZhbHVlOjp0b1VJbnQzMik6CisgICAg
ICAgIChLSlM6OkpTVmFsdWU6OnRvVUludDE2KToKKyAgICAgICAgVXNlIHd0Zl9mbW9kIGluc3Rl
YWQgb2YgdGhlIHN0cmFpZ2h0IGZtb2QuCisKKyAgICAgICAgKiB3dGYvTWF0aEV4dHJhcy5oOgor
ICAgICAgICAoaXNpbmYpOiBGaXggdG8gcmV0dXJuIGZhbHNlIGZvciBOQU4uCisgICAgICAgICh3
dGZfZm1vZCk6IEFkZGVkLiBBbiBpbmxpbmUgdGhhdCBleHBhbmRzIHRvIGZtb2QgZXhjZXB0IHdo
ZW4gdXNpbmcgTVNWQ1JULCBhbmQgdGhlbgorICAgICAgICBleHBhbmRzIHRvIGNvZGUgdGhhdCB3
b3JrcyBhcm91bmQgdGhlIGJ1Zy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IExldCBYY29kZSAyLjMgaGF2ZSBpdHMgd2F5IHdpdGgKKyAgICAg
ICAgdGhlIHByb2plY3QuCisKIDIwMDYtMDctMDEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTUxNTEpCisrKyBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgs
MjMgKzI2OCw2IEBACiAJCUUxOTU2Nzk5MDlFN0NGMTIwMEI4OUQxMyAvKiBVbmljb2RlQ2F0ZWdv
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTU2
Nzk1MDlFN0NGMTIwMEI4OUQxMyAvKiBVbmljb2RlQ2F0ZWdvcnkuaCAqLzsgfTsKIC8qIEVuZCBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCi0vKiBCZWdpbiBQQlhCdWlsZFN0eWxlIHNlY3Rpb24g
Ki8KLQkJMTRDMTM3MTMwQTU2MEU3MDAwNkNBOUFGIC8qIERldmVsb3BtZW50ICovID0gewotCQkJ
aXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9QSEFT
RV9TVFJJUCA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBEZXZlbG9wbWVudDsKLQkJfTsKLQkJMTRD
MTM3MTQwQTU2MEU3MDAwNkNBOUFGIC8qIERlcGxveW1lbnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhC
dWlsZFN0eWxlOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOwotCQkJfTsKLQkJCW5hbWUgPSBEZXBsb3ltZW50OwotCQl9OwotLyogRW5kIFBCWEJ1aWxk
U3R5bGUgc2VjdGlvbiAqLwotCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlv
biAqLwogCQkxNDEyMTEzNTBBNDg3OTYxMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwpAQCAtMTI1NCwxMiArMTIz
Nyw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9
IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5
QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
UHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07
Ci0JCQlidWlsZFN0eWxlcyA9ICgKLQkJCQkxNEMxMzcxMzBBNTYwRTcwMDA2Q0E5QUYgLyogRGV2
ZWxvcG1lbnQgKi8sCi0JCQkJMTRDMTM3MTQwQTU2MEU3MDAwNkNBOUFGIC8qIERlcGxveW1lbnQg
Ki8sCi0JCQkpOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQltYWluR3JvdXAg
PSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogSmF2YVNjcmlwdENvcmUgKi87CiAJCQlwcm9k
dWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87Cklu
ZGV4OiBranMvbm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9ub2Rlcy5jcHAJKHJldmlzaW9u
IDE1MTUxKQorKysga2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgInJlZmVyZW5jZV9saXN0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogCkBAIC0xMzY3LDcgKzEzNjgsNyBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlICp2YWx1ZUZvclJlCiAgIGNhc2UgT3BNb2RFcTogewog
ICAgIGRvdWJsZSBkMSA9IHYxLT50b051bWJlcihleGVjKTsKICAgICBkb3VibGUgZDIgPSB2Mi0+
dG9OdW1iZXIoZXhlYyk7Ci0gICAgdiA9IGpzTnVtYmVyKGZtb2QoZDEsIGQyKSk7CisgICAgdiA9
IGpzTnVtYmVyKHd0Zl9mbW9kKGQxLCBkMikpOwogICB9CiAgICAgYnJlYWs7CiAgIGRlZmF1bHQ6
CkluZGV4OiBranMvbnVtYmVyX29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL251bWJlcl9v
YmplY3QuY3BwCShyZXZpc2lvbiAxNTE1MSkKKysrIGtqcy9udW1iZXJfb2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImR0b2EuaCIKICNpbmNsdWRl
ICJlcnJvcl9vYmplY3QuaCIKICNpbmNsdWRlICJvcGVyYXRpb25zLmgiCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8bWF0aC5o
PgogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogCkBAIC0xNzcsNyArMTc3LDcgQEAgSlNWYWx1ZSAq
TnVtYmVyUHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbgogICAgICAgY2hhciAqcCA9IGRvdDsKICAg
ICAgICpwID0gJ1wwJzsKICAgICAgIGRvIHsKLSAgICAgICAgKi0tcCA9IGRpZ2l0c1tzdGF0aWNf
Y2FzdDxpbnQ+KGZtb2QoZCwgcmFkaXgpKV07CisgICAgICAgICotLXAgPSBkaWdpdHNbc3RhdGlj
X2Nhc3Q8aW50Pih3dGZfZm1vZChkLCByYWRpeCkpXTsKICAgICAgICAgZCAvPSByYWRpeDsKICAg
ICAgIH0gd2hpbGUgKChkIDw9IC0xLjAgfHwgZCA+PSAxLjApICYmIHAgPiBzKTsKICAgICAgIC8v
IGFueSBkZWNpbWFsIGZyYWN0aW9uID8KSW5kZXg6IGtqcy9vcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBranMvb3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1MTUxKQorKysga2pzL29wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMywxMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKIAorI2luY2x1ZGUgIm9iamVjdC5oIgog
I2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAKICNpZiBIQVZFKEZVTkNfSVNJTkYpICYmIEhBVkUoSUVFRUZQX0gpCiAjaW5j
bHVkZSA8aWVlZWZwLmg+CkBAIC0zNCwxNSArMzYsMTQgQEAKICNpbmNsdWRlIDxmbG9hdC5oPgog
I2VuZGlmCiAKLSNpbmNsdWRlICJvYmplY3QuaCIKLQogbmFtZXNwYWNlIEtKUyB7CiAgICAgCiAj
aWYgIVBMQVRGT1JNKERBUldJTikKLS8vIEZJWE1FOiBzaG91bGQgcHJvYmFibHkgYmUgaW5saW5l
ZCBvbiBvdGhlciBwbGF0Zm9ybXMgdG9vLCBhbmQgY29udHJvbGxlZCBleGNsdXNpdmVseQotLy8g
YnkgSEFWRSBtYWNyb3MKLSAgICAKLSAgICAKKworLy8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBi
ZSBpbmxpbmVkIG9uIG5vbi1EYXJ3aW4gcGxhdGZvcm1zIHRvbywgYW5kIGNvbnRyb2xsZWQgZXhj
bHVzaXZlbHkKKy8vIGJ5IEhBVkUgbWFjcm9zIHJhdGhlciB0aGFuIFBMQVRGT1JNLgorCisvLyBG
SVhNRTogTWVyZ2Ugd2l0aCBpc25hbiBpbiBNYXRoRXh0cmFzLmggYW5kIHJlbW92ZSB0aGlzIG9u
ZSBlbnRpcmVseS4KIGJvb2wgaXNOYU4oZG91YmxlIGQpCiB7CiAjaWYgSEFWRShGVU5DX0lTTkFO
KQpAQCAtNTQsNiArNTUsNyBAQCBib29sIGlzTmFOKGRvdWJsZSBkKQogI2VuZGlmCiB9CiAKKy8v
IEZJWE1FOiBNZXJnZSB3aXRoIGlzaW5mIGluIE1hdGhFeHRyYXMuaCBhbmQgcmVtb3ZlIHRoaXMg
b25lIGVudGlyZWx5LgogYm9vbCBpc0luZihkb3VibGUgZCkKIHsKICAgICAvLyBGSVhNRTogc2hv
dWxkIGJlIEhBVkUoX0ZQQ0xBU1MpCkBAIC0yNDQsNyArMjQ2LDcgQEAgSlNWYWx1ZSAqbXVsdChF
eGVjU3RhdGUgKmV4ZWMsIEpTVmFsdWUgKgogICAgIGVsc2UgaWYgKG9wZXIgPT0gJy8nKQogICAg
ICAgICByZXN1bHQgPSBuMSAvIG4yOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gZm1vZChu
MSwgbjIpOworICAgICAgICByZXN1bHQgPSB3dGZfZm1vZChuMSwgbjIpOwogICAgIAogICAgIHJl
dHVybiBqc051bWJlcihyZXN1bHQpOwogfQpJbmRleDoga2pzL3ZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBranMvdmFsdWUuY3BwCShyZXZpc2lvbiAxNTE1MSkKKysrIGtqcy92YWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDEzICsyNCwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgInZhbHVlLmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4K
LSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJlcnJvcl9vYmplY3QuaCIKICNpbmNsdWRlICJub2Rlcy5oIgorI2luY2x1ZGUgIm9wZXJhdGlv
bnMuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBLSlMgewogCkBAIC02NSw3ICs2NCw3IEBA
IGludDMyX3QgSlNWYWx1ZTo6dG9JbnQzMihFeGVjU3RhdGUgKmV4ZWMKICAgICBkb3VibGUgZCA9
IHJvdW5kVmFsdWUoZXhlYywgY29uc3RfY2FzdDxKU1ZhbHVlKj4odGhpcykpOwogICAgIGlmIChp
c05hTihkKSB8fCBpc0luZihkKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZG91YmxlIGQzMiA9
IGZtb2QoZCwgRDMyKTsKKyAgICBkb3VibGUgZDMyID0gd3RmX2Ztb2QoZCwgRDMyKTsKIAogICAg
IGlmIChkMzIgPj0gRDMyIC8gMikKICAgICAgICAgZDMyIC09IEQzMjsKQEAgLTg0LDcgKzgzLDcg
QEAgdWludDMyX3QgSlNWYWx1ZTo6dG9VSW50MzIoRXhlY1N0YXRlICpleAogICAgIGRvdWJsZSBk
ID0gcm91bmRWYWx1ZShleGVjLCBjb25zdF9jYXN0PEpTVmFsdWUqPih0aGlzKSk7CiAgICAgaWYg
KGlzTmFOKGQpIHx8IGlzSW5mKGQpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBkb3VibGUgZDMy
ID0gZm1vZChkLCBEMzIpOworICAgIGRvdWJsZSBkMzIgPSB3dGZfZm1vZChkLCBEMzIpOwogCiAg
ICAgaWYgKGQzMiA8IDApCiAgICAgICAgIGQzMiArPSBEMzI7CkBAIC0xMDEsNyArMTAwLDcgQEAg
dWludDE2X3QgSlNWYWx1ZTo6dG9VSW50MTYoRXhlY1N0YXRlICpleAogICAgIGRvdWJsZSBkID0g
cm91bmRWYWx1ZShleGVjLCBjb25zdF9jYXN0PEpTVmFsdWUqPih0aGlzKSk7CiAgICAgaWYgKGlz
TmFOKGQpIHx8IGlzSW5mKGQpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBkb3VibGUgZDE2ID0g
Zm1vZChkLCBEMTYpOworICAgIGRvdWJsZSBkMTYgPSB3dGZfZm1vZChkLCBEMTYpOwogCiAgICAg
aWYgKGQxNiA8IDApCiAgICAgICAgIGQxNiArPSBEMTY7CkluZGV4OiB3dGYvTWF0aEV4dHJhcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHd0Zi9NYXRoRXh0cmFzLmgJKHJldmlzaW9uIDE1MTUxKQorKysgd3Rm
L01hdGhFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksMTEgQEAKIAogI2luY2x1
ZGUgPHhtYXRoLmg+CiAKLWlubGluZSBib29sIGlzaW5mKGRvdWJsZSBudW0pIHsgcmV0dXJuICFf
ZmluaXRlKG51bSk7IH0KKyNpZiBIQVZFKEZMT0FUX0gpCisjaW5jbHVkZSA8ZmxvYXQuaD4KKyNl
bmRpZgorCitpbmxpbmUgYm9vbCBpc2luZihkb3VibGUgbnVtKSB7IHJldHVybiAhX2Zpbml0ZShu
dW0pICYmICFfaXNuYW4obnVtKTsgfQogaW5saW5lIGJvb2wgaXNuYW4oZG91YmxlIG51bSkgeyBy
ZXR1cm4gX2lzbmFuKG51bSk7IH0KIGlubGluZSBsb25nIGxyb3VuZChkb3VibGUgbnVtKSB7IHJl
dHVybiBudW0gPiAwID8gbnVtICsgMC41IDogY2VpbChudW0gLSAwLjUpOyB9CiBpbmxpbmUgbG9u
ZyBscm91bmRmKGZsb2F0IG51bSkgeyByZXR1cm4gbnVtID4gMCA/IG51bSArIDAuNWYgOiBjZWls
ZihudW0gLSAwLjVmKTsgfQpAQCAtMzgsMyArNDIsMTQgQEAgaW5saW5lIGZsb2F0IHJvdW5kZihm
bG9hdCBudW0pIHsgcmV0dXJuIAogaW5saW5lIGJvb2wgc2lnbmJpdChkb3VibGUgbnVtKSB7IHJl
dHVybiBfY29weXNpZ24oMS4wLCBudW0pIDwgMDsgfQogCiAjZW5kaWYKKworI2lmIFBMQVRGT1JN
KFdJTikgJiYgQ09NUElMRVIoTVNWQykKKworLy8gV29yayBhcm91bmQgYSBidWcgaW4gdGhlIE1p
Y3Jvc29mdCBDUlQsIHdoZXJlIGZtb2QoeCwgKy1pbmZpbml0eSkgeWllbGRzIE5hTiBpbnN0ZWFk
IG9mIHguCitpbmxpbmUgZG91YmxlIHd0Zl9mbW9kKGRvdWJsZSB4LCBkb3VibGUgeSkgeyByZXR1
cm4gKCFpc2luZih4KSAmJiBpc2luZih5KSkgPyB4IDogZm1vZCh4LCB5KTsgfQorCisjZWxzZQor
CitpbmxpbmUgZG91YmxlIHd0Zl9mbW9kKGRvdWJsZSB4LCBkb3VibGUgeSkgeyByZXR1cm4gZm1v
ZCh4LCB5KTsgfQorCisjZW5kaWYK
</data>
<flag name="review"
          id="2767"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>