digitalmars.D.learn - Access violation after calling ShowWindow
- "Simen Kjaeraas" <simen.kjaras gmail.com> Sep 22 2008
------------7COv6rEukTQeYt7sxwtR8h Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8 Content-Transfer-Encoding: 7bit After porting one of NeHe's OpenGL lessons (http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=01) to D, I'm getting some weird behavior. First, each and all of these lines give me an access violation: ShowWindow(hWnd, SW_SHOW); // gives no error if I instead use SW_SHOWNA SetForegroundWindow(hWnd); SetFocus(hWnd); Next, though I've gotten a proper drawing and rendering context, and all OpenGL functions now seem to point in the right directions (I get no errors calling them), my window refuses to update, so it just copies whatever is underneath, and never draws anything over it. Any help available? -- Simen ------------7COv6rEukTQeYt7sxwtR8h Content-Disposition: attachment; filename=error.d Content-Type: application/octet-stream; name=error.d Content-Transfer-Encoding: Base64 aW1wb3J0IHdpbjMyLndpbmRvd3M7DQppbXBvcnQgc3RkLnN0cmluZzsNCi8vaW1w b3J0IGdsLmdsOyAvLyBjb21tZW50ZWQgb3V0IGR1ZSB0byBpbXByb3BlciBuYW1l IG1hbmdsaW5lDQovL2ltcG9ydCBnbC5nbHU7DQppbXBvcnQgc3RkLmxvYWRlcjsN CmltcG9ydCBzdGQuc3RkaW87DQoNCnByYWdtYShsaWIsICJvcGVuZ2wzMi5saWIi KTsNCnByYWdtYShsaWIsICJnZGkzMi5saWIiKTsNCg0KYWxpYXMgRGVmV2luZG93 UHJvY0EgRGVmV2luZG93UHJvYzsNCg0KZXh0ZXJuIChDKSB2b2lkIGdjX2luaXQo KTsNCmV4dGVybiAoQykgdm9pZCBnY190ZXJtKCk7DQpleHRlcm4gKEMpIHZvaWQg X21pbml0KCk7DQpleHRlcm4gKEMpIHZvaWQgX21vZHVsZUN0b3IoKTsNCmV4dGVy biAoQykgdm9pZCBfbW9kdWxlRHRvcigpOw0KZXh0ZXJuIChDKSB2b2lkIF9tb2R1 bGVVbml0VGVzdHMoKTsNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vDQphbGlhcyB1aW50CUdMZW51bTsNCmFsaWFzIHVieXRlCUdMYm9v bGVhbjsNCmFsaWFzIHVpbnQJR0xiaXRmaWVsZDsNCmFsaWFzIHZvaWQJR0x2b2lk Ow0KYWxpYXMgYnl0ZQlHTGJ5dGU7DQphbGlhcyBzaG9ydAlHTHNob3J0Ow0KYWxp YXMgaW50CUdMaW50Ow0KYWxpYXMgdWJ5dGUJR0x1Ynl0ZTsNCmFsaWFzIHVzaG9y dAlHTHVzaG9ydDsNCmFsaWFzIHVpbnQJR0x1aW50Ow0KYWxpYXMgaW50CUdMc2l6 ZWk7DQphbGlhcyBmbG9hdAlHTGZsb2F0Ow0KYWxpYXMgZmxvYXQJR0xjbGFtcGY7 DQphbGlhcyBkb3VibGUJR0xkb3VibGU7DQphbGlhcyBkb3VibGUJR0xjbGFtcGQ7 DQphbGlhcyBjaGFyCUdMY2hhcjsNCmFsaWFzIHB0cmRpZmZfdAlHTGludHB0cjsN CmFsaWFzIHB0cmRpZmZfdAlHTHNpemVpcHRyOw0KDQoNCmNvbnN0IEdMdWludCBH TF9DT0xPUl9CVUZGRVJfQklUCQk9IDB4MDAwMDQwMDA7DQpjb25zdCBHTHVpbnQg R0xfREVQVEhfQlVGRkVSX0JJVAkJPSAweDAwMDAwMTAwOw0KY29uc3QgR0x1aW50 IEdMX1NNT09USAkJCQk9IDB4MUQwMTsNCmNvbnN0IEdMdWludCBHTF9ERVBUSF9U RVNUCQkJPSAweDBCNzE7DQpjb25zdCBHTHVpbnQgR0xfTEVRVUFMCQkJCT0gMHgw MjAzOw0KY29uc3QgR0x1aW50IEdMX01PREVMVklFVwkJCT0gMHgxNzAwOw0KY29u c3QgR0x1aW50IEdMX1BST0pFQ1RJT04JCQk9IDB4MTcwMTsNCmNvbnN0IEdMdWlu dCBHTF9QRVJTUEVDVElWRV9DT1JSRUNUSU9OX0hJTlQJPSAweDBDNTA7DQpjb25z dCBHTHVpbnQgR0xfTklDRVNUCQkJCT0gMHgxMTAyOw0KDQpleHRlcm4gKFdpbmRv d3MpDQp7DQp0eXBlZGVmIHZvaWQgZnVuY3Rpb24oR0xiaXRmaWVsZCkgcGZnbENs ZWFyOw0KdHlwZWRlZiBHTHZvaWQgZnVuY3Rpb24oR0xlbnVtKSBwZmdsU2hhZGVN b2RlbDsNCnR5cGVkZWYgR0x2b2lkIGZ1bmN0aW9uKEdMY2xhbXBmLCBHTGNsYW1w ZiwgR0xjbGFtcGYsIEdMY2xhbXBmKSBwZmdsQ2xlYXJDb2xvcjsNCnR5cGVkZWYg R0x2b2lkIGZ1bmN0aW9uKEdMY2xhbXBkKSBwZmdsQ2xlYXJEZXB0aDsNCnR5cGVk ZWYgR0x2b2lkIGZ1bmN0aW9uKCkgcGZnbExvYWRJZGVudGl0eTsNCnR5cGVkZWYg R0x2b2lkIGZ1bmN0aW9uKEdMZW51bSkgcGZnbE1hdHJpeE1vZGU7DQp0eXBlZGVm IEdMdm9pZCBmdW5jdGlvbihHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWkp IHBmZ2xWaWV3cG9ydDsNCnR5cGVkZWYgR0x2b2lkIGZ1bmN0aW9uKEdMZW51bSkg cGZnbEVuYWJsZTsNCnR5cGVkZWYgR0x2b2lkIGZ1bmN0aW9uKEdMZW51bSkgcGZn bERlcHRoRnVuYzsNCnR5cGVkZWYgR0x2b2lkIGZ1bmN0aW9uKEdMZW51bSwgR0xl bnVtKSBwZmdsSGludDsNCnBmZ2xIaW50CQkJCWdsSGludDsNCnBmZ2xEZXB0aEZ1 bmMJCQlnbERlcHRoRnVuYzsNCnBmZ2xFbmFibGUJCQkJZ2xFbmFibGU7DQpwZmds Vmlld3BvcnQJCQlnbFZpZXdwb3J0Ow0KcGZnbE1hdHJpeE1vZGUJCQlnbE1hdHJp eE1vZGU7DQpwZmdsTG9hZElkZW50aXR5CQlnbExvYWRJZGVudGl0eTsNCnBmZ2xD bGVhckRlcHRoCQkJZ2xDbGVhckRlcHRoOw0KcGZnbENsZWFyQ29sb3IJCQlnbENs ZWFyQ29sb3I7DQpwZmdsQ2xlYXIJCQkJZ2xDbGVhcjsNCnBmZ2xTaGFkZU1vZGVs CQkJZ2xTaGFkZU1vZGVsOw0KDQp0eXBlZGVmIEdMdm9pZCBmdW5jdGlvbihHTGRv dWJsZSwgR0xkb3VibGUsIEdMZG91YmxlLCBHTGRvdWJsZSkgcGZnbHVQZXJzcGVj dGl2ZTsNCnBmZ2x1UGVyc3BlY3RpdmUJCWdsdVBlcnNwZWN0aXZlOw0KfQ0KDQpw cml2YXRlIEhYTW9kdWxlIGdsZHJ2Ow0KcHJpdmF0ZSBIWE1vZHVsZSBnbHVkcnY7 DQoNCnByaXZhdGUgdm9pZCogZ2V0UHJvYyAoSFhNb2R1bGUgbW9kLCBzdHJpbmcg cHJvY25hbWUpIHsNCgl2b2lkKiBzeW1ib2wgPSBFeGVNb2R1bGVfR2V0U3ltYm9s KG1vZCwgcHJvY25hbWUpOw0KCWlmIChzeW1ib2wgaXMgbnVsbCkNCgkJcHJpbnRm ICgoIkZhaWxlZCB0byBsb2FkIHByb2MgYWRkcmVzcyAiIH4gcHJvY25hbWUgfiAi LlxuXDAiKS5wdHIpOw0KCXJldHVybiBzeW1ib2w7DQp9DQoNCnN0YXRpYyB0aGlz ICgpIHsNCgl2ZXJzaW9uIChXaW5kb3dzKSB7DQoJCWdsZHJ2ID0gRXhlTW9kdWxl X0xvYWQoIk9wZW5HTDMyLmRsbCIpOw0KCX0gZWxzZSB2ZXJzaW9uIChsaW51eCkg ew0KCQlnbGRydiA9IEV4ZU1vZHVsZV9Mb2FkKCJsaWJHTC5zbyIpOw0KCX0gZWxz ZSB2ZXJzaW9uIChkYXJ3aW4pIHsNCgkJZ2xkcnYgPSBFeGVNb2R1bGVfTG9hZCgi L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yayIpOw0K CX0NCgl2ZXJzaW9uKFdpbmRvd3MpIHsNCgkJZ2x1ZHJ2ID0gRXhlTW9kdWxlX0xv YWQoImdsdTMyLmRsbCIpOw0KCX0gZWxzZSB2ZXJzaW9uIChsaW51eCkgew0KCQln bHVkcnYgPSBFeGVNb2R1bGVfTG9hZCgibGliR0xVLnNvIik7DQoJfSBlbHNlIHZl cnNpb24gKGRhcndpbikgew0KCQlnbHVkcnYgPSBFeGVNb2R1bGVfTG9hZCgiL1N5 c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yayIpOw0KCX0N CgkNCglnbEhpbnQgPSBjYXN0KHBmZ2xIaW50KWdldFByb2MoZ2xkcnYsICJnbEhp bnQiKTsNCglnbERlcHRoRnVuYyA9IGNhc3QocGZnbERlcHRoRnVuYylnZXRQcm9j KGdsZHJ2LCAiZ2xEZXB0aEZ1bmMiKTsNCglnbEVuYWJsZSA9IGNhc3QocGZnbEVu YWJsZSlnZXRQcm9jKGdsZHJ2LCAiZ2xFbmFibGUiKTsNCglnbFZpZXdwb3J0ID0g Y2FzdChwZmdsVmlld3BvcnQpZ2V0UHJvYyhnbGRydiwgImdsVmlld3BvcnQiKTsN CglnbE1hdHJpeE1vZGUgPSBjYXN0KHBmZ2xNYXRyaXhNb2RlKWdldFByb2MoZ2xk cnYsICJnbE1hdHJpeE1vZGUiKTsNCglnbExvYWRJZGVudGl0eSA9IGNhc3QocGZn bExvYWRJZGVudGl0eSlnZXRQcm9jKGdsZHJ2LCAiZ2xMb2FkSWRlbnRpdHkiKTsN CglnbENsZWFyRGVwdGggPSBjYXN0KHBmZ2xDbGVhckRlcHRoKWdldFByb2MoZ2xk cnYsICJnbENsZWFyRGVwdGgiKTsNCglnbENsZWFyQ29sb3IgPSBjYXN0KHBmZ2xD bGVhckNvbG9yKWdldFByb2MoZ2xkcnYsICJnbENsZWFyQ29sb3IiKTsNCglnbENs ZWFyID0gY2FzdChwZmdsQ2xlYXIpZ2V0UHJvYyhnbGRydiwgImdsQ2xlYXIiKTsN CglnbFNoYWRlTW9kZWwgPSBjYXN0KHBmZ2xTaGFkZU1vZGVsKWdldFByb2MoZ2xk cnYsICJnbFNoYWRlTW9kZWwiKTsNCglnbHVQZXJzcGVjdGl2ZSA9IGNhc3QocGZn bHVQZXJzcGVjdGl2ZSlnZXRQcm9jKGdsdWRydiwgImdsdVBlcnNwZWN0aXZlIik7 DQp9DQoNCnN0YXRpYyB+dGhpcygpDQp7DQoJRXhlTW9kdWxlX1JlbGVhc2UoZ2xk cnYpOw0KfQ0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLw0KDQpjbGFzcyBHYW1lDQp7DQoJV2luZG93IHduZDsNCglib29sIHRlcm1p bmF0ZWQ7DQoJYm9vbCBhY3RpdmU7DQoJDQoJdGhpcygpDQoJew0KCQl3bmQgPSBu ZXcgV2luZG93KCk7DQoJCXduZC5zaG93KCk7DQoJCXduZC5yZXNpemVTY2VuZSg2 NDAsIDQ4MCk7DQoJCXduZC5pbml0KCk7DQoJCWFjdGl2ZSA9IHRydWU7DQoJCXRl cm1pbmF0ZWQgPSBmYWxzZTsNCgl9DQoJDQoJdm9pZCBkcmF3U2NlbmUoZmxvYXQg dCkNCgl7DQoJCWdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRI X0JVRkZFUl9CSVQpOw0KCQlnbExvYWRJZGVudGl0eSgpOw0KCX0NCgkNCgl2b2lk IHN0ZXAoZmxvYXQgdCkNCgl7DQoJfQ0KfQ0KDQpjbGFzcyBXaW5kb3cNCnsNCglI R0xSQwkJaFJDOw0KCUhEQwkJCWhEQzsNCglIV05ECQloV25kOw0KCUhJTlNUQU5D RQloSW5zdDsNCglSRUNUCQlyZWN0Ow0KCVdORENMQVNTRVgJd2M7DQoJdWludAkJ ZHdFeFN0eWxlOw0KCXVpbnQJCWR3U3R5bGU7DQoJYm9vbAkJdmlzaWJsZTsNCglH THVpbnQJCVBpeGVsRm9ybWF0Ow0KCXN0cmluZwkJdGl0bGU7DQoJDQoJdGhpcyhp bnQgd2lkdGggPSA2NDAsIGludCBoZWlnaHQgPSA0ODAsIGJvb2wgX3Zpc2libGUg PSBmYWxzZSkNCgl7DQoJCXJlY3QubGVmdAkJCT0gMDsNCgkJcmVjdC50b3AJCQk9 IDA7DQoJCXJlY3QucmlnaHQJCQk9IHdpZHRoOw0KCQlyZWN0LmJvdHRvbQkJCT0g aGVpZ2h0Ow0KCQkNCgkJaEluc3QJCQkJPSBHZXRNb2R1bGVIYW5kbGUobnVsbCk7 DQoJCXdjLnN0eWxlCQkJPSBDU19IUkVEUkFXIHwgQ1NfVlJFRFJBVyB8IENTX09X TkRDOw0KCQl3Yy5scGZuV25kUHJvYwkJPSAmV25kUHJvYzsNCgkJd2MuY2JDbHNF eHRyYQkJPSAwOw0KCQl3Yy5jYlduZEV4dHJhCQk9IDA7DQoJCXdjLmhJbnN0YW5j ZQkJPSBoSW5zdDsNCgkJd2MuaEljb24JCQk9IExvYWRJY29uKG51bGwsIElESV9X SU5MT0dPKTsNCgkJd2MuaEN1cnNvcgkJCT0gTG9hZEN1cnNvcihudWxsLCBJRENf QVJST1cpOw0KCQl3Yy5oYnJCYWNrZ3JvdW5kCT0gbnVsbDsNCgkJd2MubHBzek1l bnVOYW1lCQk9IG51bGw7DQoJCXdjLmxwc3pDbGFzc05hbWUJPSBjYXN0KGNoYXIq KXRvU3RyaW5neigiT3BlbkdMIik7DQoJCQ0KCQlpZiAoIVJlZ2lzdGVyQ2xhc3NF eCgmd2MpKQ0KCQl7DQoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJBYWFhYWFhYWdo ISIpOw0KCQl9DQoJCQ0KCQlkd0V4U3R5bGUJfD0gV1NfRVhfQVBQV0lORE9XIHwg V1NfRVhfV0lORE9XRURHRTsNCgkJZHdTdHlsZQkJfD0gV1NfT1ZFUkxBUFBFRFdJ TkRPVzsNCgkJDQoJCUFkanVzdFdpbmRvd1JlY3RFeCgmcmVjdCwgZHdTdHlsZSwg ZmFsc2UsIGR3RXhTdHlsZSk7DQoJCQ0KCQlpZiAoKGhXbmQgPSBDcmVhdGVXaW5k b3dFeCgNCgkJCQlkd0V4U3R5bGUsDQoJCQkJd2MubHBzekNsYXNzTmFtZSwNCgkJ CQljYXN0KGNoYXIqKXRvU3RyaW5neih0aXRsZSksDQoJCQkJV1NfQ0xJUFNJQkxJ TkdTIHwNCgkJCQlXU19DTElQQ0hJTERSRU4gfA0KCQkJCWR3U3R5bGUsDQoJCQkJ MCwgMCwNCgkJCQlyZWN0LnJpZ2h0LXJlY3QubGVmdCwNCgkJCQlyZWN0LmJvdHRv bS1yZWN0LnRvcCwNCgkJCQludWxsLA0KCQkJCW51bGwsDQoJCQkJaEluc3QsDQoJ CQkJbnVsbCkpID09IG51bGwpDQoJCXsNCgkJCXRocm93IG5ldyBFeGNlcHRpb24o IkFhYWFhYWFhZ2ghIik7DQoJCX0NCgkJDQoJCVBJWEVMRk9STUFUREVTQ1JJUFRP UiBwZmQgPSBQSVhFTEZPUk1BVERFU0NSSVBUT1IoDQoJCQkJUElYRUxGT1JNQVRE RVNDUklQVE9SLnNpemVvZiwNCgkJCQkxLA0KCQkJCVBGRF9EUkFXX1RPX1dJTkRP VyB8DQoJCQkJUEZEX1NVUFBPUlRfT1BFTkdMIHwNCgkJCQlQRkRfRE9VQkxFQlVG RkVSLA0KCQkJCVBGRF9UWVBFX1JHQkEsDQoJCQkJMzIsDQoJCQkJMCwgMCwgMCwg MCwgMCwgMCwNCgkJCQkwLA0KCQkJCTAsDQoJCQkJMCwNCgkJCQkwLCAwLCAwLCAw LA0KCQkJCTE2LA0KCQkJCTAsDQoJCQkJMCwNCgkJCQlQRkRfTUFJTl9QTEFORSwN CgkJCQkwLA0KCQkJCTAsIDAsIDANCgkJCSk7DQoJCQ0KCQlpZiAoKGhEQyA9IEdl dERDKGhXbmQpKSA9PSBudWxsKQ0KCQl7DQoJCQl0aHJvdyBuZXcgRXhjZXB0aW9u KCJBYWFhYWFhYWdoISIpOw0KCQl9DQoJCQ0KCQlpZiAoKFBpeGVsRm9ybWF0ID0g Q2hvb3NlUGl4ZWxGb3JtYXQoaERDLCAmcGZkKSkgPT0gMCkNCgkJew0KCQkJdGhy b3cgbmV3IEV4Y2VwdGlvbigiQWFhYWFhYWFnaCEiKTsNCgkJfQ0KCQkNCgkJaWYo IVNldFBpeGVsRm9ybWF0KGhEQywgUGl4ZWxGb3JtYXQsICZwZmQpKQ0KCQl7DQoJ CQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJBYWFhYWFhYWdoISIpOw0KCQl9DQoJCQ0K CQlpZiAoKGhSQyA9IHdnbENyZWF0ZUNvbnRleHQoaERDKSkgPT0gbnVsbCkNCgkJ ew0KCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiQWFhYWFhYWFnaCEiKTsNCgkJfQ0K CQkNCgkJaWYoIXdnbE1ha2VDdXJyZW50KGhEQyxoUkMpKQ0KCQl7DQoJCQl0aHJv dyBuZXcgRXhjZXB0aW9uKCJBYWFhYWFhYWdoISIpOw0KCQl9DQoJfQ0KCQ0KCX50 aGlzKCkNCgl7DQoJCWlmIChoUkMpDQoJCXsNCgkJCXdnbE1ha2VDdXJyZW50KG51 bGwsIG51bGwpOw0KCQkJd2dsRGVsZXRlQ29udGV4dChoUkMpOw0KCQkJaFJDID0g bnVsbDsNCgkJfQ0KCQkNCgkJaWYgKGhEQykNCgkJew0KCQkJUmVsZWFzZURDKGhX bmQsIGhEQyk7DQoJCQloREMgPSBudWxsOw0KCQl9DQoJCQ0KCQlpZiAoaFduZCkN CgkJew0KCQkJRGVzdHJveVdpbmRvdyhoV25kKTsNCgkJCWhXbmQgPSBudWxsOw0K CQl9DQoJCQ0KCQlVbnJlZ2lzdGVyQ2xhc3Mod2MubHBzekNsYXNzTmFtZSwgaElu c3QpOw0KCQkNCgkJaEluc3QgPSBudWxsOw0KCX0NCgkNCgl2b2lkIHJlc2l6ZVNj ZW5lKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0KQ0KCXsNCgkJaWYgKGhlaWdodCA9 PSAwKQ0KCQl7DQoJCQloZWlnaHQgPSAxOyAvLyBQcmV2ZW50IGRpdmlzaW9uIGJ5 IHplcm8uDQoJCX0NCgkJDQoJCQ0KCQlnbFZpZXdwb3J0KDAsIDAsIHdpZHRoLCBo ZWlnaHQpOw0KCQkNCgkJZ2xNYXRyaXhNb2RlKEdMX1BST0pFQ1RJT04pOw0KCQln bExvYWRJZGVudGl0eSgpOw0KCQkNCgkJZ2x1UGVyc3BlY3RpdmUoNDUuMGYsIGNh c3QoR0xmbG9hdCl3aWR0aCAvIGNhc3QoR0xmbG9hdCloZWlnaHQsIDAuMWYsIDEw MC4wZik7DQoJCWdsTWF0cml4TW9kZShHTF9NT0RFTFZJRVcpOw0KCQlnbExvYWRJ ZGVudGl0eSgpOw0KCX0NCgkNCgl2b2lkIGluaXQoKQ0KCXsNCgkJZ2xTaGFkZU1v ZGVsKEdMX1NNT09USCk7DQoJCWdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBm LCAwLjVmKTsNCgkJZ2xDbGVhckRlcHRoKDEuMGYpOw0KCQlnbEVuYWJsZShHTF9E RVBUSF9URVNUKTsNCgkJZ2xEZXB0aEZ1bmMoR0xfTEVRVUFMKTsNCgkJZ2xIaW50 KEdMX1BFUlNQRUNUSVZFX0NPUlJFQ1RJT05fSElOVCwgR0xfTklDRVNUKTsNCgl9 DQoJDQoJdm9pZCBzaG93KCkNCgl7DQoJCVNob3dXaW5kb3coaFduZCwgU1dfU0hP V05BKTsNCgkJU2V0Rm9yZWdyb3VuZFdpbmRvdyhoV25kKTsNCgkJU2V0Rm9jdXMo aFduZCk7DQoJfQ0KCQ0KCXZvaWQgaGlkZSgpDQoJew0KCQlTaG93V2luZG93KGhX bmQsIFNXX0hJREUpOw0KCX0NCn0NCg0KZXh0ZXJuKFdpbmRvd3MpDQpMUkVTVUxU IFduZFByb2MoSFdORCBoV25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBB UkFNIGxQYXJhbSkNCnsNCglzd2l0Y2gobXNnKQ0KCXsNCgljYXNlIFdNX1FVSVQ6 DQoJY2FzZSBXTV9DTE9TRToNCgkJZ2FtZS50ZXJtaW5hdGVkID0gdHJ1ZTsNCgkJ Z2FtZS5hY3RpdmUgPSBmYWxzZTsNCgkJcmV0dXJuIDA7DQoJCWJyZWFrOw0KCWNh c2UgV01fQUNUSVZBVEU6DQoJCWdhbWUuYWN0aXZlID0gKHdQYXJhbSAhPSBXQV9J TkFDVElWRSk7DQoJCWJyZWFrOw0KCQ0KCWRlZmF1bHQ6DQoJCXJldHVybiBEZWZX aW5kb3dQcm9jKGhXbmQsIG1zZywgd1BhcmFtLCBsUGFyYW0pOw0KCX0NCglyZXR1 cm4gRGVmV2luZG93UHJvYyhoV25kLCBtc2csIHdQYXJhbSwgbFBhcmFtKTsNCn0N Cg0KZXh0ZXJuKFdpbmRvd3MpDQppbnQgV2luTWFpbihISU5TVEFOQ0UgaEluc3Rh bmNlLA0KCQkJSElOU1RBTkNFIGhQcmV2SW5zdGFuY2UsDQoJCQlMUFNUUiBscENt ZExpbmUsDQoJCQlpbnQgbkNtZFNob3cpDQp7DQoJZ2NfaW5pdCgpOw0KCV9taW5p dCgpOw0KCQ0KCWludCByZXN1bHQ7DQoJDQoJdHJ5DQoJew0KCQlfbW9kdWxlQ3Rv cigpOw0KCQl2ZXJzaW9uKERlYnVnKQ0KCQl7DQoJCQlfbW9kdWxlVW5pdFRlc3Rz KCk7DQoJCX0NCgkJDQoJCS8vIEluaXRpYWxpemUgc3R1ZmYgaGVyZQ0KCQkNCgkJ cmVzdWx0ID0gR2FtZU1haW4obHBDbWRMaW5lKTsNCgkJDQoJCV9tb2R1bGVEdG9y KCk7DQoJfQ0KCQ0KCWNhdGNoKE9iamVjdCBvKQ0KCXsNCgkJd3JpdGVmbG4oby50 b1N0cmluZyk7DQoJCXJlc3VsdCA9IDA7DQoJfQ0KCQ0KCWdjX3Rlcm0oKTsNCgly ZXR1cm4gcmVzdWx0Ow0KfQ0KDQpHYW1lIGdhbWU7DQoNCmludCBHYW1lTWFpbihM UFNUUiBhcmdzKQ0Kew0KCWdhbWUgPSBuZXcgR2FtZSgpOw0KCU1TRyBtc2c7DQoJ DQoJd2hpbGUgKCFnYW1lLnRlcm1pbmF0ZWQpDQoJew0KCQl3aGlsZSAoZ2FtZS5h Y3RpdmUpDQoJCXsNCgkJCWlmIChQZWVrTWVzc2FnZSgmbXNnLCBnYW1lLnduZC5o V25kLCAwLCAwLCBQTV9SRU1PVkUpKQ0KCQkJew0KCQkJCVRyYW5zbGF0ZU1lc3Nh Z2UoJm1zZyk7DQoJCQkJRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOw0KCQkJfQ0KCQkJ ZWxzZQ0KCQkJew0KCQkJCWlmIChnYW1lLmFjdGl2ZSkNCgkJCQl7DQoJCQkJCWdh bWUuZHJhd1NjZW5lKDEpOw0KCQkJCQlnYW1lLnN0ZXAoMSk7DQoJCQkJfQ0KCQkJ fQ0KCQl9DQoJCWlmIChnYW1lLnRlcm1pbmF0ZWQpDQoJCXsNCgkJCWJyZWFrOw0K CQl9DQoJCXdoaWxlICghZ2FtZS5hY3RpdmUpDQoJCXsNCgkJCWludCByZXQgPSBH ZXRNZXNzYWdlKCZtc2csIGdhbWUud25kLmhXbmQsIDAsIDApOw0KCQkJDQoJCQlp ZiAocmV0ID09IC0xKQ0KCQkJew0KCQkJCXJldHVybiAtMTsNCgkJCX0NCgkJCWVs c2UNCgkJCXsNCgkJCQkJVHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsNCgkJCQkJRGlz cGF0Y2hNZXNzYWdlKCZtc2cpOw0KCQkJfQ0KCQl9DQoJfQ0KCQ0KCXJldHVybiAw Ow0KfQ== ------------7COv6rEukTQeYt7sxwtR8h--
Sep 22 2008








"Simen Kjaeraas" <simen.kjaras gmail.com>