From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 51902 invoked by alias); 5 Apr 2016 16:22:45 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 51886 invoked by uid 89); 5 Apr 2016 16:22:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Accept, macro.c, macroc, UD:macro.c X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Tue, 05 Apr 2016 16:22:41 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D0B6B804E0; Tue, 5 Apr 2016 16:22:39 +0000 (UTC) Received: from bigtime.twiddle.net (ovpn-113-227.phx2.redhat.com [10.3.113.227]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u35GMcAl004514; Tue, 5 Apr 2016 12:22:39 -0400 To: gcc-patches@gcc.gnu.org From: Richard Henderson Subject: [PATCH, cpp] Fix pr61817 and 69391 Cc: David Malcolm , "Joseph S. Myers" Message-ID: <5703E64D.3090503@redhat.com> Date: Tue, 05 Apr 2016 16:22:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050908020300080504020404" X-IsSubscribed: yes X-SW-Source: 2016-04/txt/msg00245.txt.bz2 This is a multi-part message in MIME format. --------------050908020300080504020404 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 404 These two related PRs are all about remembering where a macro is expanded. Worse, we've got two competing goals -- the real location of the expansion, for __LINE__, and the virtual location of the expansion, for diagnostics. There seems to be no way to unify the two competing goals. If we simply "fix" the first, we break the second. Therefore, I resort to passing down both locations. Ok? r~ --------------050908020300080504020404 Content-Type: text/plain; charset=UTF-8; name="z" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="z" Content-length: 9760 CSogaW50ZXJuYWwuaCAoX2NwcF9idWlsdGluX21hY3JvX3RleHQpOiBVcGRh dGUgZGVjbC4KCSogbWFjcm8uYyAoX2NwcF9idWlsdGluX21hY3JvX3RleHQp OiBBY2NlcHQgbG9jYXRpb24gZm9yIF9fTElORV9fLgoJKGJ1aWx0aW5fbWFj cm8pOiBBY2NlcHQgYSBzZWNvbmQgbG9jYXRpb24gZm9yIF9fTElORV9fLgoJ KGVudGVyX21hY3JvX2NvbnRleHQpOiBDb21wdXRlIGJvdGggdmlydHVhbCBh bmQgcmVhbCBleHBhbnNpb24KCWxvY2F0aW9ucyBmb3IgdGhlIG1hY3JvLgoK CSogZ2NjLmRnL3ByNjE4MTcuYzogTmV3IHRlc3QuCgkqIGdjYy5kZy9wcjY5 MzkxLTEuYzogTmV3IHRlc3QuCgkqIGdjYy5kZy9wcjY5MzkxLTIuYzogTmV3 IHRlc3QuCgoKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3By NjE4MTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjE4MTcuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjMwNDg1Ci0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2MTgxNy5j CkBAIC0wLDAgKzEsMTkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1zdGQ9YzExIC1mdHJhY2stbWFjcm8tZXhwYW5z aW9uPTAiIH0gKi8KKworI2RlZmluZSBBKHgpIF9TdGF0aWNfYXNzZXJ0KHgs ICN4KQorI2RlZmluZSBGKHgsIHksIHopIGEgPSBfX0xJTkVfXywgYiA9IHgg IyMgeSwgYyA9IHoKKworZW51bSB7CisjbGluZSAxMAorICAgIEYKKyAgICAg KAorICAgICAgX19MSSwKKyAgICAgIE5FX18sCisgICAgICBfX0xJTkVfXwor ICAgICAgKQorfTsKKworQShhID09IDE1KTsKK0EoYiA9PSAxNSk7CitBKGMg PT0gMTUpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2 OTM5MS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5MzkxLTEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWU0OWRjCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTM5 MS0xLmMKQEAgLTAsMCArMSwxMiBAQAorLyogeyBkZy1kbyBydW4gfSAqLwor LyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mdHJhY2stbWFjcm8tZXhw YW5zaW9uPTAiIH0gKi8KKyNkZWZpbmUgU1RSX0koWCkgI1gKKyNkZWZpbmUg U1RSKFgpIFNUUl9JKFgpCisjZGVmaW5lIExJTkUgU1RSKF9fTElORV9fKSBT VFIoX19MSU5FX18pCitpbnQgbWFpbigpCit7CisgIGNvbnN0IGNoYXIgKnMg PSBMSU5FOworICBpZiAoc1swXSAhPSAnOCcgfHwgc1sxXSAhPSAnOCcpCisg ICAgX19idWlsdGluX2Fib3J0ICgpOworICByZXR1cm4gMDsKK30KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjkzOTEtMi5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTM5MS0yLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uN2QyZmFhZQotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjkzOTEtMi5jCkBAIC0wLDAg KzEsMTIgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctYWRkaXRp b25hbC1vcHRpb25zICItZnRyYWNrLW1hY3JvLWV4cGFuc2lvbj0xIiB9ICov CisjZGVmaW5lIFNUUl9JKFgpICNYCisjZGVmaW5lIFNUUihYKSBTVFJfSShY KQorI2RlZmluZSBMSU5FIFNUUihfX0xJTkVfXykgU1RSKF9fTElORV9fKQor aW50IG1haW4oKQoreworICBjb25zdCBjaGFyICpzID0gTElORTsKKyAgaWYg KHNbMF0gIT0gJzgnIHx8IHNbMV0gIT0gJzgnKQorICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWJjcHAv aW50ZXJuYWwuaCBiL2xpYmNwcC9pbnRlcm5hbC5oCmluZGV4IGJhZmQ0ODAu LjljZTg3MDcgMTAwNjQ0Ci0tLSBhL2xpYmNwcC9pbnRlcm5hbC5oCisrKyBi L2xpYmNwcC9pbnRlcm5hbC5oCkBAIC02MjYsNyArNjI2LDggQEAgZXh0ZXJu IGJvb2wgX2NwcF9zYXZlX3BhcmFtZXRlciAoY3BwX3JlYWRlciAqLCBjcHBf bWFjcm8gKiwgY3BwX2hhc2hub2RlICosCiBleHRlcm4gYm9vbCBfY3BwX2Fy Z3VtZW50c19vayAoY3BwX3JlYWRlciAqLCBjcHBfbWFjcm8gKiwgY29uc3Qg Y3BwX2hhc2hub2RlICosCiAJCQkgICAgICAgdW5zaWduZWQgaW50KTsKIGV4 dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3BwX2J1aWx0aW5fbWFjcm9f dGV4dCAoY3BwX3JlYWRlciAqLAotCQkJCQkJICAgICBjcHBfaGFzaG5vZGUg Kik7CisJCQkJCQkgICAgIGNwcF9oYXNobm9kZSAqLAorCQkJCQkJICAgICBz b3VyY2VfbG9jYXRpb24gPSAwKTsKIGV4dGVybiBpbnQgX2NwcF93YXJuX2lm X3VudXNlZF9tYWNybyAoY3BwX3JlYWRlciAqLCBjcHBfaGFzaG5vZGUgKiwg dm9pZCAqKTsKIGV4dGVybiB2b2lkIF9jcHBfcHVzaF90b2tlbl9jb250ZXh0 IChjcHBfcmVhZGVyICosIGNwcF9oYXNobm9kZSAqLAogCQkJCSAgICAgY29u c3QgY3BwX3Rva2VuICosIHVuc2lnbmVkIGludCk7CmRpZmYgLS1naXQgYS9s aWJjcHAvbWFjcm8uYyBiL2xpYmNwcC9tYWNyby5jCmluZGV4IDc1OWZiZTcu LmMyNTE1NTMgMTAwNjQ0Ci0tLSBhL2xpYmNwcC9tYWNyby5jCisrKyBiL2xp YmNwcC9tYWNyby5jCkBAIC05Myw3ICs5Myw4IEBAIHN0cnVjdCBtYWNyb19h cmdfc2F2ZWRfZGF0YSB7CiAKIHN0YXRpYyBpbnQgZW50ZXJfbWFjcm9fY29u dGV4dCAoY3BwX3JlYWRlciAqLCBjcHBfaGFzaG5vZGUgKiwKIAkJCQljb25z dCBjcHBfdG9rZW4gKiwgc291cmNlX2xvY2F0aW9uKTsKLXN0YXRpYyBpbnQg YnVpbHRpbl9tYWNybyAoY3BwX3JlYWRlciAqLCBjcHBfaGFzaG5vZGUgKiwg c291cmNlX2xvY2F0aW9uKTsKK3N0YXRpYyBpbnQgYnVpbHRpbl9tYWNybyAo Y3BwX3JlYWRlciAqLCBjcHBfaGFzaG5vZGUgKiwKKwkJCSAgc291cmNlX2xv Y2F0aW9uLCBzb3VyY2VfbG9jYXRpb24pOwogc3RhdGljIHZvaWQgcHVzaF9w dG9rZW5fY29udGV4dCAoY3BwX3JlYWRlciAqLCBjcHBfaGFzaG5vZGUgKiwg X2NwcF9idWZmICosCiAJCQkJIGNvbnN0IGNwcF90b2tlbiAqKiwgdW5zaWdu ZWQgaW50KTsKIHN0YXRpYyB2b2lkIHB1c2hfZXh0ZW5kZWRfdG9rZW5zX2Nv bnRleHQgKGNwcF9yZWFkZXIgKiwgY3BwX2hhc2hub2RlICosCkBAIC0yMjks NyArMjMwLDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtb250aG5h bWVzW10gPQogLyogSGVscGVyIGZ1bmN0aW9uIGZvciBidWlsdGluX21hY3Jv LiAgUmV0dXJucyB0aGUgdGV4dCBnZW5lcmF0ZWQgYnkKICAgIGEgYnVpbHRp biBtYWNyby4gKi8KIGNvbnN0IHVjaGFyICoKLV9jcHBfYnVpbHRpbl9tYWNy b190ZXh0IChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX2hhc2hub2RlICpub2Rl KQorX2NwcF9idWlsdGluX21hY3JvX3RleHQgKGNwcF9yZWFkZXIgKnBmaWxl LCBjcHBfaGFzaG5vZGUgKm5vZGUsCisJCQkgc291cmNlX2xvY2F0aW9uIGxv YykKIHsKICAgY29uc3QgdWNoYXIgKnJlc3VsdCA9IE5VTEw7CiAgIGxpbmVu dW1fdHlwZSBudW1iZXIgPSAxOwpAQCAtMzE5LDExICszMjEsMTQgQEAgX2Nw cF9idWlsdGluX21hY3JvX3RleHQgKGNwcF9yZWFkZXIgKnBmaWxlLCBjcHBf aGFzaG5vZGUgKm5vZGUpCiAgICAgY2FzZSBCVF9TUEVDTElORToKICAgICAg IC8qIElmIF9fTElORV9fIGlzIGVtYmVkZGVkIGluIGEgbWFjcm8sIGl0IG11 c3QgZXhwYW5kIHRvIHRoZQogCSBsaW5lIG9mIHRoZSBtYWNybydzIGludm9j YXRpb24sIG5vdCBpdHMgZGVmaW5pdGlvbi4KLQkgT3RoZXJ3aXNlIHRoaW5n cyBsaWtlIGFzc2VydCgpIHdpbGwgbm90IHdvcmsgcHJvcGVybHkuICAqLwot ICAgICAgbnVtYmVyID0gbGluZW1hcF9nZXRfZXhwYW5zaW9uX2xpbmUgKHBm aWxlLT5saW5lX3RhYmxlLAotCQkJCQkgICBDUFBfT1BUSU9OIChwZmlsZSwg dHJhZGl0aW9uYWwpCi0JCQkJCSAgID8gcGZpbGUtPmxpbmVfdGFibGUtPmhp Z2hlc3RfbGluZQotCQkJCQkgICA6IHBmaWxlLT5jdXJfdG9rZW5bLTFdLnNy Y19sb2MpOworCSBPdGhlcndpc2UgdGhpbmdzIGxpa2UgYXNzZXJ0KCkgd2ls bCBub3Qgd29yayBwcm9wZXJseS4KKwkgU2VlIFdHMTQgTjE5MTEsIFdHMjEg TjQyMjAgc2VjIDYuNSwgYW5kIFBSIDYxODYxLiAgKi8KKyAgICAgIGlmIChD UFBfT1BUSU9OIChwZmlsZSwgdHJhZGl0aW9uYWwpKQorCWxvYyA9IHBmaWxl LT5saW5lX3RhYmxlLT5oaWdoZXN0X2xpbmU7CisgICAgICBlbHNlCisJbG9j ID0gbGluZW1hcF9yZXNvbHZlX2xvY2F0aW9uIChwZmlsZS0+bGluZV90YWJs ZSwgbG9jLAorCQkJCQlMUktfTUFDUk9fRVhQQU5TSU9OX1BPSU5ULCBOVUxM KTsKKyAgICAgIG51bWJlciA9IGxpbmVtYXBfZ2V0X2V4cGFuc2lvbl9saW5l IChwZmlsZS0+bGluZV90YWJsZSwgbG9jKTsKICAgICAgIGJyZWFrOwogCiAg ICAgICAvKiBfX1NURENfXyBoYXMgdGhlIHZhbHVlIDEgdW5kZXIgbm9ybWFs IGNpcmN1bXN0YW5jZXMuCkBAIC00MTcsNyArNDIyLDggQEAgX2NwcF9idWls dGluX21hY3JvX3RleHQgKGNwcF9yZWFkZXIgKnBmaWxlLCBjcHBfaGFzaG5v ZGUgKm5vZGUpCiAgICByZXR1cm4gdGhlIHRva2VuIHRvIHRoZSBjYWxsZXIu ICBMT0MgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBleHBhbnNpb24KICAgIHBv aW50IG9mIHRoZSBtYWNyby4gICovCiBzdGF0aWMgaW50Ci1idWlsdGluX21h Y3JvIChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX2hhc2hub2RlICpub2RlLCBz b3VyY2VfbG9jYXRpb24gbG9jKQorYnVpbHRpbl9tYWNybyAoY3BwX3JlYWRl ciAqcGZpbGUsIGNwcF9oYXNobm9kZSAqbm9kZSwKKwkgICAgICAgc291cmNl X2xvY2F0aW9uIGxvYywgc291cmNlX2xvY2F0aW9uIGV4cGFuZF9sb2MpCiB7 CiAgIGNvbnN0IHVjaGFyICpidWY7CiAgIHNpemVfdCBsZW47CkBAIC00MzMs NyArNDM5LDcgQEAgYnVpbHRpbl9tYWNybyAoY3BwX3JlYWRlciAqcGZpbGUs IGNwcF9oYXNobm9kZSAqbm9kZSwgc291cmNlX2xvY2F0aW9uIGxvYykKICAg ICAgIHJldHVybiBfY3BwX2RvX19QcmFnbWEgKHBmaWxlLCBsb2MpOwogICAg IH0KIAotICBidWYgPSBfY3BwX2J1aWx0aW5fbWFjcm9fdGV4dCAocGZpbGUs IG5vZGUpOworICBidWYgPSBfY3BwX2J1aWx0aW5fbWFjcm9fdGV4dCAocGZp bGUsIG5vZGUsIGV4cGFuZF9sb2MpOwogICBsZW4gPSB1c3RybGVuIChidWYp OwogICBuYnVmID0gKGNoYXIgKikgYWxsb2NhIChsZW4gKyAxKTsKICAgbWVt Y3B5IChuYnVmLCBidWYsIGxlbik7CkBAIC00NTYsOCArNDYyLDcgQEAgYnVp bHRpbl9tYWNybyAoY3BwX3JlYWRlciAqcGZpbGUsIGNwcF9oYXNobm9kZSAq bm9kZSwgc291cmNlX2xvY2F0aW9uIGxvYykKICAgICAgIHNvdXJjZV9sb2Nh dGlvbiAqdmlydF9sb2NzID0gTlVMTDsKICAgICAgIF9jcHBfYnVmZiAqdG9r ZW5fYnVmID0gdG9rZW5zX2J1ZmZfbmV3IChwZmlsZSwgMSwgJnZpcnRfbG9j cyk7CiAgICAgICBjb25zdCBsaW5lX21hcF9tYWNybyAqIG1hcCA9Ci0JbGlu ZW1hcF9lbnRlcl9tYWNybyAocGZpbGUtPmxpbmVfdGFibGUsIG5vZGUsCi0J CQkJCSAgICB0b2tlbi0+c3JjX2xvYywgMSk7CisJbGluZW1hcF9lbnRlcl9t YWNybyAocGZpbGUtPmxpbmVfdGFibGUsIG5vZGUsIGxvYywgMSk7CiAgICAg ICB0b2tlbnNfYnVmZl9hZGRfdG9rZW4gKHRva2VuX2J1ZiwgdmlydF9sb2Nz LCB0b2tlbiwKIAkJCSAgICAgcGZpbGUtPmxpbmVfdGFibGUtPmJ1aWx0aW5f bG9jYXRpb24sCiAJCQkgICAgIHBmaWxlLT5saW5lX3RhYmxlLT5idWlsdGlu X2xvY2F0aW9uLApAQCAtMTIzMSwyMiArMTIzNiwyOSBAQCBlbnRlcl9tYWNy b19jb250ZXh0IChjcHBfcmVhZGVyICpwZmlsZSwgY3BwX2hhc2hub2RlICpu b2RlLAogICBwZmlsZS0+YWJvdXRfdG9fZXhwYW5kX21hY3JvX3AgPSBmYWxz ZTsKICAgLyogSGFuZGxlIGJ1aWx0LWluIG1hY3JvcyBhbmQgdGhlIF9QcmFn bWEgb3BlcmF0b3IuICAqLwogICB7Ci0gICAgc291cmNlX2xvY2F0aW9uIGxv YzsKKyAgICBzb3VyY2VfbG9jYXRpb24gbG9jLCBleHBhbmRfbG9jOworCiAg ICAgaWYgKC8qIFRoZSB0b3AtbGV2ZWwgbWFjcm8gaW52b2NhdGlvbiB0aGF0 IHRyaWdnZXJlZCB0aGUgZXhwYW5zaW9uCiAJICAgd2UgYXJlIGxvb2tpbmcg YXQgaXMgd2l0aCBhIHN0YW5kYXJkIG1hY3JvIC4uLiovCiAJIShwZmlsZS0+ dG9wX21vc3RfbWFjcm9fbm9kZS0+ZmxhZ3MgJiBOT0RFX0JVSUxUSU4pCiAJ LyogLi4uIGFuZCBpdCdzIGEgZnVuY3Rpb24tbGlrZSBtYWNybyBpbnZvY2F0 aW9uLiAgKi8KIAkmJiBwZmlsZS0+dG9wX21vc3RfbWFjcm9fbm9kZS0+dmFs dWUubWFjcm8tPmZ1bl9saWtlKQotICAgICAgLyogVGhlbiB0aGUgbG9jYXRp b24gb2YgdGhlIGVuZCBvZiB0aGUgbWFjcm8gaW52b2NhdGlvbiBpcyB0aGUK LQkgbG9jYXRpb24gb2YgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMuICAqLwot ICAgICAgbG9jID0gcGZpbGUtPmN1cl90b2tlblstMV0uc3JjX2xvYzsKKyAg ICAgIHsKKwkvKiBUaGVuIHRoZSBsb2NhdGlvbiBvZiB0aGUgZW5kIG9mIHRo ZSBtYWNybyBpbnZvY2F0aW9uIGlzIHRoZQorCSAgIGxvY2F0aW9uIG9mIHRo ZSBjbG9zaW5nIHBhcmVudGhlc2lzLiAgKi8KKwlsb2MgPSBwZmlsZS0+Y3Vy X3Rva2VuWy0xXS5zcmNfbG9jOworCWV4cGFuZF9sb2MgPSBsb2M7CisgICAg ICB9CiAgICAgZWxzZQotICAgICAgLyogT3RoZXJ3aXNlLCB0aGUgbG9jYXRp b24gb2YgdGhlIGVuZCBvZiB0aGUgbWFjcm8gaW52b2NhdGlvbiBpcwotCSB0 aGUgbG9jYXRpb24gb2YgdGhlIGV4cGFuc2lvbiBwb2ludCBvZiB0aGF0IHRv cC1sZXZlbCBtYWNybwotCSBpbnZvY2F0aW9uLiAgKi8KLSAgICAgIGxvYyA9 IGxvY2F0aW9uOworICAgICAgeworCS8qIE90aGVyd2lzZSwgdGhlIGxvY2F0 aW9uIG9mIHRoZSBlbmQgb2YgdGhlIG1hY3JvIGludm9jYXRpb24gaXMKKwkg ICB0aGUgbG9jYXRpb24gb2YgdGhlIGV4cGFuc2lvbiBwb2ludCBvZiB0aGF0 IHRvcC1sZXZlbCBtYWNybworCSAgIGludm9jYXRpb24uICAqLworCWxvYyA9 IGxvY2F0aW9uOworCWV4cGFuZF9sb2MgPSBwZmlsZS0+aW52b2NhdGlvbl9s b2NhdGlvbjsKKyAgICAgIH0KIAotICAgIHJldHVybiBidWlsdGluX21hY3Jv IChwZmlsZSwgbm9kZSwgbG9jKTsKKyAgICByZXR1cm4gYnVpbHRpbl9tYWNy byAocGZpbGUsIG5vZGUsIGxvYywgZXhwYW5kX2xvYyk7CiAgIH0KIH0KIAo= --------------050908020300080504020404--