From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 40191 invoked by alias); 20 Oct 2018 12:38:50 -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 39847 invoked by uid 89); 20 Oct 2018 12:38:49 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-3.6 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,GIT_PATCH_2,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=reallocate, dominiqlpsensfr, dominiq@lps.ens.fr, matmul X-HELO: mail-yb1-f181.google.com Received: from mail-yb1-f181.google.com (HELO mail-yb1-f181.google.com) (209.85.219.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 20 Oct 2018 12:38:46 +0000 Received: by mail-yb1-f181.google.com with SMTP id 184-v6so14348109ybg.1; Sat, 20 Oct 2018 05:38:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=xzSMOfzBJm3hsNobOHX0Lwq9HSkHmDWLzD+ENaLCq2k=; b=as60XhDYxN49RK+OO0iFwDxA5TkDyTw+HGHOcCps/dOOtLkAAxvBabHARf3yEIFkjO dhTS1+s29NqgEvWgdoJYeb4c/eRULBpnJtDMzM3+pqaHzEq1K+Tke9p6Kw2T7Qq2V9Qe tBYApI0X7gNP1Lzz8j31dE4OIWcbHovEn5zlqeRwSXEtcJuxVkNgvloP27I+SKn8ATK0 Ssfx3phJvIBer11bZPstEYsdPC0yZUE3aSKoRWdZPPia/RyPCs3IxXz6UnZt1vCMjV5h hShw6a4Xd6T0JqzMbQJyh272zeyyiLPKcoUCQUSdUctHCgk+58P5BabX93Ni6Kzqj+3B 3iGQ== MIME-Version: 1.0 References: <4F0C6148-640C-4E64-85F6-6AD6FB59C82C@lps.ens.fr> In-Reply-To: From: Paul Richard Thomas Date: Sat, 20 Oct 2018 16:53:00 -0000 Message-ID: Subject: Re: [Patc, fortran] PR85603 - ICE with character array substring assignment To: Dominique Dhumieres Cc: "fortran@gcc.gnu.org" , gcc-patches Content-Type: multipart/mixed; boundary="000000000000fbf1840578a84cb2" X-SW-Source: 2018-10/txt/msg01251.txt.bz2 --000000000000fbf1840578a84cb2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 2562 Hmmm! It helps to provide the patch. 2018-10-18 Paul Thomas PR fortran/85603 * frontend-passes.c (get_len_call): New function to generate a call to intrinsic LEN. (create_var): Use this to make length expressions for variable rhs string lengths. Clean up some white space issues. 2018-10-18 Paul Thomas PR fortran/85603 * gfortran.dg/deferred_character_23.f90 : Check reallocation is occurring as it should and a regression caused by version 1 of this patch. On Sat, 20 Oct 2018 at 13:32, Paul Richard Thomas wrote: > > Hi Dominique, > > Thanks for picking that up. For some reason that I do now see, the > regression is caused by the component references. The frontend > temporary is picking up the deferred tag from somewhere, even though > it is not set. Anyway, all is well if the patch is restricted to > character right hand side symbols. I have added a test for the > regression to the testcase. > > OK for trunk? > > Paul > > On Fri, 19 Oct 2018 at 23:15, Dominique d'Humi=C3=A8res wrote: > > > > Reduced test > > > > ! { dg-do compile } > > MODULE TN4 > > IMPLICIT NONE > > PRIVATE > > INTEGER,PARAMETER::SH4=3DKIND('a') > > TYPE,PUBLIC::TOP > > CHARACTER(:,KIND=3DSH4),ALLOCATABLE::ROR > > CHARACTER(:,KIND=3DSH4),ALLOCATABLE::VI8 > > CONTAINS > > PROCEDURE,NON_OVERRIDABLE::SB=3D>TPX > > END TYPE TOP > > CONTAINS > > SUBROUTINE TPX(TP6,PP4,BA3) > > CLASS(TOP),INTENT(INOUT)::TP6 > > INTEGER,INTENT(IN)::PP4 > > TYPE(TOP),INTENT(OUT)::BA3 > > BA3%ROR=3DTP6%ROR(PP4:) > > BA3%VI8=3DTP6%ROR(PP4:) > > TP6%ROR=3DTP6%ROR(:PP4-1) > > TP6%VI8=3DTP6%ROR(:PP4-1) > > END SUBROUTINE TPX > > END MODULE TN4 > > ! https://groups.google.com/forum/#!topic/comp.lang.fortran/nV3TlRlVKBc > > > > TIA > > > > Dominique > > > > > Le 19 oct. 2018 =C3=A0 23:39, Dominique d'Humi=C3=A8res a =C3=A9crit : > > > > > > Hi Paul, > > > > > > I get a regression with your patch: > > > > > > obfuscated_tn4.f90:300:0: > > > > > > 300 | TP6%ROR=3DTP6%ROR(:PP4-1) > > > | > > > internal compiler error: in gfc_trans_deferred_vars, at fortran/trans= -decl.c:4754 > > > > > > > > > I=E2=80=99ll try to reduce the test. > > > > > > Dominique > > > > > > > > -- > "If you can't explain it simply, you don't understand it well enough" > - Albert Einstein --=20 "If you can't explain it simply, you don't understand it well enough" - Albert Einstein --000000000000fbf1840578a84cb2 Content-Type: text/x-patch; charset="US-ASCII"; name="resubmit.diff" Content-Disposition: attachment; filename="resubmit.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jnhfit1n0 Content-length: 15511 SW5kZXg6IGdjYy9mb3J0cmFuL2Zyb250ZW5kLXBhc3Nlcy5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKioqIGdjYy9mb3J0cmFuL2Zyb250ZW5kLXBhc3Nl cy5jCShyZXZpc2lvbiAyNjUyNjIpCi0tLSBnY2MvZm9ydHJhbi9mcm9udGVu ZC1wYXNzZXMuYwkod29ya2luZyBjb3B5KQoqKioqKioqKioqKioqKiogcmVh bGxvY19zdHJpbmdfY2FsbGJhY2sgKGdmY19jb2RlICoqYywgaQoqKiogMjgw LDI4NiAqKioqCiAgCSAgICYmIChleHByMi0+ZXhwcl90eXBlICE9IEVYUFJf T1AKICAJICAgICAgIHx8IGV4cHIyLT52YWx1ZS5vcC5vcCAhPSBJTlRSSU5T SUNfQ09OQ0FUKSkKICAgICAgcmV0dXJuIDA7CiEgICAKICAgIGlmICghZ2Zj X2NoZWNrX2RlcGVuZGVuY3kgKGV4cHIxLCBleHByMiwgdHJ1ZSkpCiAgICAg IHJldHVybiAwOwogIAotLS0gMjgwLDI4NiAtLS0tCiAgCSAgICYmIChleHBy Mi0+ZXhwcl90eXBlICE9IEVYUFJfT1AKICAJICAgICAgIHx8IGV4cHIyLT52 YWx1ZS5vcC5vcCAhPSBJTlRSSU5TSUNfQ09OQ0FUKSkKICAgICAgcmV0dXJu IDA7CiEgCiAgICBpZiAoIWdmY19jaGVja19kZXBlbmRlbmN5IChleHByMSwg ZXhwcjIsIHRydWUpKQogICAgICByZXR1cm4gMDsKICAKKioqKioqKioqKioq KioqIGluc2VydF9ibG9jayAoKQoqKiogNzA0LDcwOSAqKioqCi0tLSA3MDQs NzQ0IC0tLS0KICAgIHJldHVybiBuczsKICB9CiAgCisgCisgLyogSW5zZXJ0 IGEgY2FsbCB0byB0aGUgaW50cmluc2ljIGxlbi4gVXNlIGEgZGlmZmVyZW50 IG5hbWUgZm9yCisgICAgdGhlIHN5bWJvbCB0cmVlIHNvIHdlIGRvbid0IHJ1 biBpbnRvIHRyb3VibGUgd2hlbiB0aGUgdXNlciBoYXMKKyAgICByZW5hbWVk IGxlbiBmb3Igc29tZSByZWFzb24uICAqLworIAorIHN0YXRpYyBnZmNfZXhw cioKKyBnZXRfbGVuX2NhbGwgKGdmY19leHByICpzdHIpCisgeworICAgZ2Zj X2V4cHIgKmZjbjsKKyAgIGdmY19hY3R1YWxfYXJnbGlzdCAqYWN0dWFsX2Fy Z2xpc3Q7CisgCisgICBmY24gPSBnZmNfZ2V0X2V4cHIgKCk7CisgICBmY24t PmV4cHJfdHlwZSA9IEVYUFJfRlVOQ1RJT047CisgICBmY24tPnZhbHVlLmZ1 bmN0aW9uLmlzeW0gPSBnZmNfaW50cmluc2ljX2Z1bmN0aW9uX2J5X2lkIChH RkNfSVNZTV9MRU4pOworICAgYWN0dWFsX2FyZ2xpc3QgPSBnZmNfZ2V0X2Fj dHVhbF9hcmdsaXN0ICgpOworICAgYWN0dWFsX2FyZ2xpc3QtPmV4cHIgPSBz dHI7CisgCisgICBmY24tPnZhbHVlLmZ1bmN0aW9uLmFjdHVhbCA9IGFjdHVh bF9hcmdsaXN0OworICAgZmNuLT53aGVyZSA9IHN0ci0+d2hlcmU7CisgICBm Y24tPnRzLnR5cGUgPSBCVF9JTlRFR0VSOworICAgZmNuLT50cy5raW5kID0g Z2ZjX2NoYXJsZW5faW50X2tpbmQ7CisgCisgICBnZmNfZ2V0X3N5bV90cmVl ICgiX19pbnRlcm5hbF9sZW4iLCBjdXJyZW50X25zLCAmZmNuLT5zeW10cmVl LCBmYWxzZSk7CisgICBmY24tPnN5bXRyZWUtPm4uc3ltLT50cyA9IGZjbi0+ dHM7CisgICBmY24tPnN5bXRyZWUtPm4uc3ltLT5hdHRyLmZsYXZvciA9IEZM X1BST0NFRFVSRTsKKyAgIGZjbi0+c3ltdHJlZS0+bi5zeW0tPmF0dHIuZnVu Y3Rpb24gPSAxOworICAgZmNuLT5zeW10cmVlLT5uLnN5bS0+YXR0ci5lbGVt ZW50YWwgPSAxOworICAgZmNuLT5zeW10cmVlLT5uLnN5bS0+YXR0ci5yZWZl cmVuY2VkID0gMTsKKyAgIGZjbi0+c3ltdHJlZS0+bi5zeW0tPmF0dHIuYWNj ZXNzID0gQUNDRVNTX1BSSVZBVEU7CisgICBnZmNfY29tbWl0X3N5bWJvbCAo ZmNuLT5zeW10cmVlLT5uLnN5bSk7CisgCisgICByZXR1cm4gZmNuOworIH0K KyAKKyAKICAvKiBSZXR1cm5zIGEgbmV3IGV4cHJlc3Npb24gKGEgdmFyaWFi bGUpIHRvIGJlIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIG9sZCBvbmUsCiAgICAg d2l0aCBhbiBvcHRpb25hbCBhc3NpZ25tZW50IHN0YXRlbWVudCBiZWZvcmUg dGhlIGN1cnJlbnQgc3RhdGVtZW50IHRvIHNldAogICAgIHRoZSB2YWx1ZSBv ZiB0aGUgdmFyaWFibGUuIENyZWF0ZXMgYSBuZXcgQkxPQ0sgZm9yIHRoZSBz dGF0ZW1lbnQgaWYgdGhhdAoqKioqKioqKioqKioqKiogY3JlYXRlX3ZhciAo Z2ZjX2V4cHIgKiBlLCBjb25zdCBjaGFyICp2bgoqKiogNzg2LDc5MSAqKioq Ci0tLSA4MjEsODMwIC0tLS0KICAgICAgICBsZW5ndGggPSBjb25zdGFudF9z dHJpbmdfbGVuZ3RoIChlKTsKICAgICAgICBpZiAobGVuZ3RoKQogIAlzeW1i b2wtPnRzLnUuY2wtPmxlbmd0aCA9IGxlbmd0aDsKKyAgICAgICBlbHNlIGlm IChlLT5leHByX3R5cGUgPT0gRVhQUl9WQVJJQUJMRQorIAkgICAgICAgJiYg ZS0+c3ltdHJlZS0+bi5zeW0tPnRzLnR5cGUgPT0gQlRfQ0hBUkFDVEVSCisg CSAgICAgICAmJiBlLT50cy51LmNsLT5sZW5ndGgpCisgCXN5bWJvbC0+dHMu dS5jbC0+bGVuZ3RoID0gZ2V0X2xlbl9jYWxsIChnZmNfY29weV9leHByIChl KSk7CiAgICAgICAgZWxzZQogIAl7CiAgCSAgc3ltYm9sLT5hdHRyLmFsbG9j YXRhYmxlID0gMTsKKioqKioqKioqKioqKioqIHRyYXZlcnNlX2lvX2Jsb2Nr IChnZmNfY29kZSAqY29kZSwgYm9vbAoqKiogMTIyNiwxMjMyICoqKioKICAJ ICAgIHsKICAJICAgICAgLyogQ2hlY2sgZm9yIChhKGksaSksIGk9MSwzKS4g ICovCiAgCSAgICAgIGludCBqOwohIAkgICAgICAKICAJICAgICAgZm9yIChq PTA7IGo8aTsgaisrKQogIAkJaWYgKGl0ZXJzW2pdICYmIGl0ZXJzW2pdLT52 YXItPnN5bXRyZWUgPT0gc3RhcnQtPnN5bXRyZWUpCiAgCQkgIHJldHVybiBm YWxzZTsKLS0tIDEyNjUsMTI3MSAtLS0tCiAgCSAgICB7CiAgCSAgICAgIC8q IENoZWNrIGZvciAoYShpLGkpLCBpPTEsMykuICAqLwogIAkgICAgICBpbnQg ajsKISAKICAJICAgICAgZm9yIChqPTA7IGo8aTsgaisrKQogIAkJaWYgKGl0 ZXJzW2pdICYmIGl0ZXJzW2pdLT52YXItPnN5bXRyZWUgPT0gc3RhcnQtPnN5 bXRyZWUpCiAgCQkgIHJldHVybiBmYWxzZTsKKioqKioqKioqKioqKioqIHRy YXZlcnNlX2lvX2Jsb2NrIChnZmNfY29kZSAqY29kZSwgYm9vbAoqKiogMTI4 NiwxMjkyICoqKioKICAJCSAgICAgIHx8IHZhcl9pbl9leHByICh2YXIsIGl0 ZXJzW2pdLT5lbmQpCiAgCQkgICAgICB8fCB2YXJfaW5fZXhwciAodmFyLCBp dGVyc1tqXS0+c3RlcCkpKQogIAkJICByZXR1cm4gZmFsc2U7CiEgCSAgICB9 CQkgIAogIAl9CiAgICAgIH0KICAKLS0tIDEzMjUsMTMzMSAtLS0tCiAgCQkg ICAgICB8fCB2YXJfaW5fZXhwciAodmFyLCBpdGVyc1tqXS0+ZW5kKQogIAkJ ICAgICAgfHwgdmFyX2luX2V4cHIgKHZhciwgaXRlcnNbal0tPnN0ZXApKSkK ICAJCSAgcmV0dXJuIGZhbHNlOwohIAkgICAgfQogIAl9CiAgICAgIH0KICAK KioqKioqKioqKioqKioqIGdldF9sZW5fdHJpbV9jYWxsIChnZmNfZXhwciAq c3RyLCBpbnQga2kKKioqIDIwMTksMjAyNCAqKioqCi0tLSAyMDU4LDIwNjQg LS0tLQogICAgcmV0dXJuIGZjbjsKICB9CiAgCisgCiAgLyogT3B0aW1pemUg ZXhwcmVzc2lvbnMgZm9yIGVxdWFsaXR5LiAgKi8KICAKICBzdGF0aWMgYm9v bAoqKioqKioqKioqKioqKiogZG9fc3Vic2NyaXB0IChnZmNfZXhwciAqKmUp CioqKiAyNjI2LDI2MzIgKioqKgogIAogIAkgICAgICAvKiBJZiB3ZSBkbyBu b3Qga25vdyBhYm91dCB0aGUgc3RlcHNpemUsIHRoZSBsb29wIG1heSBiZSB6 ZXJvIHRyaXAuCiAgCQkgRG8gbm90IHdhcm4gaW4gdGhpcyBjYXNlLiAgKi8K ISAJICAKICAJICAgICAgaWYgKGRsLT5leHQuaXRlcmF0b3ItPnN0ZXAtPmV4 cHJfdHlwZSA9PSBFWFBSX0NPTlNUQU5UKQogIAkJbXB6X2luaXRfc2V0IChk b19zdGVwLCBkbC0+ZXh0Lml0ZXJhdG9yLT5zdGVwLT52YWx1ZS5pbnRlZ2Vy KTsKICAJICAgICAgZWxzZQotLS0gMjY2NiwyNjcyIC0tLS0KICAKICAJICAg ICAgLyogSWYgd2UgZG8gbm90IGtub3cgYWJvdXQgdGhlIHN0ZXBzaXplLCB0 aGUgbG9vcCBtYXkgYmUgemVybyB0cmlwLgogIAkJIERvIG5vdCB3YXJuIGlu IHRoaXMgY2FzZS4gICovCiEgCiAgCSAgICAgIGlmIChkbC0+ZXh0Lml0ZXJh dG9yLT5zdGVwLT5leHByX3R5cGUgPT0gRVhQUl9DT05TVEFOVCkKICAJCW1w el9pbml0X3NldCAoZG9fc3RlcCwgZGwtPmV4dC5pdGVyYXRvci0+c3RlcC0+ dmFsdWUuaW50ZWdlcik7CiAgCSAgICAgIGVsc2UKKioqKioqKioqKioqKioq IGRvX3N1YnNjcmlwdCAoZ2ZjX2V4cHIgKiplKQoqKiogMjY0MCwyNjQ2ICoq KioKICAJICAgICAgZWxzZQogIAkJaGF2ZV9kb19zdGFydCA9IGZhbHNlOwog IAohIAkgIAogIAkgICAgICBpZiAoZGwtPmV4dC5pdGVyYXRvci0+ZW5kLT5l eHByX3R5cGUgPT0gRVhQUl9DT05TVEFOVCkKICAJCXsKICAJCSAgaGF2ZV9k b19lbmQgPSB0cnVlOwotLS0gMjY4MCwyNjg2IC0tLS0KICAJICAgICAgZWxz ZQogIAkJaGF2ZV9kb19zdGFydCA9IGZhbHNlOwogIAohIAogIAkgICAgICBp ZiAoZGwtPmV4dC5pdGVyYXRvci0+ZW5kLT5leHByX3R5cGUgPT0gRVhQUl9D T05TVEFOVCkKICAJCXsKICAJCSAgaGF2ZV9kb19lbmQgPSB0cnVlOwoqKioq KioqKioqKioqKiogbWF0bXVsX3RvX3Zhcl9leHByIChnZmNfZXhwciAqKmVw LCBpbnQgKgoqKiogMjgwNiwyODEyICoqKioKICB7CiAgICBnZmNfZXhwciAq ZSwgKm47CiAgICBib29sICpmb3VuZCA9IChib29sICopIGRhdGE7CiEgICAK ICAgIGUgPSAqZXA7CiAgCiAgICBpZiAoZS0+ZXhwcl90eXBlICE9IEVYUFJf RlVOQ1RJT04KLS0tIDI4NDYsMjg1MiAtLS0tCiAgewogICAgZ2ZjX2V4cHIg KmUsICpuOwogICAgYm9vbCAqZm91bmQgPSAoYm9vbCAqKSBkYXRhOwohIAog ICAgZSA9ICplcDsKICAKICAgIGlmIChlLT5leHByX3R5cGUgIT0gRVhQUl9G VU5DVElPTgoqKioqKioqKioqKioqKiogbWF0bXVsX3RvX3Zhcl9leHByIChn ZmNfZXhwciAqKmVwLCBpbnQgKgoqKiogMjgxOSwyODM3ICoqKioKICAgICAg cmV0dXJuIDA7CiAgCiAgICAvKiBDaGVjayBpZiB0aGlzIGlzIGFscmVhZHkg aW4gdGhlIGZvcm0gYyA9IG1hdG11bChhLGIpLiAgKi8KISAgIAogICAgaWYg KCgqY3VycmVudF9jb2RlKS0+ZXhwcjIgPT0gZSkKICAgICAgcmV0dXJuIDA7 CiAgCiAgICBuID0gY3JlYXRlX3ZhciAoZSwgIm1hdG11bCIpOwohICAgCiAg ICAvKiBJZiBjcmVhdGVfdmFyIGlzIHVuYWJsZSB0byBjcmVhdGUgYSB2YXJp YWJsZSAoZm9yIGV4YW1wbGUgaWYKICAgICAgIC1mbm8tcmVhbGxvYy1saHMg aXMgaW4gZm9yY2Ugd2l0aCBhIHZhcmlhYmxlIHRoYXQgZG9lcyBub3QgaGF2 ZSBib3VuZHMKICAgICAgIGtub3duIGF0IGNvbXBpbGUtdGltZSksIGp1c3Qg cmV0dXJuLiAgKi8KICAKICAgIGlmIChuID09IE5VTEwpCiAgICAgIHJldHVy biAwOwohICAgCiAgICAqZXAgPSBuOwogICAgKmZvdW5kID0gdHJ1ZTsKICAg IHJldHVybiAwOwotLS0gMjg1OSwyODc3IC0tLS0KICAgICAgcmV0dXJuIDA7 CiAgCiAgICAvKiBDaGVjayBpZiB0aGlzIGlzIGFscmVhZHkgaW4gdGhlIGZv cm0gYyA9IG1hdG11bChhLGIpLiAgKi8KISAKICAgIGlmICgoKmN1cnJlbnRf Y29kZSktPmV4cHIyID09IGUpCiAgICAgIHJldHVybiAwOwogIAogICAgbiA9 IGNyZWF0ZV92YXIgKGUsICJtYXRtdWwiKTsKISAKICAgIC8qIElmIGNyZWF0 ZV92YXIgaXMgdW5hYmxlIHRvIGNyZWF0ZSBhIHZhcmlhYmxlIChmb3IgZXhh bXBsZSBpZgogICAgICAgLWZuby1yZWFsbG9jLWxocyBpcyBpbiBmb3JjZSB3 aXRoIGEgdmFyaWFibGUgdGhhdCBkb2VzIG5vdCBoYXZlIGJvdW5kcwogICAg ICAga25vd24gYXQgY29tcGlsZS10aW1lKSwganVzdCByZXR1cm4uICAqLwog IAogICAgaWYgKG4gPT0gTlVMTCkKICAgICAgcmV0dXJuIDA7CiEgCiAgICAq ZXAgPSBuOwogICAgKmZvdW5kID0gdHJ1ZTsKICAgIHJldHVybiAwOwoqKioq KioqKioqKioqKiogbWF0bXVsX3RvX3Zhcl9jb2RlIChnZmNfY29kZSAqKmMs IGludCAqdwoqKiogMjg1MCwyODU2ICoqKioKICAgICAgICBpbnNlcnRlZF9i bG9jayA9IE5VTEw7CiAgICAgICAgY2hhbmdlZF9zdGF0ZW1lbnQgPSBOVUxM OwogICAgICB9CiEgICAKICAgIHJldHVybiAwOwogIH0KICAKLS0tIDI4OTAs Mjg5NiAtLS0tCiAgICAgICAgaW5zZXJ0ZWRfYmxvY2sgPSBOVUxMOwogICAg ICAgIGNoYW5nZWRfc3RhdGVtZW50ID0gTlVMTDsKICAgICAgfQohIAogICAg cmV0dXJuIDA7CiAgfQogIAoqKioqKioqKioqKioqKiogbWF0bXVsX3RlbXBf YXJncyAoZ2ZjX2NvZGUgKipjLCBpbnQgKndhbAoqKiogMjg3MCwyODc2ICoq KioKICAgIGJvb2wgYV90bXAsIGJfdG1wOwogICAgZ2ZjX2V4cHIgKm1hdHJp eF9hLCAqbWF0cml4X2I7CiAgICBib29sIGNvbmpnX2EsIGNvbmpnX2IsIHRy YW5zcG9zZV9hLCB0cmFuc3Bvc2VfYjsKISAgIAogICAgY28gPSAqYzsKICAK ICAgIGlmIChjby0+b3AgIT0gRVhFQ19BU1NJR04pCi0tLSAyOTEwLDI5MTYg LS0tLQogICAgYm9vbCBhX3RtcCwgYl90bXA7CiAgICBnZmNfZXhwciAqbWF0 cml4X2EsICptYXRyaXhfYjsKICAgIGJvb2wgY29uamdfYSwgY29uamdfYiwg dHJhbnNwb3NlX2EsIHRyYW5zcG9zZV9iOwohIAogICAgY28gPSAqYzsKICAK ICAgIGlmIChjby0+b3AgIT0gRVhFQ19BU1NJR04pCioqKioqKioqKioqKioq KiBtYXRtdWxfdGVtcF9hcmdzIChnZmNfY29kZSAqKmMsIGludCAqd2FsCioq KiAyOTIwLDI5MjYgKioqKgogIAogICAgaWYgKCFhX3RtcCAmJiAhYl90bXAp CiAgICAgIHJldHVybiAwOwohICAgCiAgICBjdXJyZW50X2NvZGUgPSBjOwog ICAgaW5zZXJ0ZWRfYmxvY2sgPSBOVUxMOwogICAgY2hhbmdlZF9zdGF0ZW1l bnQgPSBOVUxMOwotLS0gMjk2MCwyOTY2IC0tLS0KICAKICAgIGlmICghYV90 bXAgJiYgIWJfdG1wKQogICAgICByZXR1cm4gMDsKISAKICAgIGN1cnJlbnRf Y29kZSA9IGM7CiAgICBpbnNlcnRlZF9ibG9jayA9IE5VTEw7CiAgICBjaGFu Z2VkX3N0YXRlbWVudCA9IE5VTEw7CioqKioqKioqKioqKioqKiBzY2FsYXJp emVkX2V4cHIgKGdmY19leHByICplX2luLCBnZmNfZXhwCioqKiAzNjQ4LDM2 NTQgKioqKgogIAkJICAgICAgLyogRm9yIGFzc3VtZWQgc2l6ZSwgd2UgbmVl ZCB0byBrZWVwIGFyb3VuZCB0aGUgZmluYWwKICAJCQkgcmVmZXJlbmNlIGlu IG9yZGVyIG5vdCB0byBnZXQgYW4gZXJyb3Igb24gcmVzb2x1dGlvbgogIAkJ CSBiZWxvdywgYW5kIHdlIGNhbm5vdCB1c2UgQVJfRlVMTC4gICovCiEgCQkJ IAogIAkJICAgICAgaWYgKGFyLT5hcy0+dHlwZSA9PSBBU19BU1NVTUVEX1NJ WkUpCiAgCQkJewogIAkJCSAgYXItPnR5cGUgPSBBUl9TRUNUSU9OOwotLS0g MzY4OCwzNjk0IC0tLS0KICAJCSAgICAgIC8qIEZvciBhc3N1bWVkIHNpemUs IHdlIG5lZWQgdG8ga2VlcCBhcm91bmQgdGhlIGZpbmFsCiAgCQkJIHJlZmVy ZW5jZSBpbiBvcmRlciBub3QgdG8gZ2V0IGFuIGVycm9yIG9uIHJlc29sdXRp b24KICAJCQkgYmVsb3csIGFuZCB3ZSBjYW5ub3QgdXNlIEFSX0ZVTEwuICAq LwohIAogIAkJICAgICAgaWYgKGFyLT5hcy0+dHlwZSA9PSBBU19BU1NVTUVE X1NJWkUpCiAgCQkJewogIAkJCSAgYXItPnR5cGUgPSBBUl9TRUNUSU9OOwoq KioqKioqKioqKioqKiogY2FsbF9leHRlcm5hbF9ibGFzIChnZmNfY29kZSAq KmMsIGludCAqdwoqKiogNDYwNCw0NjEwICoqKioKICAJZGVmYXVsdDoKICAJ ICBnY2NfdW5yZWFjaGFibGUgKCk7CiAgCX0KISAgICAgfSAgICAKICAKICAg IC8qIEhhbmRsZSB0aGUgcmVhbGxvY2F0aW9uLCBpZiBuZWVkZWQuICAqLwog IAotLS0gNDY0NCw0NjUwIC0tLS0KICAJZGVmYXVsdDoKICAJICBnY2NfdW5y ZWFjaGFibGUgKCk7CiAgCX0KISAgICAgfQogIAogICAgLyogSGFuZGxlIHRo ZSByZWFsbG9jYXRpb24sIGlmIG5lZWRlZC4gICovCiAgCioqKioqKioqKioq KioqKiB0eXBlZGVmIHN0cnVjdCB7CioqKiA0NzU2LDQ3NjIgKioqKgogICAg aW50IG5bR0ZDX01BWF9ESU1FTlNJT05TXTsKICB9IGluZF90eXBlOwogIAoh IC8qIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhbiBleHBy ZXNzaW9uIGlzIHRoZSAKICAgICBjb3JyZXNwb25kaW5nIHZhcmlhYmxlLiAg Ki8KICAKICBzdGF0aWMgaW50Ci0tLSA0Nzk2LDQ4MDIgLS0tLQogICAgaW50 IG5bR0ZDX01BWF9ESU1FTlNJT05TXTsKICB9IGluZF90eXBlOwogIAohIC8q IENhbGxiYWNrIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhbiBleHByZXNz aW9uIGlzIHRoZQogICAgIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUuICAqLwog IAogIHN0YXRpYyBpbnQKKioqKioqKioqKioqKioqIGluZGV4X2ludGVyY2hh bmdlIChnZmNfY29kZSAqKmMsIGludCAqd2EKKioqIDQ4NDIsNDg0OCAqKioq CiAgICBnZmNfZm9yYWxsX2l0ZXJhdG9yICpmYTsKICAgIGluZF90eXBlICpp bmQ7CiAgICBpbnQgaSwgajsKISAgIAogICAgaWYgKGNvLT5vcCAhPSBFWEVD X0ZPUkFMTCAmJiBjby0+b3AgIT0gRVhFQ19ET19DT05DVVJSRU5UKQogICAg ICByZXR1cm4gMDsKICAKLS0tIDQ4ODIsNDg4OCAtLS0tCiAgICBnZmNfZm9y YWxsX2l0ZXJhdG9yICpmYTsKICAgIGluZF90eXBlICppbmQ7CiAgICBpbnQg aSwgajsKISAKICAgIGlmIChjby0+b3AgIT0gRVhFQ19GT1JBTEwgJiYgY28t Pm9wICE9IEVYRUNfRE9fQ09OQ1VSUkVOVCkKICAgICAgcmV0dXJuIDA7CiAg CioqKioqKioqKioqKioqKiBnZmNfY29kZV93YWxrZXIgKGdmY19jb2RlICoq Yywgd2Fsa19jb2RlCioqKiA1MzU4LDUzNjQgKioqKgogIAogIAkgIGlmIChj by0+b3AgPT0gRVhFQ19TRUxFQ1QpCiAgCSAgICBzZWxlY3RfbGV2ZWwgLS07 CiEgICAKICAJICBpbl9vbXBfd29ya3NoYXJlID0gc2F2ZWRfaW5fb21wX3dv cmtzaGFyZTsKICAJICBpbl93aGVyZSA9IHNhdmVkX2luX3doZXJlOwogIAl9 Ci0tLSA1Mzk4LDU0MDQgLS0tLQogIAogIAkgIGlmIChjby0+b3AgPT0gRVhF Q19TRUxFQ1QpCiAgCSAgICBzZWxlY3RfbGV2ZWwgLS07CiEgCiAgCSAgaW5f b21wX3dvcmtzaGFyZSA9IHNhdmVkX2luX29tcF93b3Jrc2hhcmU7CiAgCSAg aW5fd2hlcmUgPSBzYXZlZF9pbl93aGVyZTsKICAJfQpJbmRleDogZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWZlcnJlZF9jaGFyYWN0ZXJfMjMuZjkw Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKioqIGdjYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZGVmZXJyZWRfY2hhcmFjdGVyXzIzLmY5MAkocmV2aXNpb24g MjY1MjYyKQotLS0gZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9kZWZlcnJl ZF9jaGFyYWN0ZXJfMjMuZjkwCSh3b3JraW5nIGNvcHkpCioqKioqKioqKioq KioqKgoqKiogMyw4ICoqKioKLS0tIDMsMzEgLS0tLQogICEgVGVzdHMgdGhl IGZpeCBmb3IgUFI4NTYwMy4KICAhCiAgISBDb250cmlidXRlZCBieSBXYWx0 IFNwZWN0b3IgIDx3NndzQGVhcnRobGluay5uZXQ+CisgIV9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICEgTW9kdWxl IGZvciBhIHRlc3QgYWdhaW5zdCBhIHJlZ3Jlc3Npb24gdGhhdCBvY2N1cnJl ZCB3aXRoCisgISB0aGUgZmlyc3QgcGF0Y2ggZm9yIHRoaXMgUFIuCisgIQor IE1PRFVMRSBUTjQKKyAgIElNUExJQ0lUIE5PTkUKKyAgIFBSSVZBVEUKKyAg IElOVEVHRVIsUEFSQU1FVEVSOjpTSDQ9S0lORCgnYScpCisgICBUWVBFLFBV QkxJQzo6VE9QCisgICAgIENIQVJBQ1RFUig6LEtJTkQ9U0g0KSxBTExPQ0FU QUJMRTo6Uk9SCisgICAgIENIQVJBQ1RFUig6LEtJTkQ9U0g0KSxBTExPQ0FU QUJMRTo6Vkk4CisgICBDT05UQUlOUworICAgICBQUk9DRURVUkUsTk9OX09W RVJSSURBQkxFOjpTQj0+VFBYCisgICBFTkQgVFlQRSBUT1AKKyBDT05UQUlO UworICAgU1VCUk9VVElORSBUUFgoVFA2LFBQNCkKKyAgICAgQ0xBU1MoVE9Q KSxJTlRFTlQoSU5PVVQpOjpUUDYKKyAgICAgSU5URUdFUixJTlRFTlQoSU4p OjpQUDQKKyAgICAgVFA2JVJPUj1UUDYlUk9SKDpQUDQtMSkKKyAgICAgVFA2 JVZJOD1UUDYlUk9SKDpQUDQtMSkKKyAgIEVORCBTVUJST1VUSU5FIFRQWAor IEVORCBNT0RVTEUgVE40CisgIV9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwogICEKICBwcm9ncmFtIHN0cmxlbl9idWcK ICAgIGltcGxpY2l0IG5vbmUKKioqKioqKioqKioqKioqIHByb2dyYW0gc3Ry bGVuX2J1ZwoqKiogMTUsMjIgKioqKgogICAgICAgICdzb21ld2hhdCBsb25n ZXInIF0KICAgIG1heGxlbiA9IG1heHZhbCAobGVuX3RyaW0gKHN0cmluZ3Mp KQogICAgaWYgKG1heGxlbiAubmUuIDE1KSBzdG9wIDEKISAgIHN0cmluZ3Mg PSBzdHJpbmdzKDopKDptYXhsZW4pICEgVXNlZCB0byBJQ0UKISAgIGlmIChh bnkgKHN0cmluZ3MgLm5lLiBbJ3Nob3J0ICAgICAgICAgICcsJ3NvbWV3aGF0 IGxvbmdlciddKSkgc3RvcCAyCiAgCiAgICBkZWFsbG9jYXRlIChzdHJpbmdz KSAgICAgICAgICAhIFRvIGNoZWNrIGZvciBtZW1vcnkgbGVha3MKICBlbmQg cHJvZ3JhbQotLS0gMzgsNjggLS0tLQogICAgICAgICdzb21ld2hhdCBsb25n ZXInIF0KICAgIG1heGxlbiA9IG1heHZhbCAobGVuX3RyaW0gKHN0cmluZ3Mp KQogICAgaWYgKG1heGxlbiAubmUuIDE1KSBzdG9wIDEKISAKISAhIFVzZWQg dG8gY2F1c2UgYW4gSUNFIGFuZCBpbiB0aGUgbGF0ZXIgdmVyc2lvbiBvZiB0 aGUgcHJvYmxlbSBkaWQgbm90IHJlYWxsb2NhdGUuCiEgICBzdHJpbmdzID0g c3RyaW5ncyg6KSg6bWF4bGVuKQohICAgaWYgKGFueSAoc3RyaW5ncyAubmUu IFsnc2hvcnQgICAgICAgICAgJywnc29tZXdoYXQgbG9uZ2VyJyBdKSkgc3Rv cCAyCiEgICBpZiAobGVuIChzdHJpbmdzKSAubmUuIG1heGxlbikgc3RvcCAz CiEgCiEgISBUcnkgc29tZXRoaW5nIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQu CiEgICBzdHJpbmdzID0gc3RyaW5ncyg6KSgyOm1heGxlbiAtIDUpCiEgICBp ZiAoYW55IChzdHJpbmdzIC5uZS4gWydob3J0ICAgICAnLCdvbWV3aGF0IGwn IF0pKSBzdG9wIDQKISAgIGlmIChsZW4gKHN0cmluZ3MpIC5uZS4gbWF4bGVu IC0gNikgc3RvcCA1CiAgCiAgICBkZWFsbG9jYXRlIChzdHJpbmdzKSAgICAg ICAgICAhIFRvIGNoZWNrIGZvciBtZW1vcnkgbGVha3MKKyAKKyAhIFRlc3Qg dGhlIHJlZ3Jlc3Npb24sIG5vdGVkIGJ5IERvbWluaXF1ZSBkJ0h1bWllcmVz IGlzIGZpeGVkLgorICEgUmVmZXJlbmNlZCBpbiBodHRwczovL2dyb3Vwcy5n b29nbGUuY29tL2ZvcnVtLyMhdG9waWMvY29tcC5sYW5nLmZvcnRyYW4vblYz VGxSbFZLQmMKKyAhCisgICBjYWxsIGZvbworIGNvbnRhaW5zCisgICBzdWJy b3V0aW5lIGZvbworICAgICBVU0UgVE40CisgICAgIFRZUEUoVE9QKSA6OiBa CisgCisgICAgIFolUk9SID0gJ2FiY2QnCisgICAgIGNhbGwgWiVTQiAoMykK KyAgICAgaWYgKFolVkk4IC5uZS4gJ2FiJykgc3RvcCA2CisgZW5kCisgCiAg ZW5kIHByb2dyYW0K --000000000000fbf1840578a84cb2--