This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/10437: "using namespace" at global scope creates incorrect code


>Number:         10437
>Category:       c++
>Synopsis:       "using namespace" at global scope creates incorrect code
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Sat Apr 19 00:36:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     dean at foster dot net
>Release:        g++ 3.2.2
>Organization:
>Environment:
linux
>Description:
Code compiles differently if it looks like:

using namespace foo;
main()
{
  /* ... */
}

VS:

main()
{
  using namespace foo;
   /* ... */
}

My guess is that templates in the namespace foo are instantiated incorrectly.  I'm not totally possitive this is an error, but it seems like either an error in g++, or an error in the definition of how templates should be instantiated.

I cut the file down from several 1000 lines of code to under 400 lines.  I'm sorry that I haven't been able to reproduce it with fewer lines of code.  But if you look at the last 20 lines of code, I have flagged the troublesome statement.
>How-To-Repeat:
uncomment the line marked that is near the end of the file.
>Fix:
Not a clue!  
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="namespace_error.cc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="namespace_error.cc"

Ly8gJElkOiBuYW1lc3BhY2VfZXJyb3IuY2MsdiA0LjEgMjAwMy8wNC8xOSAwMDoxODoxOCBmb3N0
ZXIgRXhwICQgIAoKCiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1
ZGUgPGl0ZXJhdG9yPgoKLy8gIEVYVEVOU0lCTEVfQklOQVJZX0lURVJBVE9SICBFWFRFTlNJQkxF
X0JJTkFSWV9JVEVSQVRPUiAgRVhURU5TSUJMRV9CSU5BUllfSVRFUkFUT1IKbmFtZXNwYWNlIHsK
ICB0ZW1wbGF0ZTxjbGFzcyBDMSwgY2xhc3MgQzI+CiAgY2xhc3MgQmFzZV9JdGVyYXRvcl9DYXRl
Z29yeTsKICAKICB0ZW1wbGF0ZSA8Y2xhc3MgQz4KICBjbGFzcyBCYXNlX0l0ZXJhdG9yX0NhdGVn
b3J5PEMsQz4KICB7CiAgICB0eXBlZGVmIEMgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgfTsKfQoKdGVt
cGxhdGU8Y2xhc3MgSTEsIGNsYXNzIEkyPgpjbGFzcyB0d29faXRlcmF0b3JfdHJhaXRzCnsKICB0
eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEkxPjo6aXRlcmF0b3JfY2F0ZWdv
cnkgaXRlcmF0b3IxX2NhdGVnb3J5OwogIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90
cmFpdHM8STI+OjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcjJfY2F0ZWdvcnk7CiAgdHlwZWRl
ZiB0eXBlbmFtZSBCYXNlX0l0ZXJhdG9yX0NhdGVnb3J5PGl0ZXJhdG9yMV9jYXRlZ29yeSxpdGVy
YXRvcjJfY2F0ZWdvcnk+OjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKfTsK
CgovKgogIEV4dGVuc2libGUgYmluYXJ5IGl0ZXJhdG9ycyBhcmUgYW5hbG9nb3VzIHRvIHVuYXJ5
IHZlcnNpb25zLCBidXQKICBzdXBwb3J0IHR3byBpdGVyYXRvcnMgcmF0aGVyIHRoYW4ganVzdCBv
bmUuCgogIE5vdGU6IGFsbCBsZW5ndGhzIGFuZCBlbmQgY29uZGl0aW9ucyBkZXRlcm1pbmVkIGJ5
IEkxLgoqLwoKdGVtcGxhdGU8Y2xhc3MgSG9zdCwgY2xhc3MgSTEsIGNsYXNzIEkyLCBjbGFzcyBD
YXRlZ29yeT4KY2xhc3MgZXh0ZW5zaWJsZV9iaW5hcnlfaXRlcmF0b3I7Cgp0ZW1wbGF0ZTxjbGFz
cyBIb3N0LCBjbGFzcyBJMSwgY2xhc3MgSTI+CmNsYXNzIGV4dGVuc2libGVfYmluYXJ5X2l0ZXJh
dG9yPEhvc3QsSTEsSTIsc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZz4Kewpwcm90ZWN0ZWQ6CiAg
STEgbUl0ZXIxOwogIEkyIG1JdGVyMjsKcHVibGljOgogIHR5cGVkZWYgZXh0ZW5zaWJsZV9iaW5h
cnlfaXRlcmF0b3I8SG9zdCxJMSxJMixjbGFzcyBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnPiB0
eXBlX29mX3RoaXM7CiAgCiAgZXh0ZW5zaWJsZV9iaW5hcnlfaXRlcmF0b3IoY29uc3QgSTEmIGl0
MSwgY29uc3QgSTImIGl0MikKICAgIDogbUl0ZXIxKGl0MSksIG1JdGVyMihpdDIpICB7ICB9Cgog
IEhvc3QmIG9wZXJhdG9yKysoKSB7ICsrbUl0ZXIxOyArK21JdGVyMjsgcmV0dXJuIHN0YXRpY19j
YXN0PEhvc3QmPigqdGhpcyk7IH0KCiAgSG9zdCBvcGVyYXRvcisrKGludCkgewogICAgSG9zdCBy
ZXN1bHQoc3RhdGljX2Nhc3Q8SG9zdCY+KCp0aGlzKSk7CiAgICArK21JdGVyMTsgKyttSXRlcjI7
CiAgICByZXR1cm4gcmVzdWx0OwogIH0KCiAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHR5cGVfb2Zf
dGhpcyYgaXQpIGNvbnN0IHsgcmV0dXJuIG1JdGVyMSAhPSBpdC5tSXRlcjE7IH0KICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgdHlwZV9vZl90aGlzJiBpdCkgY29uc3QgeyByZXR1cm4gbUl0ZXIxID09
IGl0Lm1JdGVyMTsgfQoKIHByb3RlY3RlZDoKICAKICB0eXBlbmFtZSBzdGQ6OnBhaXI8dHlwZW5h
bWUgc3RkOjppdGVyYXRvcl90cmFpdHM8STE+Ojp2YWx1ZV90eXBlLCB0eXBlbmFtZSBzdGQ6Oml0
ZXJhdG9yX3RyYWl0czxJMj46OnZhbHVlX3R5cGU+CiAgICB2YWx1ZSgpIGNvbnN0CiAgICB7IHJl
dHVybiBzdGQ6Om1ha2VfcGFpcigqbUl0ZXIxLCptSXRlcjIpOyB9CiAgCiAgdHlwZW5hbWUgc3Rk
OjppdGVyYXRvcl90cmFpdHM8STE+Ojp2YWx1ZV90eXBlCiAgICBmaXJzdCgpIGNvbnN0CiAgICB7
IHJldHVybiAqbUl0ZXIxOyB9CgogIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEkyPjo6
dmFsdWVfdHlwZQogICAgc2Vjb25kKCkgY29uc3QKICAgIHsgcmV0dXJuICptSXRlcjI7IH0KCiAg
CiAgdHlwZW5hbWUgc3RkOjpwYWlyPHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEkxPjo6
dmFsdWVfdHlwZSwgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8STI+Ojp2YWx1ZV90eXBl
PgogICAgdmFsdWUoKSAKICAgIHsgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCptSXRlcjEsKm1JdGVy
Mik7IH0KICAKICB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJMT46OnZhbHVlX3R5cGUK
ICAgIGZpcnN0KCkgCiAgICB7IHJldHVybiAqbUl0ZXIxOyB9CgogIHR5cGVuYW1lIHN0ZDo6aXRl
cmF0b3JfdHJhaXRzPEkyPjo6dmFsdWVfdHlwZQogICAgc2Vjb25kKCkKICAgIHsgcmV0dXJuICpt
SXRlcjI7IH0KCn07Cgp0ZW1wbGF0ZTxjbGFzcyBIb3N0LCBjbGFzcyBJMSwgY2xhc3MgSTI+CmNs
YXNzIGV4dGVuc2libGVfYmluYXJ5X2l0ZXJhdG9yPEhvc3QsSTEsSTIsc3RkOjpiaWRpcmVjdGlv
bmFsX2l0ZXJhdG9yX3RhZz4KIDogcHVibGljIGV4dGVuc2libGVfYmluYXJ5X2l0ZXJhdG9yPEhv
c3QsSTEsSTIsc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZz4KewogcHVibGljOgoKICBleHRlbnNp
YmxlX2JpbmFyeV9pdGVyYXRvcihjb25zdCBJMSYgaXQxLCBjb25zdCBJMiYgaXQyKQogICAgOiBl
eHRlbnNpYmxlX2JpbmFyeV9pdGVyYXRvcjxIb3N0LEkxLEkyLHN0ZDo6Zm9yd2FyZF9pdGVyYXRv
cl90YWc+KGl0MSwgaXQyKSB7IH0KCiAgSG9zdCYgb3BlcmF0b3ItLSgpIHsgLS1tSXRlcjE7IC0t
bUl0ZXIyOyByZXR1cm4gc3RhdGljX2Nhc3Q8SG9zdCY+KCp0aGlzKTsgfQoKICBIb3N0IG9wZXJh
dG9yLS0oaW50KSB7CiAgICBIb3N0IHJlc3VsdChzdGF0aWNfY2FzdDxIb3N0Jj4oKnRoaXMpKTsK
ICAgIC0tbUl0ZXIxOyAtLW1JdGVyMjsKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKfTsKCnRlbXBs
YXRlPGNsYXNzIEhvc3QsIGNsYXNzIEkxLCBjbGFzcyBJMj4KY2xhc3MgZXh0ZW5zaWJsZV9iaW5h
cnlfaXRlcmF0b3I8SG9zdCxJMSxJMixzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnPgog
IDogcHVibGljIGV4dGVuc2libGVfYmluYXJ5X2l0ZXJhdG9yPEhvc3QsSTEsSTIsc3RkOjpiaWRp
cmVjdGlvbmFsX2l0ZXJhdG9yX3RhZz4KewogcHVibGljOgogIHR5cGVkZWYgZXh0ZW5zaWJsZV9i
aW5hcnlfaXRlcmF0b3I8SG9zdCxJMSxJMixzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFn
PiB0eXBlX29mX3RoaXM7CgogIGV4dGVuc2libGVfYmluYXJ5X2l0ZXJhdG9yKGNvbnN0IEkxJiBp
dDEsIGNvbnN0IEkyJiBpdDIpCiAgICA6IGV4dGVuc2libGVfYmluYXJ5X2l0ZXJhdG9yPEhvc3Qs
STEsSTIsc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZz4oaXQxLGl0MikgeyB9CgogIEhv
c3QKICBvcGVyYXRvcisoaW50IG4pICBjb25zdCAgewogICAgSG9zdCByZXN1bHQoc3RhdGljX2Nh
c3Q8Y29uc3QgSG9zdCY+KCp0aGlzKSk7CiAgICByZXN1bHQgKz0gbjsKICAgIHJldHVybiByZXN1
bHQ7CiAgfQogIAogIEhvc3QKICBvcGVyYXRvci0oaW50IG4pICBjb25zdCAgewogICAgSG9zdCBy
ZXN1bHQoc3RhdGljX2Nhc3Q8Y29uc3QgSG9zdCY+KCp0aGlzKSk7CiAgICByZXN1bHQgLT0gbjsK
ICAgIHJldHVybiByZXN1bHQ7CiAgfQogIAogIEhvc3QmCiAgb3BlcmF0b3IrPShpbnQgbikgeyBt
SXRlcjEgKz0gbjsgbUl0ZXIyICs9IG47IHJldHVybiBzdGF0aWNfY2FzdDxIb3N0Jj4oKnRoaXMp
O30KIAogIEhvc3QmCiAgb3BlcmF0b3ItPShpbnQgbikgeyBtSXRlcjEgLT0gbjsgbUl0ZXIyICs9
IG47IHJldHVybiBzdGF0aWNfY2FzdDxIb3N0Jj4oKnRoaXMpO30KCiAgdHlwZW5hbWUgc3RkOjpp
dGVyYXRvcl90cmFpdHM8STE+OjpkaWZmZXJlbmNlX3R5cGUKICAgIG9wZXJhdG9yLShjb25zdCB0
eXBlX29mX3RoaXMmIGl0KSB7IHJldHVybiBtSXRlcjEgLSBpdC5tSXRlcjE7IH0KCiAgYm9vbAog
ICAgb3BlcmF0b3I8KGNvbnN0IHR5cGVfb2ZfdGhpcyYgaXQpIGNvbnN0IHsgcmV0dXJuIG1JdGVy
MSA8IGl0Lm1JdGVyMTsgfQogIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCB0eXBlX29mX3RoaXMm
IGl0KSBjb25zdCB7IHJldHVybiBtSXRlcjEgPiBpdC5tSXRlcjE7IH0KCn07CgoKLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICBCaW5hcnkgSXRlcmF0b3IgIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCnRlbXBsYXRlIDxjbGFzcyBGLCBjbGFz
cyBCYXNlSXRlcjEsIGNsYXNzIEJhc2VJdGVyMj4KY2xhc3MgYmluYXJ5X2l0ZXJhdG9yIDogcHJv
dGVjdGVkIEYsCiAgICAgICAgcHVibGljIGV4dGVuc2libGVfYmluYXJ5X2l0ZXJhdG9yPGJpbmFy
eV9pdGVyYXRvcjxGLEJhc2VJdGVyMSxCYXNlSXRlcjI+LAoJCQkJCSAgQmFzZUl0ZXIxLCBCYXNl
SXRlcjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1l
IHR3b19pdGVyYXRvcl90cmFpdHM8QmFzZUl0ZXIxLEJhc2VJdGVyMj46Oml0ZXJhdG9yX2NhdGVn
b3J5PiwKICAgICAgICBwdWJsaWMgc3RkOjppdGVyYXRvcjx0eXBlbmFtZSB0d29faXRlcmF0b3Jf
dHJhaXRzPEJhc2VJdGVyMSxCYXNlSXRlcjI+OjppdGVyYXRvcl9jYXRlZ29yeSwgdHlwZW5hbWUg
Rjo6cmVzdWx0X3R5cGU+CnsKcHVibGljOgogIHR5cGVkZWYgICAgICAgICAgYmluYXJ5X2l0ZXJh
dG9yPEYsQmFzZUl0ZXIxLEJhc2VJdGVyMj4gSG9zdDsKICB0eXBlZGVmIHR5cGVuYW1lIHR3b19p
dGVyYXRvcl90cmFpdHM8QmFzZUl0ZXIxLEJhc2VJdGVyMj46Oml0ZXJhdG9yX2NhdGVnb3J5IGl0
ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgICAgICAgICAgZXh0ZW5zaWJsZV9iaW5hcnlfaXRl
cmF0b3I8SG9zdCxCYXNlSXRlcjEsQmFzZUl0ZXIyLGl0ZXJhdG9yX2NhdGVnb3J5PiBleHRlbnNp
YmxlX2l0ZXJhdG9yOwogIAogIGJpbmFyeV9pdGVyYXRvcihjb25zdCBGJiBmLCBjb25zdCBCYXNl
SXRlcjEmIGl0MSwgY29uc3QgQmFzZUl0ZXIyJiBpdDIpCiAgICA6IEYoZiksIGV4dGVuc2libGVf
aXRlcmF0b3IoaXQxLCBpdDIpIHsgfQoKICB0eXBlbmFtZSBGOjpyZXN1bHRfdHlwZQogIG9wZXJh
dG9yKigpCiAgeyByZXR1cm4gb3BlcmF0b3IoKShmaXJzdCgpLCBzZWNvbmQoKSk7IH0KCiAgdHlw
ZW5hbWUgRjo6cmVzdWx0X3R5cGUKICBvcGVyYXRvciooKSBjb25zdAogIHsgcmV0dXJuIG9wZXJh
dG9yKCkoZmlyc3QoKSwgc2Vjb25kKCkpOyB9CgogIGV4dGVuc2libGVfaXRlcmF0b3I6Om9wZXJh
dG9yPT07CiAgZXh0ZW5zaWJsZV9pdGVyYXRvcjo6b3BlcmF0b3IhPTsKCn07CgoKLy8gUkFOR0Ug
UkFOR0UgUkFOR0UgUkFOR0UgUkFOR0UgUkFOR0UgUkFOR0UgUkFOR0UgUkFOR0UgUkFOR0UgUkFO
R0UgUkFOR0UgUkFOR0UgUkFOR0UgUkFOR0UKCnRlbXBsYXRlIDxjbGFzcyBJdGVyPgpjbGFzcyBy
YW5nZQp7CnB1YmxpYzoKCiAgY29uc3QgSXRlciBmaXJzdDsKICBjb25zdCBJdGVyIHNlY29uZDsK
CiAgcmFuZ2UgKEl0ZXIgYmVnaW4sIEl0ZXIgZW5kKQogICAgOiBmaXJzdChiZWdpbiksIHNlY29u
ZChlbmQpIHsgfQogIAogIHJhbmdlICggY29uc3QgcmFuZ2U8SXRlcj4mIHIgKQogICAgOiBmaXJz
dChyLmZpcnN0KSwgc2Vjb25kKHIuc2Vjb25kKSB7IH0KfTsKCgovLyBCRUdJTiBCRUdJTiBCRUdJ
TiBCRUdJTiBCRUdJTiBCRUdJTiBCRUdJTiBCRUdJTiBCRUdJTiBCRUdJTiBCRUdJTiBCRUdJTiBC
RUdJTiBCRUdJTiBCRUdJTiBCRUdJTgoKdGVtcGxhdGU8Y2xhc3MgQ29udGFpbmVyPgppbmxpbmUK
dHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvcgpiZWdpbihjb25zdCBDb250YWluZXIm
IGNvbnRhaW5lcikKewogIC8vIHN0ZDo6Y291dCA8PCAiYmVnaW4gZm9yIGNvbnRhaW5lciBvZiBz
aXplICIgPDwgY29udGFpbmVyLnNpemUoKSA8PCBzdGQ6OmVuZGw7CiAgcmV0dXJuIGNvbnRhaW5l
ci5iZWdpbigpOwp9CgoKdGVtcGxhdGU8Y2xhc3MgSXRlcj4KaW5saW5lCkl0ZXIKYmVnaW4ocmFu
Z2U8SXRlcj4gcikKewogIHJldHVybiByLmZpcnN0Owp9CgoKLy8gRU5EICBFTkQgIEVORCAgRU5E
ICBFTkQgIEVORCAgRU5EICBFTkQgIEVORCAgRU5EICBFTkQgIEVORCAgRU5EICBFTkQgIEVORCAg
RU5EICBFTkQgIEVORCAgRU5EIAoKdGVtcGxhdGU8Y2xhc3MgQ29udGFpbmVyPgppbmxpbmUKdHlw
ZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvcgplbmQoY29uc3QgQ29udGFpbmVyJiBjb250
YWluZXIpCnsKICAvLyBzdGQ6OmNvdXQgPDwgImVuZCBmb3IgY29udGFpbmVyIG9mIHNpemUgIiA8
PCBjb250YWluZXIuc2l6ZSgpIDw8IHN0ZDo6ZW5kbDsKICByZXR1cm4gY29udGFpbmVyLmVuZCgp
Owp9CiAgCgp0ZW1wbGF0ZTxjbGFzcyBJdGVyPgppbmxpbmUKSXRlcgplbmQocmFuZ2U8SXRlcj4g
cikKewogIHJldHVybiByLnNlY29uZDsKfQoKCgovLyAgT1VUUFVUIE9VVFBVVCBPVVRQVVQgT1VU
UFVUIE9VVFBVVCBPVVRQVVQgT1VUUFVUIE9VVFBVVCBPVVRQVVQgT1VUUFVUIE9VVFBVVCBPVVRQ
VVQgT1VUUFVUCgp0ZW1wbGF0ZSA8Y2xhc3MgSXRlcj4KaW5saW5lIHN0ZDo6b3N0cmVhbSYKb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCByYW5nZTxJdGVyPiYgcikKewogIHR5cGVk
ZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcj46OnZhbHVlX3R5cGUgbG9jYWxf
dHlwZTsKICBzdGQ6OmNvcHkoIGJlZ2luKHIpLCBlbmQociksICBzdGQ6Om9zdHJlYW1faXRlcmF0
b3I8bG9jYWxfdHlwZT4ob3MsICIgIikpOwogIG9zIDw8IHN0ZDo6ZW5kbDsKICByZXR1cm4gb3M7
Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgpjbGFzcyByYW5nZV90cmFpdHMgOiBwdWJs
aWMgc3RkOjppdGVyYXRvcl90cmFpdHM8dHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRv
cj4KewpwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9y
IGNvbnN0X2l0ZXJhdG9yOwogIHR5cGVkZWYgcmFuZ2U8Y29uc3RfaXRlcmF0b3I+ICAgICAgICAg
ICAgICByYW5nZTsKfTsKCgoKdGVtcGxhdGUgPGNsYXNzIEl0ZXI+CmNsYXNzIHJhbmdlX3RyYWl0
czxyYW5nZTwgSXRlciA+ID4gOiBwdWJsaWMgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcj4Kewpw
dWJsaWM6CiAgdHlwZWRlZiBJdGVyICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3I7CiAg
dHlwZWRlZiByYW5nZTxjb25zdF9pdGVyYXRvcj4gcmFuZ2U7Cn07CgoKCgovLyBCSU5BUllfUkFO
R0VfVFJBSVRTICAgQklOQVJZX1JBTkdFX1RSQUlUUyAgIEJJTkFSWV9SQU5HRV9UUkFJVFMgICBC
SU5BUllfUkFOR0VfVFJBSVRTCgp0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBJMSwgY2xhc3MgSTI+
CmNsYXNzIGJpbmFyeV9pdGVyYXRvcjsKCnRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBSYW5nZTEs
IGNsYXNzIFJhbmdlMj4KY2xhc3MgYmluYXJ5X3JhbmdlX3RyYWl0cyAKewpwcml2YXRlOgogIHR5
cGVkZWYgICAgICAgICAgcmFuZ2VfdHJhaXRzPFJhbmdlMT4gYmFzZV90cmFpdHMxOwogIHR5cGVk
ZWYgICAgICAgICAgcmFuZ2VfdHJhaXRzPFJhbmdlMj4gYmFzZV90cmFpdHMyOwogIHR5cGVkZWYg
dHlwZW5hbWUgYmFzZV90cmFpdHMxOjpjb25zdF9pdGVyYXRvciBiYXNlX2l0ZXJhdG9yMTsKICB0
eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHJhaXRzMjo6Y29uc3RfaXRlcmF0b3IgYmFzZV9pdGVyYXRv
cjI7CiAgdHlwZWRlZiB0eXBlbmFtZSB0d29faXRlcmF0b3JfdHJhaXRzPGJhc2VfaXRlcmF0b3Ix
LCBiYXNlX2l0ZXJhdG9yMj46Oml0ZXJhdG9yX2NhdGVnb3J5IGJhc2VfY2F0ZWdvcnk7CgpwdWJs
aWM6CiAgdHlwZWRlZiAgICAgICAgICBiaW5hcnlfaXRlcmF0b3I8RiwgYmFzZV9pdGVyYXRvcjEs
IGJhc2VfaXRlcmF0b3IyPiBjb25zdF9pdGVyYXRvcjsKICB0eXBlZGVmICAgICAgICAgIHJhbmdl
PGNvbnN0X2l0ZXJhdG9yPiByYW5nZTsKfTsKCgoKCi8vIE1BS0VfUkFOR0UgIE1BS0VfUkFOR0Ug
IE1BS0VfUkFOR0UgIE1BS0VfUkFOR0UgIE1BS0VfUkFOR0UgIE1BS0VfUkFOR0UgIE1BS0VfUkFO
R0UgIE1BS0VfUkFOR0UgIAoKCnRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+CnJhbmdlPHR5
cGVuYW1lIHJhbmdlX3RyYWl0czxDb250YWluZXI+Ojpjb25zdF9pdGVyYXRvcj4KbWFrZV9yYW5n
ZShjb25zdCBDb250YWluZXImIGMpCnsKICAvLyBzdGQ6OmNvdXQgPDwgIm1ha2luZyBhIGNvbnRh
aW5lciByYW5nZS4iIDw8IHN0ZDo6ZW5kbDsKICByZXR1cm4gcmFuZ2U8dHlwZW5hbWUgcmFuZ2Vf
dHJhaXRzPENvbnRhaW5lcj46OmNvbnN0X2l0ZXJhdG9yPihiZWdpbihjKSwgZW5kKGMpKTsKfQoK
Ci8vIE1BS0VfQklOQVJZX1JBTkdFICBNQUtFX0JJTkFSWV9SQU5HRSAgTUFLRV9CSU5BUllfUkFO
R0UgIE1BS0VfQklOQVJZX1JBTkdFICBNQUtFX0JJTkFSWV9SQU5HRSAgCgoKdGVtcGxhdGUgPGNs
YXNzIEYsIGNsYXNzIFJhbmdlMSwgY2xhc3MgUmFuZ2UyPgp0eXBlbmFtZSBiaW5hcnlfcmFuZ2Vf
dHJhaXRzPEYsUmFuZ2UxLFJhbmdlMj46OnJhbmdlCm1ha2VfYmluYXJ5X3JhbmdlIChjb25zdCBG
JiBmLCBjb25zdCBSYW5nZTEmIHJhbmdlMSwgY29uc3QgUmFuZ2UyJiByYW5nZTIpCnsKICB0eXBl
ZGVmIGJpbmFyeV9yYW5nZV90cmFpdHM8RixSYW5nZTEsUmFuZ2UyPiB0cmFpdHM7CiAgdHlwZWRl
ZiB0eXBlbmFtZSB0cmFpdHM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogIHJldHVy
biB0eXBlbmFtZSB0cmFpdHM6OnJhbmdlKGNvbnN0X2l0ZXJhdG9yKGYsIGJlZ2luKHJhbmdlMSks
IGJlZ2luKHJhbmdlMikpLAoJCQkJY29uc3RfaXRlcmF0b3IoZiwgZW5kKHJhbmdlMSksIGVuZChy
YW5nZTIpKSApOwp9CgoKCm5hbWVzcGFjZSBhcGwKeyAgCiAgCiAgCiAgLy8gKy0qLyAgKy0qLyAg
Ky0qLyAgKy0qLyAgKy0qLyAgKy0qLyAgKy0qLyAgKy0qLyAgKy0qLyAgKy0qLyAgKy0qLyAgKy0q
LyAgKy0qLyAgKy0qLyAgKy0qLyAgKy0qLyAgKy0qLyAgCiAgCiAgdGVtcGxhdGUgPGNsYXNzIFJh
bmdlMSwgY2xhc3MgUmFuZ2UyPgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBiaW5hcnlfcmFuZ2Vf
dHJhaXRzPHN0ZDo6bXVsdGlwbGllczx0eXBlbmFtZSByYW5nZV90cmFpdHM8UmFuZ2UxPjo6dmFs
dWVfdHlwZT4sICBSYW5nZTEsICBSYW5nZTI+OjpyYW5nZQogICAgb3BlcmF0b3IqKGNvbnN0IFJh
bmdlMSYgcmFuZ2UxLCAgY29uc3QgUmFuZ2UyJiByYW5nZTIpCiAgICB7CiAgICAgIHJldHVybiBt
YWtlX2JpbmFyeV9yYW5nZShzdGQ6Om11bHRpcGxpZXM8dHlwZW5hbWUgcmFuZ2VfdHJhaXRzPFJh
bmdlMT46OnZhbHVlX3R5cGU+KCksCgkJCSAgICAgICBtYWtlX3JhbmdlKHJhbmdlMSksICAgIC8v
IG1ha2UgcmFuZ2UgbmVlZGVkPwoJCQkgICAgICAgbWFrZV9yYW5nZShyYW5nZTIpKTsKICAgIH0K
CiAgdGVtcGxhdGUgPGNsYXNzIFJhbmdlMSxjbGFzcyBSYW5nZTI+CiAgICBpbmxpbmUKICAgIHR5
cGVuYW1lIGJpbmFyeV9yYW5nZV90cmFpdHM8c3RkOjptaW51czx0eXBlbmFtZSByYW5nZV90cmFp
dHM8UmFuZ2UxPjo6dmFsdWVfdHlwZT4sICBSYW5nZTEsICBSYW5nZTI+OjpyYW5nZQogICAgb3Bl
cmF0b3ItKGNvbnN0IFJhbmdlMSYgcmFuZ2UxLCAgY29uc3QgUmFuZ2UyJiByYW5nZTIpCiAgICB7
CiAgICAgIHJldHVybiBtYWtlX2JpbmFyeV9yYW5nZShzdGQ6Om1pbnVzPHR5cGVuYW1lIHJhbmdl
X3RyYWl0czxSYW5nZTE+Ojp2YWx1ZV90eXBlPigpLCByYW5nZTEsIHJhbmdlMik7CiAgICB9Cgp9
IAoKCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
Ly8KLy8KLy8KLy8gIFVOQ09NTUVOVElORyBUSElTIEZPTExPV0lORyBMSU5FIENBVVNFUyBHKysg
My4yLjIgdG8gY29tcGxhaW4gCi8vCi8vICB1c2luZyBuYW1lc3BhY2UgYXBsOwovLwovLwovLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCgppbnQgbWFp
bigpCnsKICBzdGQ6OnZlY3Rvcjxkb3VibGU+IFg7CgogIHN0ZDo6Y291dCA8PCAiICBzcXVhcmVk
IHZpYSAqOiAgICAgICAgICAiIDw8IGFwbDo6b3BlcmF0b3IqKFgsWCk7Cn0KCg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]