From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 08 00:42:12 2014 Received: (at submit) by debbugs.gnu.org; 8 Mar 2014 05:42:13 +0000 Received: from localhost ([127.0.0.1]:55465 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WMA1U-0003Jx-3p for submit@debbugs.gnu.org; Sat, 08 Mar 2014 00:42:12 -0500 Received: from pbsg501.nifty.com ([202.248.238.71]:30860) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WMA1N-0003Jc-Bd for submit@debbugs.gnu.org; Sat, 08 Mar 2014 00:42:08 -0500 Received: from [10.120.1.53] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s285fggJ014894 for ; Sat, 8 Mar 2014 14:41:42 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Sat, 08 Mar 2014 14:41:42 +0900 From: Norihiro Tanaka To: submit@debbugs.gnu.org Subject: [PATCH] grep: optimization with the superset of DFA Message-Id: <20140308144141.021A.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_531AAC47000000000212_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.64.06 [ja] X-Spam-Score: 4.7 (++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Package: grep Tags: patch DFA may be build the superset of itself, which is the same as the itself expect ANYCHAR, MBCSET and BACKREF are replaced CSET set full bits followed by STAR, and mb_cur_max is equal to 1, by the patch. [...] Content analysis details: (4.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record 3.5 OBFU_TEXT_ATTACH BODY: Text attachment with non-text MIME type X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 4.7 (++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Package: grep Tags: patch DFA may be build the superset of itself, which is the same as the itself expect ANYCHAR, MBCSET and BACKREF are replaced CSET set full bits followed by STAR, and mb_cur_max is equal to 1, by the patch. [...] Content analysis details: (4.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record 3.5 OBFU_TEXT_ATTACH BODY: Text attachment with non-text MIME type --------_531AAC47000000000212_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Package: grep Tags: patch DFA may be build the superset of itself, which is the same as the itself expect ANYCHAR, MBCSET and BACKREF are replaced CSET set full bits followed by STAR, and mb_cur_max is equal to 1, by the patch. For example, if given the pattern `a\(b\)c\1', the tokens of original DFA and the superset is below. original: a b CAT c CAT BACKREF CAT superset: a b CAT c CAT CSET STAR CAT (Full bits are set to CSET.) If a string doesn't matches the superset of DFA for a pattern, the string will also never match original DFA. By the way, matching with the superset is very fast because it never has ANYCHAR, MBCSET and BACKREF, which are very expensive, and its mb_cur_max is always equal to 1. Therefore, perfomance for matching with DFA may be able to be dramatically improved without overhead with the superset. I prepare following string to measure the performance. yes jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj | head -10000000 > k I run three tests with this patch (best-of-5 trials): env LC_ALL=ja_JP.eucJP time -p src/grep -i foobar k real 1.77 user 1.23 sys 0.47 env LC_ALL=en_US.UTF-8 time -p src/grep -i 'j[a-c]d' k real 1.86 user 1.35 sys 0.45 env LC_ALL=C time -p src/grep '\(j\)\1d' k real 1.92 user 1.40 sys 0.48 Back out that commit (temporarily), recompile and rerun the experiment: env LC_ALL=ja_JP.eucJP time -p src/grep -i foobar k real 27.21 user 21.15 sys 5.36 env LC_ALL=en_US.UTF-8 time -p src/grep -i 'j[a-c]d' k real 96.35 user 429.80 sys 57.37 78.57user 15.16system 1:36.35elapsed 97%CPU (0avgtext+0avgdata 3296maxresident)k env LC_ALL=C time -p src/grep '\(j\)\1d' k real 502.32 user 429.80 sys 57.37 Norihiro --------_531AAC47000000000212_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSBiNTA4ZjRkNzFhMTQ0YTM0YTJkZDI5M2YyODBmODY2ZTMyZDg3YjQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBTYXQsIDggTWFyIDIwMTQgMTQ6MTc6MDQgKzA5MDAKU3ViamVjdDogW1BBVENIXSBncmVw OiBvcHRpbWl6YXRpb24gd2l0aCB0aGUgc3VwZXJzZXQgb2YgREZBCgpERkEgbWF5IGJlIGJ1aWxk IHRoZSBzdXBlcnNldCBvZiBpdHNlbGYsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIHRoZSBpdHNlbGYK ZXhwZWN0IEFOWUNIQVIsIE1CQ1NFVCBhbmQgQkFDS1JFRiBhcmUgcmVwbGFjZWQgQ1NFVCBzZXQg ZnVsbCBiaXRzCmZvbGxvd2VkIGJ5IFNUQVIsIGFuZCBtYl9jdXJfbWF4IGlzIGVxdWFsIHRvIDEs IGJ5IHRoZSBwYXRjaC4KCkZvciBleGFtcGxlLCBpZiBnaXZlbiB0aGUgcGF0dGVybiBgYVwoYlwp Y1wxJywgdGhlIHRva2VucyBvZiBvcmlnaW5hbApERkEgYW5kIHRoZSBzdXBlcnNldCBpcyBiZWxv dy4KCiAgb3JpZ2luYWw6IGEgYiBDQVQgYyBDQVQgQkFDS1JFRiBDQVQKCiAgc3VwZXJzZXQ6IGEg YiBDQVQgYyBDQVQgQ1NFVCBTVEFSIENBVAogICAgICAgICAgICAoRnVsbCBiaXRzIGFyZSBzZXQg dG8gQ1NFVC4pCgpJZiBhIHN0cmluZyBkb2Vzbid0IG1hdGNoZXMgdGhlIHN1cGVyc2V0IG9mIERG QSBmb3IgYSBwYXR0ZXJuLCB0aGUKc3RyaW5nIHdpbGwgYWxzbyBuZXZlciBtYXRjaCBvcmlnaW5h bCBERkEuICBCeSB0aGUgd2F5LCBtYXRjaGluZyB3aXRoCnRoZSBzdXBlcnNldCBpcyB2ZXJ5IGZh c3QgYmVjYXVzZSBpdCBuZXZlciBoYXMgQU5ZQ0hBUiwgTUJDU0VUIGFuZApCQUNLUkVGLCB3aGlj aCBhcmUgdmVyeSBleHBlbnNpdmUsIGFuZCBpdHMgbWJfY3VyX21heCBpcyBhbHdheXMgZXF1YWwK dG8gMS4gIFRoZXJlZm9yZSwgcGVyZm9tYW5jZSBmb3IgbWF0Y2hpbmcgd2l0aCBERkEgbWF5IGJl IGFibGUgdG8gYmUKZHJhbWF0aWNhbGx5IGltcHJvdmVkIHdpdGhvdXQgb3ZlcmhlYWQgd2l0aCB0 aGUgc3VwZXJzZXQuCgpJIHByZXBhcmUgZm9sbG93aW5nIHN0cmluZyB0byBtZWFzdXJlIHRoZSBw ZXJmb3JtYW5jZS4KCiAgICB5ZXMgampqampqampqampqampqampqampqampqampqampqampqampq ampqaiB8IGhlYWQgLTEwMDAwMDAwID4gawoKSSBydW4gdGhyZWUgdGVzdHMgd2l0aCB0aGlzIHBh dGNoIChiZXN0LW9mLTUgdHJpYWxzKToKCiAgICBlbnYgTENfQUxMPWphX0pQLmV1Y0pQIHRpbWUg LXAgc3JjL2dyZXAgLWkgZm9vYmFyIGsKICAgICAgICByZWFsIDEuNzcgICAgICAgdXNlciAxLjIz ICAgICAgIHN5cyAwLjQ3CiAgICBlbnYgTENfQUxMPWVuX1VTLlVURi04IHRpbWUgLXAgc3JjL2dy ZXAgLWkgJ2pbYS1jXWQnIGsKICAgICAgICByZWFsIDEuODYgICAgICAgdXNlciAxLjM1ICAgICAg IHN5cyAwLjQ1CiAgICBlbnYgTENfQUxMPUMgdGltZSAtcCBzcmMvZ3JlcCAnXChqXClcMWQnIGsK ICAgICAgICByZWFsIDEuOTIgICAgICAgdXNlciAxLjQwICAgICAgIHN5cyAwLjQ4CgpCYWNrIG91 dCB0aGF0IGNvbW1pdCAodGVtcG9yYXJpbHkpLCByZWNvbXBpbGUgYW5kIHJlcnVuIHRoZSBleHBl cmltZW50OgoKICAgIGVudiBMQ19BTEw9amFfSlAuZXVjSlAgdGltZSAtcCBzcmMvZ3JlcCAtaSBm b29iYXIgawogICAgICAgIHJlYWwgMjcuMjEgICAgICB1c2VyIDIxLjE1ICAgICAgc3lzIDUuMzYK ICAgIGVudiBMQ19BTEw9ZW5fVVMuVVRGLTggdGltZSAtcCBzcmMvZ3JlcCAtaSAnalthLWNdZCcg awogICAgICAgIHJlYWwgOTYuMzUgICAgICB1c2VyIDQyOS44MCAgICAgc3lzIDU3LjM3CiAgICAg ICAgNzguNTd1c2VyIDE1LjE2c3lzdGVtIDE6MzYuMzVlbGFwc2VkIDk3JUNQVSAoMGF2Z3RleHQr MGF2Z2RhdGEgMzI5Nm1heHJlc2lkZW50KWsKICAgIGVudiBMQ19BTEw9QyB0aW1lIC1wIHNyYy9n cmVwICdcKGpcKVwxZCcgawogICAgICAgIHJlYWwgNTAyLjMyICAgICB1c2VyIDQyOS44MCAgICAg c3lzIDU3LjM3CgoqIHNyYy9kZmEuYyAoc3RydWN0IGRmYSkgTmV3IG1lbWJlciBgZGZhc3VwZXJz ZXQnLgooZGZhaGludCk6IE5ldyBmdW5jdGlvbi4KKGRmYW9wdGltaXplKTogSWYgc3VjY2VlZCBp biBvcHRpbWl6YXRpb24gZm9yIFVURi04IGxvY2FsZSwgZG9uJ3QgdXNlCnRoZSBzdXBlcnNldC4K KGRmYXN1cGVyc2V0KTogTmV3IGZ1bmN0aW9uLgooZGZhY29tcCk6IEFkZCBjYWxsIG9mIGRmYXN1 cGVyc2V0IGFuZCBkZmFhbmFseXplIGZ1bmN0aW9ucy4KKGRmYWZyZWUpOiBSdW4gZnJlZSBvbmx5 IHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBwb2ludGVyIGlzbid0IE5VTEwuCihkZmFhbGxvYyk6IFNl dCBOVUxMIHRvIGBzdXBlcnNldCcgYXR0cmlidXRlIG9mIERGQSBjbGVhcmx5LgoqIHNyYy9kZmEu aDogRGVmaW5lIHByb3RvdHlwZSBmb3IgZGZhaGludCBmdW5jdGlvbi4KKiBkZmFzZWFyY2guYzog KEVHZXhlY3V0ZSk6IFVzZSBkZmFoaW50LgotLS0KIHNyYy9kZmEuYyAgICAgICB8IDEyNCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogc3Jj L2RmYS5oICAgICAgIHwgICAzICsrCiBzcmMvZGZhc2VhcmNoLmMgfCAgIDcgKysrLQogMyBmaWxl cyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2RmYS5jIGIvc3JjL2RmYS5jCmluZGV4IDU5MTAyNjguLjQ0ZjhkYWUgMTAwNjQ0Ci0t LSBhL3NyYy9kZmEuYworKysgYi9zcmMvZGZhLmMKQEAgLTM3Nyw2ICszNzcsOSBAQCBzdHJ1Y3Qg ZGZhCiAgIHNpemVfdCBubWJjc2V0czsKICAgc2l6ZV90IG1iY3NldHNfYWxsb2M7CiAKKyAgLyog RmllbGRzIGZpbGxlZCBieSB0aGUgc3VwZXJzZXQuICAqLworICBzdHJ1Y3QgZGZhICpzdXBlcnNl dDsgICAgICAgICAgICAgLyogSGludCBvZiB0aGUgZGZhLiAgKi8KKwogICAvKiBGaWVsZHMgZmls bGVkIGJ5IHRoZSBzdGF0ZSBidWlsZGVyLiAgKi8KICAgZGZhX3N0YXRlICpzdGF0ZXM7ICAgICAg ICAgICAgLyogU3RhdGVzIG9mIHRoZSBkZmEuICAqLwogICBzdGF0ZV9udW0gc2luZGV4OyAgICAg ICAgICAgICAvKiBJbmRleCBmb3IgYWRkaW5nIG5ldyBzdGF0ZXMuICAqLwpAQCAtMzUxNiw2ICsz NTE5LDE0IEBAIGRmYWV4ZWMgKHN0cnVjdCBkZmEgKmQsIGNoYXIgY29uc3QgKmJlZ2luLCBjaGFy ICplbmQsCiAgICAgfQogfQogCitjaGFyICoKK2RmYWhpbnQgKHN0cnVjdCBkZmEgKmQsIGNoYXIg Y29uc3QgKmJlZ2luLCBjaGFyICplbmQsIGludCBhbGxvd19ubCkKK3sKKyAgaWYgKGQtPnN1cGVy c2V0ID09IE5VTEwpCisgICAgcmV0dXJuIGJlZ2luOworICByZXR1cm4gZGZhZXhlYyAoZC0+c3Vw ZXJzZXQsIGJlZ2luLCBlbmQsIGFsbG93X25sLCBOVUxMLCBOVUxMKTsKK30KKwogc3RhdGljIHZv aWQKIGZyZWVfbWJkYXRhIChzdHJ1Y3QgZGZhICpkKQogewpAQCAtMzU5Niw2ICszNjA3LDc0IEBA IGRmYW9wdGltaXplIChzdHJ1Y3QgZGZhICpkKQogCiAgIGZyZWVfbWJkYXRhIChkKTsKICAgZC0+ bWJfY3VyX21heCA9IDE7CisKKyAgaWYgKGQtPnN1cGVyc2V0ICE9IE5VTEwpCisgICAgeworICAg ICAgZGZhZnJlZSAoZC0+c3VwZXJzZXQpOworICAgICAgZC0+c3VwZXJzZXQgPSBOVUxMOworICAg IH0KK30KKworc3RhdGljIHZvaWQKK2RmYXN1cGVyc2V0IChzdHJ1Y3QgZGZhICpkKQoreworICBz aXplX3QgaSwgajsKKyAgY2hhcmNsYXNzIGNjbDsKKyAgYm9vbCBoYXZlX2FjaGFyID0gZmFsc2U7 CisgIGJvb2wgaGF2ZV9uY2hhciA9IGZhbHNlOworCisgIGQtPnN1cGVyc2V0ID0geG1hbGxvYyAo c2l6ZW9mIChzdHJ1Y3QgZGZhKSk7CisgIGRmYSA9IGQtPnN1cGVyc2V0OworCisgICpkLT5zdXBl cnNldCA9ICpkOworICBNQUxMT0MgKGQtPnN1cGVyc2V0LT5jaGFyY2xhc3NlcywgZC0+c3VwZXJz ZXQtPmNhbGxvYyk7CisgIG1lbWNweSAoZC0+c3VwZXJzZXQtPmNoYXJjbGFzc2VzLCBkLT5jaGFy Y2xhc3Nlcywgc2l6ZW9mIChjaGFyY2xhc3MpICogZC0+Y2luZGV4KTsKKyAgZC0+c3VwZXJzZXQt PnRva2VucyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5tdWx0aWJ5dGVfcHJvcCA9IE5VTEw7Cisg IGQtPnN1cGVyc2V0LT5tYmNzZXRzID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPnN1cGVyc2V0ID0g TlVMTDsKKyAgZC0+c3VwZXJzZXQtPnN0YXRlcyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5mb2xs b3dzID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPnRyYW5zID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQt PnJlYWx0cmFucyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5mYWlscyA9IE5VTEw7CisgIGQtPnN1 cGVyc2V0LT5zdWNjZXNzID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPm5ld2xpbmVzID0gTlVMTDsK KyAgZC0+c3VwZXJzZXQtPm11c3RzID0gTlVMTDsKKworICBkLT5zdXBlcnNldC0+dGFsbG9jID0g ZC0+dGluZGV4ICogMjsKKyAgTUFMTE9DIChkLT5zdXBlcnNldC0+dG9rZW5zLCBkLT5zdXBlcnNl dC0+dGFsbG9jKTsKKworICBmb3IgKGkgPSBqID0gMDsgaSA8IGQtPnRpbmRleDsgaSsrKQorICAg IHsKKyAgICAgIHN3aXRjaCAoZC0+dG9rZW5zW2ldKQorICAgICAgICB7CisgICAgICAgIGNhc2Ug QU5ZQ0hBUjoKKyAgICAgICAgY2FzZSBNQkNTRVQ6CisgICAgICAgIGNhc2UgQkFDS1JFRjoKKyAg ICAgICAgICB6ZXJvc2V0IChjY2wpOworICAgICAgICAgIG5vdHNldCAoY2NsKTsKKyAgICAgICAg ICBkLT5zdXBlcnNldC0+dG9rZW5zW2orK10gPSBDU0VUICsgY2hhcmNsYXNzX2luZGV4IChjY2wp OworICAgICAgICAgIGlmIChkLT50b2tlbnNbaSArIDFdICE9IFNUQVIpCisgICAgICAgICAgICBk LT5zdXBlcnNldC0+dG9rZW5zW2orK10gPSBTVEFSOworICAgICAgICAgIGhhdmVfYWNoYXIgPSB0 cnVlOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIGQtPnN1 cGVyc2V0LT50b2tlbnNbaisrXSA9IGQtPnRva2Vuc1tpXTsKKyAgICAgICAgICBoYXZlX25jaGFy ID0gdHJ1ZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICBpZiAoZC0+ bWJfY3VyX21heCA9PSAxICYmICghaGF2ZV9hY2hhciB8fCAhaGF2ZV9uY2hhcikpCisgICAgewor ICAgICAgZGZhZnJlZSAoZC0+c3VwZXJzZXQpOworICAgICAgZC0+c3VwZXJzZXQgPSBOVUxMOwor ICAgICAgcmV0dXJuOworICAgIH0KKworICBkLT5zdXBlcnNldC0+dGluZGV4ID0gajsKKyAgZC0+ c3VwZXJzZXQtPm1iX2N1cl9tYXggPSAxOwogfQogCiAvKiBQYXJzZSBhbmQgYW5hbHl6ZSBhIHNp bmdsZSBzdHJpbmcgb2YgdGhlIGdpdmVuIGxlbmd0aC4gICovCkBAIC0zNjA1LDggKzM2ODQsMTEg QEAgZGZhY29tcCAoY2hhciBjb25zdCAqcywgc2l6ZV90IGxlbiwgc3RydWN0IGRmYSAqZCwgaW50 IHNlYXJjaGZsYWcpCiAgIGRmYWluaXQgKGQpOwogICBkZmFwYXJzZSAocywgbGVuLCBkKTsKICAg ZGZhbXVzdCAoZCk7CisgIGRmYXN1cGVyc2V0IChkKTsKICAgZGZhb3B0aW1pemUgKGQpOwogICBk ZmFhbmFseXplIChkLCBzZWFyY2hmbGFnKTsKKyAgaWYgKGQtPnN1cGVyc2V0ICE9IE5VTEwpCisg ICAgZGZhYW5hbHl6ZSAoZC0+c3VwZXJzZXQsIHNlYXJjaGZsYWcpOwogfQogCiAvKiBGcmVlIHRo ZSBzdG9yYWdlIGhlbGQgYnkgdGhlIGNvbXBvbmVudHMgb2YgYSBkZmEuICAqLwpAQCAtMzYyMiwz MSArMzcwNCw0NyBAQCBkZmFmcmVlIChzdHJ1Y3QgZGZhICpkKQogICBpZiAoZC0+bWJfY3VyX21h eCA+IDEpCiAgICAgZnJlZV9tYmRhdGEgKGQpOwogCi0gIGZvciAoaSA9IDA7IGkgPCBkLT5zaW5k ZXg7ICsraSkKKyAgaWYgKGQtPnN0YXRlcyAhPSBOVUxMKQorICAgIHsKKyAgICAgIGZvciAoaSA9 IDA7IGkgPCBkLT5zaW5kZXg7ICsraSkKKyAgICAgICAgeworICAgICAgICAgIGZyZWUgKGQtPnN0 YXRlc1tpXS5lbGVtcy5lbGVtcyk7CisgICAgICAgICAgaWYgKE1CU19TVVBQT1JUKQorICAgICAg ICAgICAgZnJlZSAoZC0+c3RhdGVzW2ldLm1icHMuZWxlbXMpOworICAgICAgICB9CisgICAgICBm cmVlIChkLT5zdGF0ZXMpOworICAgIH0KKyAgaWYgKGQtPmZvbGxvd3MgIT0gTlVMTCkKICAgICB7 Ci0gICAgICBmcmVlIChkLT5zdGF0ZXNbaV0uZWxlbXMuZWxlbXMpOwotICAgICAgaWYgKE1CU19T VVBQT1JUKQotICAgICAgICBmcmVlIChkLT5zdGF0ZXNbaV0ubWJwcy5lbGVtcyk7CisgICAgICBm b3IgKGkgPSAwOyBpIDwgZC0+dGluZGV4OyArK2kpCisgICAgICAgIGZyZWUgKGQtPmZvbGxvd3Nb aV0uZWxlbXMpOworICAgICAgZnJlZSAoZC0+Zm9sbG93cyk7CiAgICAgfQotICBmcmVlIChkLT5z dGF0ZXMpOwotICBmb3IgKGkgPSAwOyBpIDwgZC0+dGluZGV4OyArK2kpCi0gICAgZnJlZSAoZC0+ Zm9sbG93c1tpXS5lbGVtcyk7Ci0gIGZyZWUgKGQtPmZvbGxvd3MpOwotICBmb3IgKGkgPSAwOyBp IDwgZC0+dHJhbGxvYzsgKytpKQorICBpZiAoZC0+dHJhbnMgIT0gTlVMTCkKICAgICB7Ci0gICAg ICBmcmVlIChkLT50cmFuc1tpXSk7Ci0gICAgICBmcmVlIChkLT5mYWlsc1tpXSk7CisgICAgICBm b3IgKGkgPSAwOyBpIDwgZC0+dHJhbGxvYzsgKytpKQorICAgICAgICBmcmVlIChkLT50cmFuc1tp XSk7CiAgICAgfQorICBpZiAoZC0+ZmFpbHMgIT0gTlVMTCkKKyAgICB7CisgICAgICBmb3IgKGkg PSAwOyBpIDwgZC0+dHJhbGxvYzsgKytpKQorICAgICAgICBmcmVlIChkLT5mYWlsc1tpXSk7Cisg ICAgfQorCiAgIGZyZWUgKGQtPnJlYWx0cmFucyk7CiAgIGZyZWUgKGQtPmZhaWxzKTsKICAgZnJl ZSAoZC0+bmV3bGluZXMpOwogICBmcmVlIChkLT5zdWNjZXNzKTsKKwogICBmb3IgKGRtID0gZC0+ bXVzdHM7IGRtOyBkbSA9IG5kbSkKICAgICB7CiAgICAgICBuZG0gPSBkbS0+bmV4dDsKICAgICAg IGZyZWUgKGRtLT5tdXN0KTsKICAgICAgIGZyZWUgKGRtKTsKICAgICB9CisKKyAgaWYgKGQtPnN1 cGVyc2V0ICE9IE5VTEwpCisgICAgZGZhZnJlZSAoZC0+c3VwZXJzZXQpOwogfQogCiAvKiBIYXZp bmcgZm91bmQgdGhlIHBvc3RmaXggcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlZ3VsYXIgZXhwcmVz c2lvbiwKQEAgLTQxNTQsNyArNDI1Miw5IEBAIGRvbmU6CiBzdHJ1Y3QgZGZhICoKIGRmYWFsbG9j ICh2b2lkKQogewotICByZXR1cm4geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZGZhKSk7CisgIHN0 cnVjdCBkZmEgKmQgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkZmEpKTsKKyAgZC0+c3VwZXJz ZXQgPSBOVUxMOworICByZXR1cm4gZDsKIH0KIAogc3RydWN0IGRmYW11c3QgKl9HTF9BVFRSSUJV VEVfUFVSRQpkaWZmIC0tZ2l0IGEvc3JjL2RmYS5oIGIvc3JjL2RmYS5oCmluZGV4IGFkMmI4NTQu LjkxZGM3ODIgMTAwNjQ0Ci0tLSBhL3NyYy9kZmEuaAorKysgYi9zcmMvZGZhLmgKQEAgLTY3LDYg KzY3LDkgQEAgZXh0ZXJuIHZvaWQgZGZhY29tcCAoY2hhciBjb25zdCAqLCBzaXplX3QsIHN0cnVj dCBkZmEgKiwgaW50KTsKICAgIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGZhbGwgYmFjayBvbiBhIGJh Y2t0cmFja2luZyBtYXRjaGVyLiAqLwogZXh0ZXJuIGNoYXIgKmRmYWV4ZWMgKHN0cnVjdCBkZmEg KmQsIGNoYXIgY29uc3QgKmJlZ2luLCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgICAgICAg aW50IG5ld2xpbmUsIHNpemVfdCAqY291bnQsIGludCAqYmFja3JlZik7CitleHRlcm4gY2hhciAq ZGZhaGludCAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKKyAg ICAgICAgICAgICAgICAgICAgICBpbnQgbmV3bGluZSk7CisKIAogLyogRnJlZSB0aGUgc3RvcmFn ZSBoZWxkIGJ5IHRoZSBjb21wb25lbnRzIG9mIGEgc3RydWN0IGRmYS4gKi8KIGV4dGVybiB2b2lk IGRmYWZyZWUgKHN0cnVjdCBkZmEgKik7CmRpZmYgLS1naXQgYS9zcmMvZGZhc2VhcmNoLmMgYi9z cmMvZGZhc2VhcmNoLmMKaW5kZXggMGI1Njk2MC4uODc0ZGNhNyAxMDA2NDQKLS0tIGEvc3JjL2Rm YXNlYXJjaC5jCisrKyBiL3NyYy9kZmFzZWFyY2guYwpAQCAtMjQ4LDE0ICsyNDgsMTUgQEAgRUdl eGVjdXRlIChjaGFyIGNvbnN0ICpidWYsIHNpemVfdCBzaXplLCBzaXplX3QgKm1hdGNoX3NpemUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dzbS5zaXplWzBdKSkK ICAgICAgICAgICAgICAgICAgICAgZ290byBzdWNjZXNzOwogICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgaWYgKGRmYWhpbnQgKGRmYSwgYmVnLCAoY2hhciAqKSBlbmQsIDApID09IE5V TEwpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgIGlmIChkZmFleGVj IChkZmEsIGJlZywgKGNoYXIgKikgZW5kLCAwLCBOVUxMLCAmYmFja3JlZikgPT0gTlVMTCkKICAg ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCiAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgIC8qIE5vIGdvb2QgZml4ZWQgc3RyaW5nczsgc3Rh cnQgd2l0aCBERkEuICovCi0gICAgICAgICAgICAgIGNoYXIgY29uc3QgKm5leHRfYmVnID0gZGZh ZXhlYyAoZGZhLCBiZWcsIChjaGFyICopIGJ1ZmxpbSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCAmYmFja3JlZik7CisgICAgICAgICAgICAg IGNoYXIgY29uc3QgKm5leHRfYmVnID0gZGZhaGludCAoZGZhLCBiZWcsIChjaGFyICopIGJ1Zmxp bSwgMCk7CiAgICAgICAgICAgICAgIC8qIElmIHRoZXJlJ3Mgbm8gbWF0Y2gsIG9yIGlmIHdlJ3Zl IG1hdGNoZWQgdGhlIHNlbnRpbmVsLAogICAgICAgICAgICAgICAgICB3ZSdyZSBkb25lLiAgKi8K ICAgICAgICAgICAgICAgaWYgKG5leHRfYmVnID09IE5VTEwgfHwgbmV4dF9iZWcgPT0gYnVmbGlt KQpAQCAtMjY4LDYgKzI2OSw4IEBAIEVHZXhlY3V0ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qg c2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLAogICAgICAgICAgICAgICAgIGVuZCA9IGJ1ZmxpbTsK ICAgICAgICAgICAgICAgd2hpbGUgKGJlZyA+IGJ1ZiAmJiBiZWdbLTFdICE9IGVvbCkKICAgICAg ICAgICAgICAgICAtLWJlZzsKKyAgICAgICAgICAgICAgaWYgKGRmYWV4ZWMgKGRmYSwgYmVnLCAo Y2hhciAqKSBlbmQsIDAsIE5VTEwsICZiYWNrcmVmKSA9PSBOVUxMKQorICAgICAgICAgICAgICAg IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgIC8qIFN1Y2Nlc3NmdWwsIG5vIGJh Y2tyZWZlcmVuY2VzIGVuY291bnRlcmVkISAqLwogICAgICAgICAgIGlmICghYmFja3JlZikKLS0g CjEuOC41LjIKCg== --------_531AAC47000000000212_MULTIPART_MIXED_-- From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 08 02:09:54 2014 Received: (at 16966) by debbugs.gnu.org; 8 Mar 2014 07:09:54 +0000 Received: from localhost ([127.0.0.1]:55566 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WMBOM-00068D-43 for submit@debbugs.gnu.org; Sat, 08 Mar 2014 02:09:54 -0500 Received: from pbsg501.nifty.com ([202.248.238.71]:61932) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WMBOH-00067u-OG for 16966@debbugs.gnu.org; Sat, 08 Mar 2014 02:09:53 -0500 Received: from [10.120.1.53] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s2879YBx007455 for <16966@debbugs.gnu.org>; Sat, 8 Mar 2014 16:09:35 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Sat, 08 Mar 2014 16:09:34 +0900 From: Norihiro Tanaka To: 16966@debbugs.gnu.org Subject: Re: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <20140308144141.021A.27F6AC2D@kcn.ne.jp> References: <20140308144141.021A.27F6AC2D@kcn.ne.jp> Message-Id: <20140308160933.0225.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_531AC1AC000000000224_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.64.06 [ja] X-Spam-Score: 4.7 (++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: I fixed the bug which doesn't QMARK and PLUS in dfasuperset() and modified serveral comments. [...] Content analysis details: (4.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record 3.5 OBFU_TEXT_ATTACH BODY: Text attachment with non-text MIME type X-Debbugs-Envelope-To: 16966 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 4.7 (++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: I fixed the bug which doesn't QMARK and PLUS in dfasuperset() and modified serveral comments. [...] Content analysis details: (4.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record 3.5 OBFU_TEXT_ATTACH BODY: Text attachment with non-text MIME type --------_531AC1AC000000000224_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit I fixed the bug which doesn't QMARK and PLUS in dfasuperset() and modified serveral comments. --------_531AC1AC000000000224_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSAxNjUzNzgyNmU4Mjk5NDEzODNjNjFiNzc2NTE3OWQxMmIwZDI4MWViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBTYXQsIDggTWFyIDIwMTQgMTY6MDU6MTkgKzA5MDAKU3ViamVjdDogW1BBVENIXSBncmVw OiBvcHRpbWl6YXRpb24gd2l0aCB0aGUgc3VwZXJzZXQgb2YgREZBLgoKQnkgdGhlIHBhdGNoLCBE RkEgbWF5IGJlIGFsc28gYnVpbGQgdGhlIHN1cGVyc2V0IG9mIGl0c2VsZiwgd2hpY2ggaXMgdGhl CnNhbWUgYXMgdGhlIGl0c2VsZiBleHBlY3QgQU5ZQ0hBUiwgTUJDU0VUIGFuZCBCQUNLUkVGIGFy ZSByZXBsYWNlZCBDU0VUCnNldCBmdWxsIGJpdHMgZm9sbG93ZWQgYnkgU1RBUiwgYW5kIG1iX2N1 cl9tYXggaXMgZXF1YWwgdG8gMS4KCkZvciBleGFtcGxlLCBpZiBnaXZlbiB0aGUgcGF0dGVybiBg YVwoYlwpY1wxJywgdGhlIHRva2VucyBvZiBvcmlnaW5hbApERkEgYW5kIGl0cyBzdXBlcnNldCBp cyBiZWxvdy4KCiAgb3JpZ2luYWw6IGEgYiBDQVQgYyBDQVQgQkFDS1JFRiBDQVQKCiAgc3VwZXJz ZXQ6IGEgYiBDQVQgYyBDQVQgQ1NFVCBTVEFSIENBVAogICAgICAgICAgICAoRnVsbCBiaXRzIGFy ZSBzZXQgdG8gQ1NFVC4pCgpJZiBhIHN0cmluZyBkb2Vzbid0IG1hdGNoZXMgdGhlIHN1cGVyc2V0 IG9mIG9yaWdpbmFsIERGQSBmb3IgYSBwYXR0ZXJuLAp0aGUgc3RyaW5nIHdpbGwgYWxzbyBuZXZl ciBtYXRjaCBvcmlnaW5hbCBERkEuICBCeSB0aGUgd2F5LCBtYXRjaGluZwp3aXRoIHRoZSBzdXBl cnNldCBpcyB2ZXJ5IGZhc3QgYmVjYXVzZSBpdCBuZXZlciBoYXMgQU5ZQ0hBUiwgTUJDU0VUIGFu ZApCQUNLUkVGLCB3aGljaCBhcmUgdmVyeSBleHBlbnNpdmUsIGFuZCBpdHMgbWJfY3VyX21heCBp cyBhbHdheXMgZXF1YWwKdG8gMS4gIFRoZXJlZm9yZSwgdGhlIHBlcmZvbWFuY2UgZm9yIG1hdGNo aW5nIHdpdGggREZBIG1heSBiZQpkcmFtYXRpY2FsbHkgaW1wcm92ZWQgd2l0aG91dCBvdmVyaGVh ZCBieSB1c2luZyB0aGUgc3VwZXJzZXQuCgpJIHByZXBhcmUgZm9sbG93aW5nIHN0cmluZyB0byBt ZWFzdXJlIHRoZSBwZXJmb3JtYW5jZS4KCiAgICB5ZXMgampqampqampqampqampqampqampqampq ampqampqampqampqampqaiB8IGhlYWQgLTEwMDAwMDAwID4gawoKSSBydW4gdGhyZWUgdGVzdHMg d2l0aCB0aGlzIHBhdGNoIChiZXN0LW9mLTUgdHJpYWxzKToKCiAgICBlbnYgTENfQUxMPWphX0pQ LmV1Y0pQIHRpbWUgLXAgc3JjL2dyZXAgLWkgZm9vYmFyIGsKICAgICAgICByZWFsIDEuNzcgICAg ICAgdXNlciAxLjIzICAgICAgIHN5cyAwLjQ3CiAgICBlbnYgTENfQUxMPWVuX1VTLlVURi04IHRp bWUgLXAgc3JjL2dyZXAgLWkgJ2pbYS1jXWQnIGsKICAgICAgICByZWFsIDEuODYgICAgICAgdXNl ciAxLjM1ICAgICAgIHN5cyAwLjQ1CiAgICBlbnYgTENfQUxMPUMgdGltZSAtcCBzcmMvZ3JlcCAn XChqXClcMWQnIGsKICAgICAgICByZWFsIDEuOTIgICAgICAgdXNlciAxLjQwICAgICAgIHN5cyAw LjQ4CgpCYWNrIG91dCB0aGF0IGNvbW1pdCAodGVtcG9yYXJpbHkpLCByZWNvbXBpbGUsIGFuZCBy ZXJ1biB0aGUgZXhwZXJpbWVudDoKCiAgICBlbnYgTENfQUxMPWphX0pQLmV1Y0pQIHRpbWUgLXAg c3JjL2dyZXAgLWkgZm9vYmFyIGsKICAgICAgICByZWFsIDI3LjIxICAgICAgdXNlciAyMS4xNSAg ICAgIHN5cyA1LjM2CiAgICBlbnYgTENfQUxMPWVuX1VTLlVURi04IHRpbWUgLXAgc3JjL2dyZXAg LWkgJ2pbYS1jXWQnIGsKICAgICAgICByZWFsIDk2LjM1ICAgICAgdXNlciA0MjkuODAgICAgIHN5 cyA1Ny4zNwogICAgZW52IExDX0FMTD1DIHRpbWUgLXAgc3JjL2dyZXAgJ1woalwpXDFkJyBrCiAg ICAgICAgcmVhbCA1MDIuMzIgICAgIHVzZXIgNDI5LjgwICAgICBzeXMgNTcuMzcKCiogc3JjL2Rm YS5jIChzdHJ1Y3QgZGZhKSBOZXcgbWVtYmVyIGBzdXBlcnNldCcuCihkZmFoaW50KTogTmV3IGZ1 bmN0aW9uLgooZGZhb3B0aW1pemUpOiBJZiBzdWNjZWVkIGluIG9wdGltaXphdGlvbiBmb3IgVVRG LTggbG9jYWxlLCBkb24ndCB1c2UKdGhlIHN1cGVyc2V0LgooZGZhc3VwZXJzZXQpOiBOZXcgZnVu Y3Rpb24uCihkZmFjb21wKTogQWRkIGNhbGwgb2YgZGZhc3VwZXJzZXQgYW5kIGRmYWFuYWx5emUg ZnVuY3Rpb25zLgooZGZhZnJlZSk6IFJ1biBmcmVlIG9ubHkgd2hlbiB0aGUgdmFsdWUgb2YgdGhl IHBvaW50ZXIgaXNuJ3QgTlVMTC4KKGRmYWFsbG9jKTogU2V0IE5VTEwgdG8gbWVtYmVyIGBzdXBl cnNldCcgb2YgREZBIGNsZWFybHkuCiogc3JjL2RmYS5oOiBEZWZpbmUgcHJvdG90eXBlIGZvciBk ZmFoaW50IGZ1bmN0aW9uLgoqIGRmYXNlYXJjaC5jOiAoRUdleGVjdXRlKTogVXNlIGRmYWhpbnQu Ci0tLQogc3JjL2RmYS5jICAgICAgIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvZGZhLmggICAgICAgfCAgIDMgKysKIHNy Yy9kZmFzZWFyY2guYyB8ICAgNyArKystCiAzIGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25z KCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGZhLmMgYi9zcmMvZGZhLmMK aW5kZXggNTkxMDI2OC4uNzcyZTM1MCAxMDA2NDQKLS0tIGEvc3JjL2RmYS5jCisrKyBiL3NyYy9k ZmEuYwpAQCAtMzc3LDYgKzM3Nyw5IEBAIHN0cnVjdCBkZmEKICAgc2l6ZV90IG5tYmNzZXRzOwog ICBzaXplX3QgbWJjc2V0c19hbGxvYzsKIAorICAvKiBGaWVsZHMgZmlsbGVkIGJ5IHRoZSBzdXBl cnNldC4gICovCisgIHN0cnVjdCBkZmEgKnN1cGVyc2V0OyAgICAgICAgICAgICAvKiBIaW50IG9m IHRoZSBkZmEuICAqLworCiAgIC8qIEZpZWxkcyBmaWxsZWQgYnkgdGhlIHN0YXRlIGJ1aWxkZXIu ICAqLwogICBkZmFfc3RhdGUgKnN0YXRlczsgICAgICAgICAgICAvKiBTdGF0ZXMgb2YgdGhlIGRm YS4gICovCiAgIHN0YXRlX251bSBzaW5kZXg7ICAgICAgICAgICAgIC8qIEluZGV4IGZvciBhZGRp bmcgbmV3IHN0YXRlcy4gICovCkBAIC0zNTE2LDYgKzM1MTksMTQgQEAgZGZhZXhlYyAoc3RydWN0 IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICB9CiB9CiAKK2NoYXIg Y29uc3QgKgorZGZhaGludCAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIg KmVuZCwgaW50IGFsbG93X25sKQoreworICBpZiAoZC0+c3VwZXJzZXQgPT0gTlVMTCkKKyAgICBy ZXR1cm4gYmVnaW47CisgIHJldHVybiBkZmFleGVjIChkLT5zdXBlcnNldCwgYmVnaW4sIGVuZCwg YWxsb3dfbmwsIE5VTEwsIE5VTEwpOworfQorCiBzdGF0aWMgdm9pZAogZnJlZV9tYmRhdGEgKHN0 cnVjdCBkZmEgKmQpCiB7CkBAIC0zNTk2LDYgKzM2MDcsNzUgQEAgZGZhb3B0aW1pemUgKHN0cnVj dCBkZmEgKmQpCiAKICAgZnJlZV9tYmRhdGEgKGQpOwogICBkLT5tYl9jdXJfbWF4ID0gMTsKKwor ICBpZiAoZC0+c3VwZXJzZXQgIT0gTlVMTCkKKyAgICB7CisgICAgICBkZmFmcmVlIChkLT5zdXBl cnNldCk7CisgICAgICBkLT5zdXBlcnNldCA9IE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgdm9p ZAorZGZhc3VwZXJzZXQgKHN0cnVjdCBkZmEgKmQpCit7CisgIHNpemVfdCBpLCBqOworICBjaGFy Y2xhc3MgY2NsOworICBib29sIGhhdmVfYWNoYXIgPSBmYWxzZTsKKyAgYm9vbCBoYXZlX25jaGFy ID0gZmFsc2U7CisKKyAgZC0+c3VwZXJzZXQgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkZmEp KTsKKyAgZGZhID0gZC0+c3VwZXJzZXQ7CisKKyAgKmQtPnN1cGVyc2V0ID0gKmQ7CisgIE1BTExP QyAoZC0+c3VwZXJzZXQtPmNoYXJjbGFzc2VzLCBkLT5zdXBlcnNldC0+Y2FsbG9jKTsKKyAgbWVt Y3B5IChkLT5zdXBlcnNldC0+Y2hhcmNsYXNzZXMsIGQtPmNoYXJjbGFzc2VzLCBzaXplb2YgKGNo YXJjbGFzcykgKiBkLT5jaW5kZXgpOworICBkLT5zdXBlcnNldC0+dG9rZW5zID0gTlVMTDsKKyAg ZC0+c3VwZXJzZXQtPm11bHRpYnl0ZV9wcm9wID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPm1iY3Nl dHMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+c3VwZXJzZXQgPSBOVUxMOworICBkLT5zdXBlcnNl dC0+c3RhdGVzID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPmZvbGxvd3MgPSBOVUxMOworICBkLT5z dXBlcnNldC0+dHJhbnMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+cmVhbHRyYW5zID0gTlVMTDsK KyAgZC0+c3VwZXJzZXQtPmZhaWxzID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPnN1Y2Nlc3MgPSBO VUxMOworICBkLT5zdXBlcnNldC0+bmV3bGluZXMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+bXVz dHMgPSBOVUxMOworCisgIGQtPnN1cGVyc2V0LT50YWxsb2MgPSBkLT50aW5kZXggKiAyOworICBN QUxMT0MgKGQtPnN1cGVyc2V0LT50b2tlbnMsIGQtPnN1cGVyc2V0LT50YWxsb2MpOworCisgIGZv ciAoaSA9IGogPSAwOyBpIDwgZC0+dGluZGV4OyBpKyspCisgICAgeworICAgICAgc3dpdGNoIChk LT50b2tlbnNbaV0pCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBBTllDSEFSOgorICAgICAgICBj YXNlIE1CQ1NFVDoKKyAgICAgICAgY2FzZSBCQUNLUkVGOgorICAgICAgICAgIHplcm9zZXQgKGNj bCk7CisgICAgICAgICAgbm90c2V0IChjY2wpOworICAgICAgICAgIGQtPnN1cGVyc2V0LT50b2tl bnNbaisrXSA9IENTRVQgKyBjaGFyY2xhc3NfaW5kZXggKGNjbCk7CisgICAgICAgICAgaWYgKGQt PnRva2Vuc1srK2ldICE9IFNUQVIgJiYgZC0+dG9rZW5zW2ldICE9IFFNQVJLCisgICAgICAgICAg ICAgICYmIGQtPnRva2Vuc1tpXSAhPSBQTFVTKQorICAgICAgICAgICAgZC0+c3VwZXJzZXQtPnRv a2Vuc1tqKytdID0gU1RBUjsKKyAgICAgICAgICBoYXZlX2FjaGFyID0gdHJ1ZTsKKyAgICAgICAg ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBkLT5zdXBlcnNldC0+dG9rZW5z W2orK10gPSBkLT50b2tlbnNbaV07CisgICAgICAgICAgaGF2ZV9uY2hhciA9IHRydWU7CisgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgaWYgKGQtPm1iX2N1cl9tYXggPT0g MSAmJiAoIWhhdmVfYWNoYXIgfHwgIWhhdmVfbmNoYXIpKQorICAgIHsKKyAgICAgIGRmYWZyZWUg KGQtPnN1cGVyc2V0KTsKKyAgICAgIGQtPnN1cGVyc2V0ID0gTlVMTDsKKyAgICAgIHJldHVybjsK KyAgICB9CisKKyAgZC0+c3VwZXJzZXQtPnRpbmRleCA9IGo7CisgIGQtPnN1cGVyc2V0LT5tYl9j dXJfbWF4ID0gMTsKIH0KIAogLyogUGFyc2UgYW5kIGFuYWx5emUgYSBzaW5nbGUgc3RyaW5nIG9m IHRoZSBnaXZlbiBsZW5ndGguICAqLwpAQCAtMzYwNSw4ICszNjg1LDExIEBAIGRmYWNvbXAgKGNo YXIgY29uc3QgKnMsIHNpemVfdCBsZW4sIHN0cnVjdCBkZmEgKmQsIGludCBzZWFyY2hmbGFnKQog ICBkZmFpbml0IChkKTsKICAgZGZhcGFyc2UgKHMsIGxlbiwgZCk7CiAgIGRmYW11c3QgKGQpOwor ICBkZmFzdXBlcnNldCAoZCk7CiAgIGRmYW9wdGltaXplIChkKTsKICAgZGZhYW5hbHl6ZSAoZCwg c2VhcmNoZmxhZyk7CisgIGlmIChkLT5zdXBlcnNldCAhPSBOVUxMKQorICAgIGRmYWFuYWx5emUg KGQtPnN1cGVyc2V0LCBzZWFyY2hmbGFnKTsKIH0KIAogLyogRnJlZSB0aGUgc3RvcmFnZSBoZWxk IGJ5IHRoZSBjb21wb25lbnRzIG9mIGEgZGZhLiAgKi8KQEAgLTM2MjIsMzEgKzM3MDUsNDcgQEAg ZGZhZnJlZSAoc3RydWN0IGRmYSAqZCkKICAgaWYgKGQtPm1iX2N1cl9tYXggPiAxKQogICAgIGZy ZWVfbWJkYXRhIChkKTsKIAotICBmb3IgKGkgPSAwOyBpIDwgZC0+c2luZGV4OyArK2kpCisgIGlm IChkLT5zdGF0ZXMgIT0gTlVMTCkKKyAgICB7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgZC0+c2lu ZGV4OyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICBmcmVlIChkLT5zdGF0ZXNbaV0uZWxlbXMu ZWxlbXMpOworICAgICAgICAgIGlmIChNQlNfU1VQUE9SVCkKKyAgICAgICAgICAgIGZyZWUgKGQt PnN0YXRlc1tpXS5tYnBzLmVsZW1zKTsKKyAgICAgICAgfQorICAgICAgZnJlZSAoZC0+c3RhdGVz KTsKKyAgICB9CisgIGlmIChkLT5mb2xsb3dzICE9IE5VTEwpCiAgICAgewotICAgICAgZnJlZSAo ZC0+c3RhdGVzW2ldLmVsZW1zLmVsZW1zKTsKLSAgICAgIGlmIChNQlNfU1VQUE9SVCkKLSAgICAg ICAgZnJlZSAoZC0+c3RhdGVzW2ldLm1icHMuZWxlbXMpOworICAgICAgZm9yIChpID0gMDsgaSA8 IGQtPnRpbmRleDsgKytpKQorICAgICAgICBmcmVlIChkLT5mb2xsb3dzW2ldLmVsZW1zKTsKKyAg ICAgIGZyZWUgKGQtPmZvbGxvd3MpOwogICAgIH0KLSAgZnJlZSAoZC0+c3RhdGVzKTsKLSAgZm9y IChpID0gMDsgaSA8IGQtPnRpbmRleDsgKytpKQotICAgIGZyZWUgKGQtPmZvbGxvd3NbaV0uZWxl bXMpOwotICBmcmVlIChkLT5mb2xsb3dzKTsKLSAgZm9yIChpID0gMDsgaSA8IGQtPnRyYWxsb2M7 ICsraSkKKyAgaWYgKGQtPnRyYW5zICE9IE5VTEwpCiAgICAgewotICAgICAgZnJlZSAoZC0+dHJh bnNbaV0pOwotICAgICAgZnJlZSAoZC0+ZmFpbHNbaV0pOworICAgICAgZm9yIChpID0gMDsgaSA8 IGQtPnRyYWxsb2M7ICsraSkKKyAgICAgICAgZnJlZSAoZC0+dHJhbnNbaV0pOwogICAgIH0KKyAg aWYgKGQtPmZhaWxzICE9IE5VTEwpCisgICAgeworICAgICAgZm9yIChpID0gMDsgaSA8IGQtPnRy YWxsb2M7ICsraSkKKyAgICAgICAgZnJlZSAoZC0+ZmFpbHNbaV0pOworICAgIH0KKwogICBmcmVl IChkLT5yZWFsdHJhbnMpOwogICBmcmVlIChkLT5mYWlscyk7CiAgIGZyZWUgKGQtPm5ld2xpbmVz KTsKICAgZnJlZSAoZC0+c3VjY2Vzcyk7CisKICAgZm9yIChkbSA9IGQtPm11c3RzOyBkbTsgZG0g PSBuZG0pCiAgICAgewogICAgICAgbmRtID0gZG0tPm5leHQ7CiAgICAgICBmcmVlIChkbS0+bXVz dCk7CiAgICAgICBmcmVlIChkbSk7CiAgICAgfQorCisgIGlmIChkLT5zdXBlcnNldCAhPSBOVUxM KQorICAgIGRmYWZyZWUgKGQtPnN1cGVyc2V0KTsKIH0KIAogLyogSGF2aW5nIGZvdW5kIHRoZSBw b3N0Zml4IHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24sCkBAIC00MTU0 LDcgKzQyNTMsOSBAQCBkb25lOgogc3RydWN0IGRmYSAqCiBkZmFhbGxvYyAodm9pZCkKIHsKLSAg cmV0dXJuIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGRmYSkpOworICBzdHJ1Y3QgZGZhICpkID0g eG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZGZhKSk7CisgIGQtPnN1cGVyc2V0ID0gTlVMTDsKKyAg cmV0dXJuIGQ7CiB9CiAKIHN0cnVjdCBkZmFtdXN0ICpfR0xfQVRUUklCVVRFX1BVUkUKZGlmZiAt LWdpdCBhL3NyYy9kZmEuaCBiL3NyYy9kZmEuaAppbmRleCBhZDJiODU0Li43NzhlZjIxIDEwMDY0 NAotLS0gYS9zcmMvZGZhLmgKKysrIGIvc3JjL2RmYS5oCkBAIC02Nyw2ICs2Nyw5IEBAIGV4dGVy biB2b2lkIGRmYWNvbXAgKGNoYXIgY29uc3QgKiwgc2l6ZV90LCBzdHJ1Y3QgZGZhICosIGludCk7 CiAgICB0byBkZWNpZGUgd2hldGhlciB0byBmYWxsIGJhY2sgb24gYSBiYWNrdHJhY2tpbmcgbWF0 Y2hlci4gKi8KIGV4dGVybiBjaGFyICpkZmFleGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0 ICpiZWdpbiwgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgIGludCBuZXdsaW5lLCBz aXplX3QgKmNvdW50LCBpbnQgKmJhY2tyZWYpOworZXh0ZXJuIGNoYXIgY29uc3QgKmRmYWhpbnQg KHN0cnVjdCBkZmEgKmQsIGNoYXIgY29uc3QgKmJlZ2luLCBjaGFyICplbmQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IG5ld2xpbmUpOworCiAKIC8qIEZyZWUgdGhlIHN0b3JhZ2Ug aGVsZCBieSB0aGUgY29tcG9uZW50cyBvZiBhIHN0cnVjdCBkZmEuICovCiBleHRlcm4gdm9pZCBk ZmFmcmVlIChzdHJ1Y3QgZGZhICopOwpkaWZmIC0tZ2l0IGEvc3JjL2RmYXNlYXJjaC5jIGIvc3Jj L2RmYXNlYXJjaC5jCmluZGV4IDBiNTY5NjAuLjg3NGRjYTcgMTAwNjQ0Ci0tLSBhL3NyYy9kZmFz ZWFyY2guYworKysgYi9zcmMvZGZhc2VhcmNoLmMKQEAgLTI0OCwxNCArMjQ4LDE1IEBAIEVHZXhl Y3V0ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3c20uc2l6ZVswXSkpCiAg ICAgICAgICAgICAgICAgICAgIGdvdG8gc3VjY2VzczsKICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIGlmIChkZmFoaW50IChkZmEsIGJlZywgKGNoYXIgKikgZW5kLCAwKSA9PSBOVUxM KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICBpZiAoZGZhZXhlYyAo ZGZhLCBiZWcsIChjaGFyICopIGVuZCwgMCwgTlVMTCwgJmJhY2tyZWYpID09IE5VTEwpCiAgICAg ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQogICAg ICAgICAgICAgewogICAgICAgICAgICAgICAvKiBObyBnb29kIGZpeGVkIHN0cmluZ3M7IHN0YXJ0 IHdpdGggREZBLiAqLwotICAgICAgICAgICAgICBjaGFyIGNvbnN0ICpuZXh0X2JlZyA9IGRmYWV4 ZWMgKGRmYSwgYmVnLCAoY2hhciAqKSBidWZsaW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgJmJhY2tyZWYpOworICAgICAgICAgICAgICBj aGFyIGNvbnN0ICpuZXh0X2JlZyA9IGRmYWhpbnQgKGRmYSwgYmVnLCAoY2hhciAqKSBidWZsaW0s IDApOwogICAgICAgICAgICAgICAvKiBJZiB0aGVyZSdzIG5vIG1hdGNoLCBvciBpZiB3ZSd2ZSBt YXRjaGVkIHRoZSBzZW50aW5lbCwKICAgICAgICAgICAgICAgICAgd2UncmUgZG9uZS4gICovCiAg ICAgICAgICAgICAgIGlmIChuZXh0X2JlZyA9PSBOVUxMIHx8IG5leHRfYmVnID09IGJ1ZmxpbSkK QEAgLTI2OCw2ICsyNjksOCBAQCBFR2V4ZWN1dGUgKGNoYXIgY29uc3QgKmJ1Ziwgc2l6ZV90IHNp emUsIHNpemVfdCAqbWF0Y2hfc2l6ZSwKICAgICAgICAgICAgICAgICBlbmQgPSBidWZsaW07CiAg ICAgICAgICAgICAgIHdoaWxlIChiZWcgPiBidWYgJiYgYmVnWy0xXSAhPSBlb2wpCiAgICAgICAg ICAgICAgICAgLS1iZWc7CisgICAgICAgICAgICAgIGlmIChkZmFleGVjIChkZmEsIGJlZywgKGNo YXIgKikgZW5kLCAwLCBOVUxMLCAmYmFja3JlZikgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBj b250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAvKiBTdWNjZXNzZnVsLCBubyBiYWNr cmVmZXJlbmNlcyBlbmNvdW50ZXJlZCEgKi8KICAgICAgICAgICBpZiAoIWJhY2tyZWYpCi0tIAox LjguNS4yCgo= --------_531AC1AC000000000224_MULTIPART_MIXED_-- From ADS18022@nifty.com Sun Mar 09 08:51:07 2014 Received: (at 16966) by debbugs.gnu.org; 9 Mar 2014 23:50:39 +0000 Return-path: Envelope-to: 16966@debbugs.gnu.org Delivery-date: Sun, 09 Mar 2014 08:51:07 -0400 Received: from pbsg500.nifty.com ([202.248.238.70]:40951) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WMdC4-0000jh-EC for 16966@debbugs.gnu.org; Sun, 09 Mar 2014 08:51:07 -0400 Received: from [10.120.1.33] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg500.nifty.com with ESMTP id s29CosEg021778 for <16966@debbugs.gnu.org>; Sun, 9 Mar 2014 21:50:55 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Sun, 09 Mar 2014 21:50:54 +0900 From: Norihiro Tanaka To: 16966@debbugs.gnu.org Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <20140308144141.021A.27F6AC2D@kcn.ne.jp> References: <20140308144141.021A.27F6AC2D@kcn.ne.jp> Message-Id: <20140309215053.3E94.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_531AC1AC000000000224_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.64.06 [ja] X-Spam-Score: 5.0 (+++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Sorry, the patch still had bugs. I fixed them. I confirmed that the patched version passed all regression tests. [...] Content analysis details: (5.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record 3.8 OBFU_TEXT_ATTACH BODY: Text attachment with non-text MIME type X-Debbugs-Envelope-To: 16966 --------_531AC1AC000000000224_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Sorry, the patch still had bugs. I fixed them. I confirmed that the patched version passed all regression tests. --------_531AC1AC000000000224_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSA1ZDZlZTA1NDkwNjYxZWI1ZjFmY2Y2ZThkZDJhNzE2Mjg0NjM2MTdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBTdW4sIDkgTWFyIDIwMTQgMjE6MjU6MjMgKzA5MDAKU3ViamVjdDogW1BBVENIXSBncmVw OiBvcHRpbWl6YXRpb24gd2l0aCB0aGUgc3VwZXJzZXQgb2YgREZBLgoKQnkgdGhlIHBhdGNoLCBE RkEgbWF5IGJlIGFsc28gYnVpbGQgdGhlIHN1cGVyc2V0IG9mIGl0c2VsZiwgd2hpY2ggaXMgdGhl CnNhbWUgYXMgdGhlIGl0c2VsZiBleHBlY3QgQU5ZQ0hBUiwgTUJDU0VUIGFuZCBCQUNLUkVGIGFy ZSByZXBsYWNlZCBDU0VUCnNldCBmdWxsIGJpdHMgZm9sbG93ZWQgYnkgU1RBUiwgYW5kIG1iX2N1 cl9tYXggaXMgZXF1YWwgdG8gMS4KCkZvciBleGFtcGxlLCBpZiBnaXZlbiB0aGUgcGF0dGVybiBg YVwoYlwpY1wxJywgdGhlIHRva2VucyBvZiBvcmlnaW5hbApERkEgYW5kIGl0cyBzdXBlcnNldCBp cyBiZWxvdy4KCiAgb3JpZ2luYWw6IGEgYiBDQVQgYyBDQVQgQkFDS1JFRiBDQVQKCiAgc3VwZXJz ZXQ6IGEgYiBDQVQgYyBDQVQgQ1NFVCBTVEFSIENBVAogICAgICAgICAgICAoRnVsbCBiaXRzIGFy ZSBzZXQgdG8gQ1NFVC4pCgpJZiBhIHN0cmluZyBkb2Vzbid0IG1hdGNoZXMgdGhlIHN1cGVyc2V0 IG9mIG9yaWdpbmFsIERGQSBmb3IgYSBwYXR0ZXJuLAp0aGUgc3RyaW5nIHdpbGwgYWxzbyBuZXZl ciBtYXRjaCBvcmlnaW5hbCBERkEuICBCeSB0aGUgd2F5LCBtYXRjaGluZwp3aXRoIHRoZSBzdXBl cnNldCBpcyB2ZXJ5IGZhc3QgYmVjYXVzZSBpdCBuZXZlciBoYXMgQU5ZQ0hBUiwgTUJDU0VUIGFu ZApCQUNLUkVGLCB3aGljaCBhcmUgdmVyeSBleHBlbnNpdmUsIGFuZCBpdHMgbWJfY3VyX21heCBp cyBhbHdheXMgZXF1YWwKdG8gMS4gIFRoZXJlZm9yZSwgdGhlIHBlcmZvbWFuY2UgZm9yIG1hdGNo aW5nIHdpdGggREZBIG1heSBiZQpkcmFtYXRpY2FsbHkgaW1wcm92ZWQgd2l0aG91dCBvdmVyaGVh ZCBieSB1c2luZyB0aGUgc3VwZXJzZXQuCgpJIHByZXBhcmUgZm9sbG93aW5nIHN0cmluZyB0byBt ZWFzdXJlIHRoZSBwZXJmb3JtYW5jZS4KCiAgICB5ZXMgampqampqampqampqampqampqampqampq ampqampqampqampqampqaiB8IGhlYWQgLTEwMDAwMDAwID4gawoKSSBydW4gdGhyZWUgdGVzdHMg d2l0aCB0aGlzIHBhdGNoIChiZXN0LW9mLTUgdHJpYWxzKToKCiAgICBlbnYgTENfQUxMPWphX0pQ LmV1Y0pQIHRpbWUgLXAgc3JjL2dyZXAgLWkgZm9vYmFyIGsKICAgICAgICByZWFsIDEuNzcgICAg ICAgdXNlciAxLjIzICAgICAgIHN5cyAwLjQ3CiAgICBlbnYgTENfQUxMPWVuX1VTLlVURi04IHRp bWUgLXAgc3JjL2dyZXAgLWkgJ2pbYS1jXWQnIGsKICAgICAgICByZWFsIDEuODYgICAgICAgdXNl ciAxLjM1ICAgICAgIHN5cyAwLjQ1CiAgICBlbnYgTENfQUxMPUMgdGltZSAtcCBzcmMvZ3JlcCAn XChqXClcMWQnIGsKICAgICAgICByZWFsIDEuOTIgICAgICAgdXNlciAxLjQwICAgICAgIHN5cyAw LjQ4CgpCYWNrIG91dCB0aGF0IGNvbW1pdCAodGVtcG9yYXJpbHkpLCByZWNvbXBpbGUsIGFuZCBy ZXJ1biB0aGUgZXhwZXJpbWVudDoKCiAgICBlbnYgTENfQUxMPWphX0pQLmV1Y0pQIHRpbWUgLXAg c3JjL2dyZXAgLWkgZm9vYmFyIGsKICAgICAgICByZWFsIDI3LjIxICAgICAgdXNlciAyMS4xNSAg ICAgIHN5cyA1LjM2CiAgICBlbnYgTENfQUxMPWVuX1VTLlVURi04IHRpbWUgLXAgc3JjL2dyZXAg LWkgJ2pbYS1jXWQnIGsKICAgICAgICByZWFsIDk2LjM1ICAgICAgdXNlciA0MjkuODAgICAgIHN5 cyA1Ny4zNwogICAgZW52IExDX0FMTD1DIHRpbWUgLXAgc3JjL2dyZXAgJ1woalwpXDFkJyBrCiAg ICAgICAgcmVhbCA1MDIuMzIgICAgIHVzZXIgNDI5LjgwICAgICBzeXMgNTcuMzcKCiogc3JjL2Rm YS5jIChzdHJ1Y3QgZGZhKSBOZXcgbWVtYmVyIGBzdXBlcnNldCcuCihkZmFoaW50KTogTmV3IGZ1 bmN0aW9uLgooZGZhb3B0aW1pemUpOiBJZiBzdWNjZWVkIGluIG9wdGltaXphdGlvbiBmb3IgVVRG LTggbG9jYWxlLCBkb24ndCB1c2UKdGhlIHN1cGVyc2V0LgooZGZhc3VwZXJzZXQpOiBOZXcgZnVu Y3Rpb24uCihkZmFjb21wKTogQWRkIGNhbGwgb2YgZGZhc3VwZXJzZXQgYW5kIGRmYWFuYWx5emUg ZnVuY3Rpb25zLgooZGZhZnJlZSk6IFJ1biBmcmVlIG9ubHkgd2hlbiB0aGUgdmFsdWUgb2YgdGhl IHBvaW50ZXIgaXNuJ3QgTlVMTC4KKGRmYWFsbG9jKTogU2V0IE5VTEwgdG8gbWVtYmVyIGBzdXBl cnNldCcgb2YgREZBIGNsZWFybHkuCiogc3JjL2RmYS5oOiBEZWZpbmUgcHJvdG90eXBlIGZvciBk ZmFoaW50IGZ1bmN0aW9uLgoqIGRmYXNlYXJjaC5jOiAoRUdleGVjdXRlKTogVXNlIGRmYWhpbnQu Ci0tLQogc3JjL2RmYS5jICAgICAgIHwgMTI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvZGZhLmggICAgICAgfCAgIDMgKysKIHNy Yy9kZmFzZWFyY2guYyB8ICAyOCArKysrKysrKystLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEzNyBp bnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGZhLmMgYi9z cmMvZGZhLmMKaW5kZXggNTkxMDI2OC4uY2UyYzk5OCAxMDA2NDQKLS0tIGEvc3JjL2RmYS5jCisr KyBiL3NyYy9kZmEuYwpAQCAtMzc3LDYgKzM3Nyw5IEBAIHN0cnVjdCBkZmEKICAgc2l6ZV90IG5t YmNzZXRzOwogICBzaXplX3QgbWJjc2V0c19hbGxvYzsKIAorICAvKiBGaWVsZHMgZmlsbGVkIGJ5 IHRoZSBzdXBlcnNldC4gICovCisgIHN0cnVjdCBkZmEgKnN1cGVyc2V0OyAgICAgICAgICAgICAv KiBIaW50IG9mIHRoZSBkZmEuICAqLworCiAgIC8qIEZpZWxkcyBmaWxsZWQgYnkgdGhlIHN0YXRl IGJ1aWxkZXIuICAqLwogICBkZmFfc3RhdGUgKnN0YXRlczsgICAgICAgICAgICAvKiBTdGF0ZXMg b2YgdGhlIGRmYS4gICovCiAgIHN0YXRlX251bSBzaW5kZXg7ICAgICAgICAgICAgIC8qIEluZGV4 IGZvciBhZGRpbmcgbmV3IHN0YXRlcy4gICovCkBAIC0zNTE2LDYgKzM1MTksMTQgQEAgZGZhZXhl YyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICB9CiB9 CiAKK2NoYXIgY29uc3QgKgorZGZhaGludCAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVn aW4sIGNoYXIgKmVuZCwgc2l6ZV90ICpjb3VudCkKK3sKKyAgaWYgKGQtPnN1cGVyc2V0ID09IE5V TEwpCisgICAgcmV0dXJuIGJlZ2luOworICByZXR1cm4gZGZhZXhlYyAoZC0+c3VwZXJzZXQsIGJl Z2luLCBlbmQsIDEsIGNvdW50LCBOVUxMKTsKK30KKwogc3RhdGljIHZvaWQKIGZyZWVfbWJkYXRh IChzdHJ1Y3QgZGZhICpkKQogewpAQCAtMzU5Niw2ICszNjA3LDc2IEBAIGRmYW9wdGltaXplIChz dHJ1Y3QgZGZhICpkKQogCiAgIGZyZWVfbWJkYXRhIChkKTsKICAgZC0+bWJfY3VyX21heCA9IDE7 CisKKyAgaWYgKGQtPnN1cGVyc2V0ICE9IE5VTEwpCisgICAgeworICAgICAgZGZhZnJlZSAoZC0+ c3VwZXJzZXQpOworICAgICAgZC0+c3VwZXJzZXQgPSBOVUxMOworICAgIH0KK30KKworc3RhdGlj IHZvaWQKK2RmYXN1cGVyc2V0IChzdHJ1Y3QgZGZhICpkKQoreworICBzaXplX3QgaSwgajsKKyAg Y2hhcmNsYXNzIGNjbDsKKyAgYm9vbCBoYXZlX2FjaGFyID0gZmFsc2U7CisgIGJvb2wgaGF2ZV9u Y2hhciA9IGZhbHNlOworCisgIGQtPnN1cGVyc2V0ID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qg ZGZhKSk7CisgIGRmYSA9IGQtPnN1cGVyc2V0OworCisgICpkLT5zdXBlcnNldCA9ICpkOworICBk LT5zdXBlcnNldC0+bXVsdGlieXRlX3Byb3AgPSBOVUxMOworICBkLT5zdXBlcnNldC0+bWJjc2V0 cyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5zdXBlcnNldCA9IE5VTEw7CisgIGQtPnN1cGVyc2V0 LT5zdGF0ZXMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+Zm9sbG93cyA9IE5VTEw7CisgIGQtPnN1 cGVyc2V0LT50cmFucyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5yZWFsdHJhbnMgPSBOVUxMOwor ICBkLT5zdXBlcnNldC0+ZmFpbHMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+c3VjY2VzcyA9IE5V TEw7CisgIGQtPnN1cGVyc2V0LT5uZXdsaW5lcyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5tdXN0 cyA9IE5VTEw7CisKKyAgTUFMTE9DIChkLT5zdXBlcnNldC0+Y2hhcmNsYXNzZXMsIGQtPnN1cGVy c2V0LT5jYWxsb2MpOworICBmb3IgKGkgPSAwOyBpIDwgZC0+Y2luZGV4OyBpKyspCisgICAgY29w eXNldCAoZC0+Y2hhcmNsYXNzZXNbaV0sIGQtPnN1cGVyc2V0LT5jaGFyY2xhc3Nlc1tpXSk7CisK KyAgZC0+c3VwZXJzZXQtPnRhbGxvYyA9IGQtPnRpbmRleCAqIDI7CisgIE1BTExPQyAoZC0+c3Vw ZXJzZXQtPnRva2VucywgZC0+c3VwZXJzZXQtPnRhbGxvYyk7CisKKyAgZm9yIChpID0gaiA9IDA7 IGkgPCBkLT50aW5kZXg7IGkrKykKKyAgICB7CisgICAgICBzd2l0Y2ggKGQtPnRva2Vuc1tpXSkK KyAgICAgICAgeworICAgICAgICBjYXNlIEFOWUNIQVI6CisgICAgICAgIGNhc2UgTUJDU0VUOgor ICAgICAgICBjYXNlIEJBQ0tSRUY6CisgICAgICAgICAgemVyb3NldCAoY2NsKTsKKyAgICAgICAg ICBub3RzZXQgKGNjbCk7CisgICAgICAgICAgZC0+c3VwZXJzZXQtPnRva2Vuc1tqKytdID0gQ1NF VCArIGNoYXJjbGFzc19pbmRleCAoY2NsKTsKKyAgICAgICAgICBkLT5zdXBlcnNldC0+dG9rZW5z W2orK10gPSBTVEFSOworICAgICAgICAgIGlmIChkLT50b2tlbnNbaSArIDFdID09IFFNQVJLIHx8 IGQtPnRva2Vuc1tpICsgMV0gPT0gU1RBUiB8fCBkLT50b2tlbnNbaSArIDFdID09IFBMVVMpCisg ICAgICAgICAgICBpKys7CisgICAgICAgICAgaGF2ZV9hY2hhciA9IHRydWU7CisgICAgICAgICAg YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZC0+c3VwZXJzZXQtPnRva2Vuc1tq KytdID0gZC0+dG9rZW5zW2ldOworICAgICAgICAgIGhhdmVfbmNoYXIgPSB0cnVlOworICAgICAg ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgIGlmIChkLT5tYl9jdXJfbWF4ID09IDEg JiYgKCFoYXZlX2FjaGFyIHx8ICFoYXZlX25jaGFyKSkKKyAgICB7CisgICAgICBkZmFmcmVlIChk LT5zdXBlcnNldCk7CisgICAgICBkLT5zdXBlcnNldCA9IE5VTEw7CisgICAgICByZXR1cm47Cisg ICAgfQorCisgIGQtPnN1cGVyc2V0LT50aW5kZXggPSBqOworICBkLT5zdXBlcnNldC0+bWJfY3Vy X21heCA9IDE7CiB9CiAKIC8qIFBhcnNlIGFuZCBhbmFseXplIGEgc2luZ2xlIHN0cmluZyBvZiB0 aGUgZ2l2ZW4gbGVuZ3RoLiAgKi8KQEAgLTM2MDUsOCArMzY4NiwxMSBAQCBkZmFjb21wIChjaGFy IGNvbnN0ICpzLCBzaXplX3QgbGVuLCBzdHJ1Y3QgZGZhICpkLCBpbnQgc2VhcmNoZmxhZykKICAg ZGZhaW5pdCAoZCk7CiAgIGRmYXBhcnNlIChzLCBsZW4sIGQpOwogICBkZmFtdXN0IChkKTsKKyAg ZGZhc3VwZXJzZXQgKGQpOwogICBkZmFvcHRpbWl6ZSAoZCk7CiAgIGRmYWFuYWx5emUgKGQsIHNl YXJjaGZsYWcpOworICBpZiAoZC0+c3VwZXJzZXQgIT0gTlVMTCkKKyAgICBkZmFhbmFseXplIChk LT5zdXBlcnNldCwgc2VhcmNoZmxhZyk7CiB9CiAKIC8qIEZyZWUgdGhlIHN0b3JhZ2UgaGVsZCBi eSB0aGUgY29tcG9uZW50cyBvZiBhIGRmYS4gICovCkBAIC0zNjIyLDMxICszNzA2LDQ3IEBAIGRm YWZyZWUgKHN0cnVjdCBkZmEgKmQpCiAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkKICAgICBmcmVl X21iZGF0YSAoZCk7CiAKLSAgZm9yIChpID0gMDsgaSA8IGQtPnNpbmRleDsgKytpKQorICBpZiAo ZC0+c3RhdGVzICE9IE5VTEwpCisgICAgeworICAgICAgZm9yIChpID0gMDsgaSA8IGQtPnNpbmRl eDsgKytpKQorICAgICAgICB7CisgICAgICAgICAgZnJlZSAoZC0+c3RhdGVzW2ldLmVsZW1zLmVs ZW1zKTsKKyAgICAgICAgICBpZiAoTUJTX1NVUFBPUlQpCisgICAgICAgICAgICBmcmVlIChkLT5z dGF0ZXNbaV0ubWJwcy5lbGVtcyk7CisgICAgICAgIH0KKyAgICAgIGZyZWUgKGQtPnN0YXRlcyk7 CisgICAgfQorICBpZiAoZC0+Zm9sbG93cyAhPSBOVUxMKQogICAgIHsKLSAgICAgIGZyZWUgKGQt PnN0YXRlc1tpXS5lbGVtcy5lbGVtcyk7Ci0gICAgICBpZiAoTUJTX1NVUFBPUlQpCi0gICAgICAg IGZyZWUgKGQtPnN0YXRlc1tpXS5tYnBzLmVsZW1zKTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBk LT50aW5kZXg7ICsraSkKKyAgICAgICAgZnJlZSAoZC0+Zm9sbG93c1tpXS5lbGVtcyk7CisgICAg ICBmcmVlIChkLT5mb2xsb3dzKTsKICAgICB9Ci0gIGZyZWUgKGQtPnN0YXRlcyk7Ci0gIGZvciAo aSA9IDA7IGkgPCBkLT50aW5kZXg7ICsraSkKLSAgICBmcmVlIChkLT5mb2xsb3dzW2ldLmVsZW1z KTsKLSAgZnJlZSAoZC0+Zm9sbG93cyk7Ci0gIGZvciAoaSA9IDA7IGkgPCBkLT50cmFsbG9jOyAr K2kpCisgIGlmIChkLT50cmFucyAhPSBOVUxMKQogICAgIHsKLSAgICAgIGZyZWUgKGQtPnRyYW5z W2ldKTsKLSAgICAgIGZyZWUgKGQtPmZhaWxzW2ldKTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBk LT50cmFsbG9jOyArK2kpCisgICAgICAgIGZyZWUgKGQtPnRyYW5zW2ldKTsKICAgICB9CisgIGlm IChkLT5mYWlscyAhPSBOVUxMKQorICAgIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBkLT50cmFs bG9jOyArK2kpCisgICAgICAgIGZyZWUgKGQtPmZhaWxzW2ldKTsKKyAgICB9CisKICAgZnJlZSAo ZC0+cmVhbHRyYW5zKTsKICAgZnJlZSAoZC0+ZmFpbHMpOwogICBmcmVlIChkLT5uZXdsaW5lcyk7 CiAgIGZyZWUgKGQtPnN1Y2Nlc3MpOworCiAgIGZvciAoZG0gPSBkLT5tdXN0czsgZG07IGRtID0g bmRtKQogICAgIHsKICAgICAgIG5kbSA9IGRtLT5uZXh0OwogICAgICAgZnJlZSAoZG0tPm11c3Qp OwogICAgICAgZnJlZSAoZG0pOwogICAgIH0KKworICBpZiAoZC0+c3VwZXJzZXQgIT0gTlVMTCkK KyAgICBkZmFmcmVlIChkLT5zdXBlcnNldCk7CiB9CiAKIC8qIEhhdmluZyBmb3VuZCB0aGUgcG9z dGZpeCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uLApAQCAtNDE1NCw3 ICs0MjU0LDkgQEAgZG9uZToKIHN0cnVjdCBkZmEgKgogZGZhYWxsb2MgKHZvaWQpCiB7Ci0gIHJl dHVybiB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkZmEpKTsKKyAgc3RydWN0IGRmYSAqZCA9IHht YWxsb2MgKHNpemVvZiAoc3RydWN0IGRmYSkpOworICBkLT5zdXBlcnNldCA9IE5VTEw7CisgIHJl dHVybiBkOwogfQogCiBzdHJ1Y3QgZGZhbXVzdCAqX0dMX0FUVFJJQlVURV9QVVJFCmRpZmYgLS1n aXQgYS9zcmMvZGZhLmggYi9zcmMvZGZhLmgKaW5kZXggYWQyYjg1NC4uNGRlZDI1MyAxMDA2NDQK LS0tIGEvc3JjL2RmYS5oCisrKyBiL3NyYy9kZmEuaApAQCAtNjcsNiArNjcsOSBAQCBleHRlcm4g dm9pZCBkZmFjb21wIChjaGFyIGNvbnN0ICosIHNpemVfdCwgc3RydWN0IGRmYSAqLCBpbnQpOwog ICAgdG8gZGVjaWRlIHdoZXRoZXIgdG8gZmFsbCBiYWNrIG9uIGEgYmFja3RyYWNraW5nIG1hdGNo ZXIuICovCiBleHRlcm4gY2hhciAqZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAq YmVnaW4sIGNoYXIgKmVuZCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3bGluZSwgc2l6 ZV90ICpjb3VudCwgaW50ICpiYWNrcmVmKTsKK2V4dGVybiBjaGFyIGNvbnN0ICpkZmFoaW50IChz dHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdpbiwgY2hhciAqZW5kLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCAqY291bnQpOworCiAKIC8qIEZyZWUgdGhlIHN0b3JhZ2Ug aGVsZCBieSB0aGUgY29tcG9uZW50cyBvZiBhIHN0cnVjdCBkZmEuICovCiBleHRlcm4gdm9pZCBk ZmFmcmVlIChzdHJ1Y3QgZGZhICopOwpkaWZmIC0tZ2l0IGEvc3JjL2RmYXNlYXJjaC5jIGIvc3Jj L2RmYXNlYXJjaC5jCmluZGV4IDBiNTY5NjAuLjc0NDc5ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9kZmFz ZWFyY2guYworKysgYi9zcmMvZGZhc2VhcmNoLmMKQEAgLTI0OCwyNiArMjQ4LDM4IEBAIEVHZXhl Y3V0ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3c20uc2l6ZVswXSkpCiAg ICAgICAgICAgICAgICAgICAgIGdvdG8gc3VjY2VzczsKICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIGlmIChkZmFoaW50IChkZmEsIGJlZywgKGNoYXIgKikgZW5kLCBOVUxMKSA9PSBO VUxMKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICBpZiAoZGZhZXhl YyAoZGZhLCBiZWcsIChjaGFyICopIGVuZCwgMCwgTlVMTCwgJmJhY2tyZWYpID09IE5VTEwpCiAg ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgewogICAgICAgICAgICAgICAvKiBObyBnb29kIGZpeGVkIHN0cmluZ3M7IHN0 YXJ0IHdpdGggREZBLiAqLwotICAgICAgICAgICAgICBjaGFyIGNvbnN0ICpuZXh0X2JlZyA9IGRm YWV4ZWMgKGRmYSwgYmVnLCAoY2hhciAqKSBidWZsaW0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgJmJhY2tyZWYpOwotICAgICAgICAgICAg ICAvKiBJZiB0aGVyZSdzIG5vIG1hdGNoLCBvciBpZiB3ZSd2ZSBtYXRjaGVkIHRoZSBzZW50aW5l bCwKLSAgICAgICAgICAgICAgICAgd2UncmUgZG9uZS4gICovCi0gICAgICAgICAgICAgIGlmIChu ZXh0X2JlZyA9PSBOVUxMIHx8IG5leHRfYmVnID09IGJ1ZmxpbSkKKyAgICAgICAgICAgICAgc2l6 ZV90IGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgY2hhciBjb25zdCAqbmV4dF9iZWcgPSBkZmFo aW50IChkZmEsIGJlZywgKGNoYXIgKikgYnVmbGltLCAmY291bnQpOworICAgICAgICAgICAgICBp ZiAobmV4dF9iZWcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgLyogTmFycm93IGRvd24gdG8gdGhlIGxpbmUgd2UndmUgZm91bmQuICovCiAgICAgICAgICAg ICAgIGJlZyA9IG5leHRfYmVnOwotICAgICAgICAgICAgICBpZiAoKGVuZCA9IG1lbWNocihiZWcs IGVvbCwgYnVmbGltIC0gYmVnKSkgIT0gTlVMTCkKKyAgICAgICAgICAgICAgd2hpbGUgKGJlZyA+ IGJ1ZiAmJiBiZWdbLTFdICE9IGVvbCkKKyAgICAgICAgICAgICAgICAtLWJlZzsKKyAgICAgICAg ICAgICAgaWYgKGNvdW50ID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAvKiBkZmFoaW50KCkgbWF5IG1hdGNoIGluIG11bHRpcGxlIGxpbmVzLiAgSWYgdGhhdCBpcwor ICAgICAgICAgICAgICAgICAgICAgdGhlIGNhc2UsIHRyeSB0byBtYXRjaCBpbiBvbmUgbGluZS4g ICovCisgICAgICAgICAgICAgICAgICBlbmQgPSBiZWc7CisgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmICgoZW5kID0gbWVtY2hy KG5leHRfYmVnLCBlb2wsIGJ1ZmxpbSAtIGJlZykpICE9IE5VTEwpCiAgICAgICAgICAgICAgICAg ZW5kKys7CiAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbmQgPSBidWZsaW07 Ci0gICAgICAgICAgICAgIHdoaWxlIChiZWcgPiBidWYgJiYgYmVnWy0xXSAhPSBlb2wpCi0gICAg ICAgICAgICAgICAgLS1iZWc7CisgICAgICAgICAgICAgIG5leHRfYmVnID0gZGZhZXhlYyAoZGZh LCBiZWcsIChjaGFyICopIGVuZCwgMCwgTlVMTCwgJmJhY2tyZWYpOworICAgICAgICAgICAgICAv KiBJZiB0aGVyZSdzIG5vIG1hdGNoLCBvciBpZiB3ZSd2ZSBtYXRjaGVkIHRoZSBzZW50aW5lbCwK KyAgICAgICAgICAgICAgICAgd2UncmUgZG9uZS4gICovCisgICAgICAgICAgICAgIGlmIChuZXh0 X2JlZyA9PSBOVUxMIHx8IG5leHRfYmVnID09IGVuZCkKKyAgICAgICAgICAgICAgICBjb250aW51 ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAvKiBTdWNjZXNzZnVsLCBubyBiYWNrcmVmZXJl bmNlcyBlbmNvdW50ZXJlZCEgKi8KICAgICAgICAgICBpZiAoIWJhY2tyZWYpCi0tIAoxLjguNS4y Cgo= --------_531AC1AC000000000224_MULTIPART_MIXED_-- From ADS18022@nifty.com Sun Mar 09 11:33:17 2014 Received: (at 16966) by debbugs.gnu.org; 9 Mar 2014 23:51:09 +0000 Return-path: Envelope-to: 16966@debbugs.gnu.org Delivery-date: Sun, 09 Mar 2014 11:33:17 -0400 Received: from pbsg500.nifty.com ([202.248.238.70]:39830) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WMfj1-0005R6-02 for 16966@debbugs.gnu.org; Sun, 09 Mar 2014 11:33:17 -0400 Received: from [10.120.1.33] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg500.nifty.com with ESMTP id s29FX81R000374 for <16966@debbugs.gnu.org>; Mon, 10 Mar 2014 00:33:08 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Mon, 10 Mar 2014 00:33:06 +0900 From: Norihiro Tanaka To: 16966@debbugs.gnu.org Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <20140308144141.021A.27F6AC2D@kcn.ne.jp> References: <20140308144141.021A.27F6AC2D@kcn.ne.jp> Message-Id: <20140310003306.3EB5.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_531AC1AC000000000224_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.64.06 [ja] X-Spam-Score: 5.0 (+++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Sorry, the patch still had bugs. I fixed them. I confirmed that the patched version passed all regression tests. [...] Content analysis details: (5.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 SPF_PASS SPF: sender matches SPF record 3.8 OBFU_TEXT_ATTACH BODY: Text attachment with non-text MIME type X-Debbugs-Envelope-To: 16966 --------_531AC1AC000000000224_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Sorry, the patch still had bugs. I fixed them. I confirmed that the patched version passed all regression tests. --------_531AC1AC000000000224_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSA1ZDZlZTA1NDkwNjYxZWI1ZjFmY2Y2ZThkZDJhNzE2Mjg0NjM2MTdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBTdW4sIDkgTWFyIDIwMTQgMjE6MjU6MjMgKzA5MDAKU3ViamVjdDogW1BBVENIXSBncmVw OiBvcHRpbWl6YXRpb24gd2l0aCB0aGUgc3VwZXJzZXQgb2YgREZBLgoKQnkgdGhlIHBhdGNoLCBE RkEgbWF5IGJlIGFsc28gYnVpbGQgdGhlIHN1cGVyc2V0IG9mIGl0c2VsZiwgd2hpY2ggaXMgdGhl CnNhbWUgYXMgdGhlIGl0c2VsZiBleHBlY3QgQU5ZQ0hBUiwgTUJDU0VUIGFuZCBCQUNLUkVGIGFy ZSByZXBsYWNlZCBDU0VUCnNldCBmdWxsIGJpdHMgZm9sbG93ZWQgYnkgU1RBUiwgYW5kIG1iX2N1 cl9tYXggaXMgZXF1YWwgdG8gMS4KCkZvciBleGFtcGxlLCBpZiBnaXZlbiB0aGUgcGF0dGVybiBg YVwoYlwpY1wxJywgdGhlIHRva2VucyBvZiBvcmlnaW5hbApERkEgYW5kIGl0cyBzdXBlcnNldCBp cyBiZWxvdy4KCiAgb3JpZ2luYWw6IGEgYiBDQVQgYyBDQVQgQkFDS1JFRiBDQVQKCiAgc3VwZXJz ZXQ6IGEgYiBDQVQgYyBDQVQgQ1NFVCBTVEFSIENBVAogICAgICAgICAgICAoRnVsbCBiaXRzIGFy ZSBzZXQgdG8gQ1NFVC4pCgpJZiBhIHN0cmluZyBkb2Vzbid0IG1hdGNoZXMgdGhlIHN1cGVyc2V0 IG9mIG9yaWdpbmFsIERGQSBmb3IgYSBwYXR0ZXJuLAp0aGUgc3RyaW5nIHdpbGwgYWxzbyBuZXZl ciBtYXRjaCBvcmlnaW5hbCBERkEuICBCeSB0aGUgd2F5LCBtYXRjaGluZwp3aXRoIHRoZSBzdXBl cnNldCBpcyB2ZXJ5IGZhc3QgYmVjYXVzZSBpdCBuZXZlciBoYXMgQU5ZQ0hBUiwgTUJDU0VUIGFu ZApCQUNLUkVGLCB3aGljaCBhcmUgdmVyeSBleHBlbnNpdmUsIGFuZCBpdHMgbWJfY3VyX21heCBp cyBhbHdheXMgZXF1YWwKdG8gMS4gIFRoZXJlZm9yZSwgdGhlIHBlcmZvbWFuY2UgZm9yIG1hdGNo aW5nIHdpdGggREZBIG1heSBiZQpkcmFtYXRpY2FsbHkgaW1wcm92ZWQgd2l0aG91dCBvdmVyaGVh ZCBieSB1c2luZyB0aGUgc3VwZXJzZXQuCgpJIHByZXBhcmUgZm9sbG93aW5nIHN0cmluZyB0byBt ZWFzdXJlIHRoZSBwZXJmb3JtYW5jZS4KCiAgICB5ZXMgampqampqampqampqampqampqampqampq ampqampqampqampqampqaiB8IGhlYWQgLTEwMDAwMDAwID4gawoKSSBydW4gdGhyZWUgdGVzdHMg d2l0aCB0aGlzIHBhdGNoIChiZXN0LW9mLTUgdHJpYWxzKToKCiAgICBlbnYgTENfQUxMPWphX0pQ LmV1Y0pQIHRpbWUgLXAgc3JjL2dyZXAgLWkgZm9vYmFyIGsKICAgICAgICByZWFsIDEuNzcgICAg ICAgdXNlciAxLjIzICAgICAgIHN5cyAwLjQ3CiAgICBlbnYgTENfQUxMPWVuX1VTLlVURi04IHRp bWUgLXAgc3JjL2dyZXAgLWkgJ2pbYS1jXWQnIGsKICAgICAgICByZWFsIDEuODYgICAgICAgdXNl ciAxLjM1ICAgICAgIHN5cyAwLjQ1CiAgICBlbnYgTENfQUxMPUMgdGltZSAtcCBzcmMvZ3JlcCAn XChqXClcMWQnIGsKICAgICAgICByZWFsIDEuOTIgICAgICAgdXNlciAxLjQwICAgICAgIHN5cyAw LjQ4CgpCYWNrIG91dCB0aGF0IGNvbW1pdCAodGVtcG9yYXJpbHkpLCByZWNvbXBpbGUsIGFuZCBy ZXJ1biB0aGUgZXhwZXJpbWVudDoKCiAgICBlbnYgTENfQUxMPWphX0pQLmV1Y0pQIHRpbWUgLXAg c3JjL2dyZXAgLWkgZm9vYmFyIGsKICAgICAgICByZWFsIDI3LjIxICAgICAgdXNlciAyMS4xNSAg ICAgIHN5cyA1LjM2CiAgICBlbnYgTENfQUxMPWVuX1VTLlVURi04IHRpbWUgLXAgc3JjL2dyZXAg LWkgJ2pbYS1jXWQnIGsKICAgICAgICByZWFsIDk2LjM1ICAgICAgdXNlciA0MjkuODAgICAgIHN5 cyA1Ny4zNwogICAgZW52IExDX0FMTD1DIHRpbWUgLXAgc3JjL2dyZXAgJ1woalwpXDFkJyBrCiAg ICAgICAgcmVhbCA1MDIuMzIgICAgIHVzZXIgNDI5LjgwICAgICBzeXMgNTcuMzcKCiogc3JjL2Rm YS5jIChzdHJ1Y3QgZGZhKSBOZXcgbWVtYmVyIGBzdXBlcnNldCcuCihkZmFoaW50KTogTmV3IGZ1 bmN0aW9uLgooZGZhb3B0aW1pemUpOiBJZiBzdWNjZWVkIGluIG9wdGltaXphdGlvbiBmb3IgVVRG LTggbG9jYWxlLCBkb24ndCB1c2UKdGhlIHN1cGVyc2V0LgooZGZhc3VwZXJzZXQpOiBOZXcgZnVu Y3Rpb24uCihkZmFjb21wKTogQWRkIGNhbGwgb2YgZGZhc3VwZXJzZXQgYW5kIGRmYWFuYWx5emUg ZnVuY3Rpb25zLgooZGZhZnJlZSk6IFJ1biBmcmVlIG9ubHkgd2hlbiB0aGUgdmFsdWUgb2YgdGhl IHBvaW50ZXIgaXNuJ3QgTlVMTC4KKGRmYWFsbG9jKTogU2V0IE5VTEwgdG8gbWVtYmVyIGBzdXBl cnNldCcgb2YgREZBIGNsZWFybHkuCiogc3JjL2RmYS5oOiBEZWZpbmUgcHJvdG90eXBlIGZvciBk ZmFoaW50IGZ1bmN0aW9uLgoqIGRmYXNlYXJjaC5jOiAoRUdleGVjdXRlKTogVXNlIGRmYWhpbnQu Ci0tLQogc3JjL2RmYS5jICAgICAgIHwgMTI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvZGZhLmggICAgICAgfCAgIDMgKysKIHNy Yy9kZmFzZWFyY2guYyB8ICAyOCArKysrKysrKystLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEzNyBp bnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGZhLmMgYi9z cmMvZGZhLmMKaW5kZXggNTkxMDI2OC4uY2UyYzk5OCAxMDA2NDQKLS0tIGEvc3JjL2RmYS5jCisr KyBiL3NyYy9kZmEuYwpAQCAtMzc3LDYgKzM3Nyw5IEBAIHN0cnVjdCBkZmEKICAgc2l6ZV90IG5t YmNzZXRzOwogICBzaXplX3QgbWJjc2V0c19hbGxvYzsKIAorICAvKiBGaWVsZHMgZmlsbGVkIGJ5 IHRoZSBzdXBlcnNldC4gICovCisgIHN0cnVjdCBkZmEgKnN1cGVyc2V0OyAgICAgICAgICAgICAv KiBIaW50IG9mIHRoZSBkZmEuICAqLworCiAgIC8qIEZpZWxkcyBmaWxsZWQgYnkgdGhlIHN0YXRl IGJ1aWxkZXIuICAqLwogICBkZmFfc3RhdGUgKnN0YXRlczsgICAgICAgICAgICAvKiBTdGF0ZXMg b2YgdGhlIGRmYS4gICovCiAgIHN0YXRlX251bSBzaW5kZXg7ICAgICAgICAgICAgIC8qIEluZGV4 IGZvciBhZGRpbmcgbmV3IHN0YXRlcy4gICovCkBAIC0zNTE2LDYgKzM1MTksMTQgQEAgZGZhZXhl YyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICB9CiB9 CiAKK2NoYXIgY29uc3QgKgorZGZhaGludCAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVn aW4sIGNoYXIgKmVuZCwgc2l6ZV90ICpjb3VudCkKK3sKKyAgaWYgKGQtPnN1cGVyc2V0ID09IE5V TEwpCisgICAgcmV0dXJuIGJlZ2luOworICByZXR1cm4gZGZhZXhlYyAoZC0+c3VwZXJzZXQsIGJl Z2luLCBlbmQsIDEsIGNvdW50LCBOVUxMKTsKK30KKwogc3RhdGljIHZvaWQKIGZyZWVfbWJkYXRh IChzdHJ1Y3QgZGZhICpkKQogewpAQCAtMzU5Niw2ICszNjA3LDc2IEBAIGRmYW9wdGltaXplIChz dHJ1Y3QgZGZhICpkKQogCiAgIGZyZWVfbWJkYXRhIChkKTsKICAgZC0+bWJfY3VyX21heCA9IDE7 CisKKyAgaWYgKGQtPnN1cGVyc2V0ICE9IE5VTEwpCisgICAgeworICAgICAgZGZhZnJlZSAoZC0+ c3VwZXJzZXQpOworICAgICAgZC0+c3VwZXJzZXQgPSBOVUxMOworICAgIH0KK30KKworc3RhdGlj IHZvaWQKK2RmYXN1cGVyc2V0IChzdHJ1Y3QgZGZhICpkKQoreworICBzaXplX3QgaSwgajsKKyAg Y2hhcmNsYXNzIGNjbDsKKyAgYm9vbCBoYXZlX2FjaGFyID0gZmFsc2U7CisgIGJvb2wgaGF2ZV9u Y2hhciA9IGZhbHNlOworCisgIGQtPnN1cGVyc2V0ID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qg ZGZhKSk7CisgIGRmYSA9IGQtPnN1cGVyc2V0OworCisgICpkLT5zdXBlcnNldCA9ICpkOworICBk LT5zdXBlcnNldC0+bXVsdGlieXRlX3Byb3AgPSBOVUxMOworICBkLT5zdXBlcnNldC0+bWJjc2V0 cyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5zdXBlcnNldCA9IE5VTEw7CisgIGQtPnN1cGVyc2V0 LT5zdGF0ZXMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+Zm9sbG93cyA9IE5VTEw7CisgIGQtPnN1 cGVyc2V0LT50cmFucyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5yZWFsdHJhbnMgPSBOVUxMOwor ICBkLT5zdXBlcnNldC0+ZmFpbHMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+c3VjY2VzcyA9IE5V TEw7CisgIGQtPnN1cGVyc2V0LT5uZXdsaW5lcyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5tdXN0 cyA9IE5VTEw7CisKKyAgTUFMTE9DIChkLT5zdXBlcnNldC0+Y2hhcmNsYXNzZXMsIGQtPnN1cGVy c2V0LT5jYWxsb2MpOworICBmb3IgKGkgPSAwOyBpIDwgZC0+Y2luZGV4OyBpKyspCisgICAgY29w eXNldCAoZC0+Y2hhcmNsYXNzZXNbaV0sIGQtPnN1cGVyc2V0LT5jaGFyY2xhc3Nlc1tpXSk7CisK KyAgZC0+c3VwZXJzZXQtPnRhbGxvYyA9IGQtPnRpbmRleCAqIDI7CisgIE1BTExPQyAoZC0+c3Vw ZXJzZXQtPnRva2VucywgZC0+c3VwZXJzZXQtPnRhbGxvYyk7CisKKyAgZm9yIChpID0gaiA9IDA7 IGkgPCBkLT50aW5kZXg7IGkrKykKKyAgICB7CisgICAgICBzd2l0Y2ggKGQtPnRva2Vuc1tpXSkK KyAgICAgICAgeworICAgICAgICBjYXNlIEFOWUNIQVI6CisgICAgICAgIGNhc2UgTUJDU0VUOgor ICAgICAgICBjYXNlIEJBQ0tSRUY6CisgICAgICAgICAgemVyb3NldCAoY2NsKTsKKyAgICAgICAg ICBub3RzZXQgKGNjbCk7CisgICAgICAgICAgZC0+c3VwZXJzZXQtPnRva2Vuc1tqKytdID0gQ1NF VCArIGNoYXJjbGFzc19pbmRleCAoY2NsKTsKKyAgICAgICAgICBkLT5zdXBlcnNldC0+dG9rZW5z W2orK10gPSBTVEFSOworICAgICAgICAgIGlmIChkLT50b2tlbnNbaSArIDFdID09IFFNQVJLIHx8 IGQtPnRva2Vuc1tpICsgMV0gPT0gU1RBUiB8fCBkLT50b2tlbnNbaSArIDFdID09IFBMVVMpCisg ICAgICAgICAgICBpKys7CisgICAgICAgICAgaGF2ZV9hY2hhciA9IHRydWU7CisgICAgICAgICAg YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZC0+c3VwZXJzZXQtPnRva2Vuc1tq KytdID0gZC0+dG9rZW5zW2ldOworICAgICAgICAgIGhhdmVfbmNoYXIgPSB0cnVlOworICAgICAg ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgIGlmIChkLT5tYl9jdXJfbWF4ID09IDEg JiYgKCFoYXZlX2FjaGFyIHx8ICFoYXZlX25jaGFyKSkKKyAgICB7CisgICAgICBkZmFmcmVlIChk LT5zdXBlcnNldCk7CisgICAgICBkLT5zdXBlcnNldCA9IE5VTEw7CisgICAgICByZXR1cm47Cisg ICAgfQorCisgIGQtPnN1cGVyc2V0LT50aW5kZXggPSBqOworICBkLT5zdXBlcnNldC0+bWJfY3Vy X21heCA9IDE7CiB9CiAKIC8qIFBhcnNlIGFuZCBhbmFseXplIGEgc2luZ2xlIHN0cmluZyBvZiB0 aGUgZ2l2ZW4gbGVuZ3RoLiAgKi8KQEAgLTM2MDUsOCArMzY4NiwxMSBAQCBkZmFjb21wIChjaGFy IGNvbnN0ICpzLCBzaXplX3QgbGVuLCBzdHJ1Y3QgZGZhICpkLCBpbnQgc2VhcmNoZmxhZykKICAg ZGZhaW5pdCAoZCk7CiAgIGRmYXBhcnNlIChzLCBsZW4sIGQpOwogICBkZmFtdXN0IChkKTsKKyAg ZGZhc3VwZXJzZXQgKGQpOwogICBkZmFvcHRpbWl6ZSAoZCk7CiAgIGRmYWFuYWx5emUgKGQsIHNl YXJjaGZsYWcpOworICBpZiAoZC0+c3VwZXJzZXQgIT0gTlVMTCkKKyAgICBkZmFhbmFseXplIChk LT5zdXBlcnNldCwgc2VhcmNoZmxhZyk7CiB9CiAKIC8qIEZyZWUgdGhlIHN0b3JhZ2UgaGVsZCBi eSB0aGUgY29tcG9uZW50cyBvZiBhIGRmYS4gICovCkBAIC0zNjIyLDMxICszNzA2LDQ3IEBAIGRm YWZyZWUgKHN0cnVjdCBkZmEgKmQpCiAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkKICAgICBmcmVl X21iZGF0YSAoZCk7CiAKLSAgZm9yIChpID0gMDsgaSA8IGQtPnNpbmRleDsgKytpKQorICBpZiAo ZC0+c3RhdGVzICE9IE5VTEwpCisgICAgeworICAgICAgZm9yIChpID0gMDsgaSA8IGQtPnNpbmRl eDsgKytpKQorICAgICAgICB7CisgICAgICAgICAgZnJlZSAoZC0+c3RhdGVzW2ldLmVsZW1zLmVs ZW1zKTsKKyAgICAgICAgICBpZiAoTUJTX1NVUFBPUlQpCisgICAgICAgICAgICBmcmVlIChkLT5z dGF0ZXNbaV0ubWJwcy5lbGVtcyk7CisgICAgICAgIH0KKyAgICAgIGZyZWUgKGQtPnN0YXRlcyk7 CisgICAgfQorICBpZiAoZC0+Zm9sbG93cyAhPSBOVUxMKQogICAgIHsKLSAgICAgIGZyZWUgKGQt PnN0YXRlc1tpXS5lbGVtcy5lbGVtcyk7Ci0gICAgICBpZiAoTUJTX1NVUFBPUlQpCi0gICAgICAg IGZyZWUgKGQtPnN0YXRlc1tpXS5tYnBzLmVsZW1zKTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBk LT50aW5kZXg7ICsraSkKKyAgICAgICAgZnJlZSAoZC0+Zm9sbG93c1tpXS5lbGVtcyk7CisgICAg ICBmcmVlIChkLT5mb2xsb3dzKTsKICAgICB9Ci0gIGZyZWUgKGQtPnN0YXRlcyk7Ci0gIGZvciAo aSA9IDA7IGkgPCBkLT50aW5kZXg7ICsraSkKLSAgICBmcmVlIChkLT5mb2xsb3dzW2ldLmVsZW1z KTsKLSAgZnJlZSAoZC0+Zm9sbG93cyk7Ci0gIGZvciAoaSA9IDA7IGkgPCBkLT50cmFsbG9jOyAr K2kpCisgIGlmIChkLT50cmFucyAhPSBOVUxMKQogICAgIHsKLSAgICAgIGZyZWUgKGQtPnRyYW5z W2ldKTsKLSAgICAgIGZyZWUgKGQtPmZhaWxzW2ldKTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBk LT50cmFsbG9jOyArK2kpCisgICAgICAgIGZyZWUgKGQtPnRyYW5zW2ldKTsKICAgICB9CisgIGlm IChkLT5mYWlscyAhPSBOVUxMKQorICAgIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBkLT50cmFs bG9jOyArK2kpCisgICAgICAgIGZyZWUgKGQtPmZhaWxzW2ldKTsKKyAgICB9CisKICAgZnJlZSAo ZC0+cmVhbHRyYW5zKTsKICAgZnJlZSAoZC0+ZmFpbHMpOwogICBmcmVlIChkLT5uZXdsaW5lcyk7 CiAgIGZyZWUgKGQtPnN1Y2Nlc3MpOworCiAgIGZvciAoZG0gPSBkLT5tdXN0czsgZG07IGRtID0g bmRtKQogICAgIHsKICAgICAgIG5kbSA9IGRtLT5uZXh0OwogICAgICAgZnJlZSAoZG0tPm11c3Qp OwogICAgICAgZnJlZSAoZG0pOwogICAgIH0KKworICBpZiAoZC0+c3VwZXJzZXQgIT0gTlVMTCkK KyAgICBkZmFmcmVlIChkLT5zdXBlcnNldCk7CiB9CiAKIC8qIEhhdmluZyBmb3VuZCB0aGUgcG9z dGZpeCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uLApAQCAtNDE1NCw3 ICs0MjU0LDkgQEAgZG9uZToKIHN0cnVjdCBkZmEgKgogZGZhYWxsb2MgKHZvaWQpCiB7Ci0gIHJl dHVybiB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkZmEpKTsKKyAgc3RydWN0IGRmYSAqZCA9IHht YWxsb2MgKHNpemVvZiAoc3RydWN0IGRmYSkpOworICBkLT5zdXBlcnNldCA9IE5VTEw7CisgIHJl dHVybiBkOwogfQogCiBzdHJ1Y3QgZGZhbXVzdCAqX0dMX0FUVFJJQlVURV9QVVJFCmRpZmYgLS1n aXQgYS9zcmMvZGZhLmggYi9zcmMvZGZhLmgKaW5kZXggYWQyYjg1NC4uNGRlZDI1MyAxMDA2NDQK LS0tIGEvc3JjL2RmYS5oCisrKyBiL3NyYy9kZmEuaApAQCAtNjcsNiArNjcsOSBAQCBleHRlcm4g dm9pZCBkZmFjb21wIChjaGFyIGNvbnN0ICosIHNpemVfdCwgc3RydWN0IGRmYSAqLCBpbnQpOwog ICAgdG8gZGVjaWRlIHdoZXRoZXIgdG8gZmFsbCBiYWNrIG9uIGEgYmFja3RyYWNraW5nIG1hdGNo ZXIuICovCiBleHRlcm4gY2hhciAqZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAq YmVnaW4sIGNoYXIgKmVuZCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3bGluZSwgc2l6 ZV90ICpjb3VudCwgaW50ICpiYWNrcmVmKTsKK2V4dGVybiBjaGFyIGNvbnN0ICpkZmFoaW50IChz dHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdpbiwgY2hhciAqZW5kLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCAqY291bnQpOworCiAKIC8qIEZyZWUgdGhlIHN0b3JhZ2Ug aGVsZCBieSB0aGUgY29tcG9uZW50cyBvZiBhIHN0cnVjdCBkZmEuICovCiBleHRlcm4gdm9pZCBk ZmFmcmVlIChzdHJ1Y3QgZGZhICopOwpkaWZmIC0tZ2l0IGEvc3JjL2RmYXNlYXJjaC5jIGIvc3Jj L2RmYXNlYXJjaC5jCmluZGV4IDBiNTY5NjAuLjc0NDc5ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9kZmFz ZWFyY2guYworKysgYi9zcmMvZGZhc2VhcmNoLmMKQEAgLTI0OCwyNiArMjQ4LDM4IEBAIEVHZXhl Y3V0ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3c20uc2l6ZVswXSkpCiAg ICAgICAgICAgICAgICAgICAgIGdvdG8gc3VjY2VzczsKICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIGlmIChkZmFoaW50IChkZmEsIGJlZywgKGNoYXIgKikgZW5kLCBOVUxMKSA9PSBO VUxMKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICBpZiAoZGZhZXhl YyAoZGZhLCBiZWcsIChjaGFyICopIGVuZCwgMCwgTlVMTCwgJmJhY2tyZWYpID09IE5VTEwpCiAg ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgewogICAgICAgICAgICAgICAvKiBObyBnb29kIGZpeGVkIHN0cmluZ3M7IHN0 YXJ0IHdpdGggREZBLiAqLwotICAgICAgICAgICAgICBjaGFyIGNvbnN0ICpuZXh0X2JlZyA9IGRm YWV4ZWMgKGRmYSwgYmVnLCAoY2hhciAqKSBidWZsaW0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgJmJhY2tyZWYpOwotICAgICAgICAgICAg ICAvKiBJZiB0aGVyZSdzIG5vIG1hdGNoLCBvciBpZiB3ZSd2ZSBtYXRjaGVkIHRoZSBzZW50aW5l bCwKLSAgICAgICAgICAgICAgICAgd2UncmUgZG9uZS4gICovCi0gICAgICAgICAgICAgIGlmIChu ZXh0X2JlZyA9PSBOVUxMIHx8IG5leHRfYmVnID09IGJ1ZmxpbSkKKyAgICAgICAgICAgICAgc2l6 ZV90IGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgY2hhciBjb25zdCAqbmV4dF9iZWcgPSBkZmFo aW50IChkZmEsIGJlZywgKGNoYXIgKikgYnVmbGltLCAmY291bnQpOworICAgICAgICAgICAgICBp ZiAobmV4dF9iZWcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgLyogTmFycm93IGRvd24gdG8gdGhlIGxpbmUgd2UndmUgZm91bmQuICovCiAgICAgICAgICAg ICAgIGJlZyA9IG5leHRfYmVnOwotICAgICAgICAgICAgICBpZiAoKGVuZCA9IG1lbWNocihiZWcs IGVvbCwgYnVmbGltIC0gYmVnKSkgIT0gTlVMTCkKKyAgICAgICAgICAgICAgd2hpbGUgKGJlZyA+ IGJ1ZiAmJiBiZWdbLTFdICE9IGVvbCkKKyAgICAgICAgICAgICAgICAtLWJlZzsKKyAgICAgICAg ICAgICAgaWYgKGNvdW50ID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAvKiBkZmFoaW50KCkgbWF5IG1hdGNoIGluIG11bHRpcGxlIGxpbmVzLiAgSWYgdGhhdCBpcwor ICAgICAgICAgICAgICAgICAgICAgdGhlIGNhc2UsIHRyeSB0byBtYXRjaCBpbiBvbmUgbGluZS4g ICovCisgICAgICAgICAgICAgICAgICBlbmQgPSBiZWc7CisgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmICgoZW5kID0gbWVtY2hy KG5leHRfYmVnLCBlb2wsIGJ1ZmxpbSAtIGJlZykpICE9IE5VTEwpCiAgICAgICAgICAgICAgICAg ZW5kKys7CiAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbmQgPSBidWZsaW07 Ci0gICAgICAgICAgICAgIHdoaWxlIChiZWcgPiBidWYgJiYgYmVnWy0xXSAhPSBlb2wpCi0gICAg ICAgICAgICAgICAgLS1iZWc7CisgICAgICAgICAgICAgIG5leHRfYmVnID0gZGZhZXhlYyAoZGZh LCBiZWcsIChjaGFyICopIGVuZCwgMCwgTlVMTCwgJmJhY2tyZWYpOworICAgICAgICAgICAgICAv KiBJZiB0aGVyZSdzIG5vIG1hdGNoLCBvciBpZiB3ZSd2ZSBtYXRjaGVkIHRoZSBzZW50aW5lbCwK KyAgICAgICAgICAgICAgICAgd2UncmUgZG9uZS4gICovCisgICAgICAgICAgICAgIGlmIChuZXh0 X2JlZyA9PSBOVUxMIHx8IG5leHRfYmVnID09IGVuZCkKKyAgICAgICAgICAgICAgICBjb250aW51 ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAvKiBTdWNjZXNzZnVsLCBubyBiYWNrcmVmZXJl bmNlcyBlbmNvdW50ZXJlZCEgKi8KICAgICAgICAgICBpZiAoIWJhY2tyZWYpCi0tIAoxLjguNS4y Cgo= --------_531AC1AC000000000224_MULTIPART_MIXED_-- From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 28 13:20:40 2014 Received: (at 16966) by debbugs.gnu.org; 28 Mar 2014 17:20:40 +0000 Received: from localhost ([127.0.0.1]:55070 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WTaSN-0001oF-Cu for submit@debbugs.gnu.org; Fri, 28 Mar 2014 13:20:40 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:50014) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WTaSG-0001nu-EA for 16966@debbugs.gnu.org; Fri, 28 Mar 2014 13:20:36 -0400 Received: from [10.120.1.56] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s2SHKRGu018997 for <16966@debbugs.gnu.org>; Sat, 29 Mar 2014 02:20:27 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Sat, 29 Mar 2014 02:20:28 +0900 From: Norihiro Tanaka To: 16966@debbugs.gnu.org Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <20140310003306.3EB5.27F6AC2D@kcn.ne.jp> References: <20140308144141.021A.27F6AC2D@kcn.ne.jp> <20140310003306.3EB5.27F6AC2D@kcn.ne.jp> Message-Id: <20140329022028.0637.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_5335AB49000000000647_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: -0.4 (/) X-Debbugs-Envelope-To: 16966 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.4 (/) --------_5335AB49000000000647_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit I rebased this patch, and added four fixes to it. 1. Fix for the conditions that the superset is used. No longer use it when don't include any normal chars and CSETs. (dfasuperset) 2. Ignore any letter constrations. Otherwise, it mayn't be able to be a superset of the original dfa. (dfasuperset) 3. Change return type of dfahint(). It can check whether used or not from caller.(dfahint) 4. If both kwset and dfahint() aren't used, run DFA matcher in whole range still. Norihiro --------_5335AB49000000000647_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSAxN2Y1OTM0ZDUwYjEyMWVmM2Y3Yzk4YjBiMGRiM2FlOGM4OTFiOGQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5lLmpwPgpE YXRlOiBXZWQsIDEyIE1hciAyMDE0IDAwOjQ1OjA0ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gZ3Jl cDogb3B0aW1pemF0aW9uIHdpdGggdGhlIHN1cGVyc2V0IG9mIERGQS4KCkJ5IHRoZSBwYXRjaCwg REZBIG1heSBiZSBhbHNvIGJ1aWxkIHRoZSBzdXBlcnNldCBvZiBpdHNlbGYsIHdoaWNoIGlzIHRo ZQpzYW1lIGFzIHRoZSBpdHNlbGYgZXhwZWN0IEFOWUNIQVIsIE1CQ1NFVCBhbmQgQkFDS1JFRiBh cmUgcmVwbGFjZWQgQ1NFVApzZXQgZnVsbCBiaXRzIGZvbGxvd2VkIGJ5IFNUQVIsIGFuZCBtYl9j dXJfbWF4IGlzIGVxdWFsIHRvIDEuCgpGb3IgZXhhbXBsZSwgaWYgZ2l2ZW4gdGhlIHBhdHRlcm4g YGFcKGJcKWNcMScsIHRoZSB0b2tlbnMgb2Ygb3JpZ2luYWwKREZBIGFuZCBpdHMgc3VwZXJzZXQg aXMgYmVsb3cuCgogIG9yaWdpbmFsOiBhIGIgQ0FUIGMgQ0FUIEJBQ0tSRUYgQ0FUCgogIHN1cGVy c2V0OiBhIGIgQ0FUIGMgQ0FUIENTRVQgU1RBUiBDQVQKICAgICAgICAgICAgKEZ1bGwgYml0cyBh cmUgc2V0IHRvIENTRVQuKQoKSWYgYSBzdHJpbmcgZG9lc24ndCBtYXRjaGVzIHRoZSBzdXBlcnNl dCBvZiBvcmlnaW5hbCBERkEgZm9yIGEgcGF0dGVybiwKdGhlIHN0cmluZyB3aWxsIGFsc28gbmV2 ZXIgbWF0Y2ggb3JpZ2luYWwgREZBLiAgQnkgdGhlIHdheSwgbWF0Y2hpbmcKd2l0aCB0aGUgc3Vw ZXJzZXQgaXMgdmVyeSBmYXN0IGJlY2F1c2UgaXQgbmV2ZXIgaGFzIEFOWUNIQVIsIE1CQ1NFVCBh bmQKQkFDS1JFRiwgd2hpY2ggYXJlIHZlcnkgZXhwZW5zaXZlLCBhbmQgaXRzIG1iX2N1cl9tYXgg aXMgYWx3YXlzIGVxdWFsCnRvIDEuICBUaGVyZWZvcmUsIHRoZSBwZXJmb21hbmNlIGZvciBtYXRj aGluZyB3aXRoIERGQSBtYXkgYmUKZHJhbWF0aWNhbGx5IGltcHJvdmVkIHdpdGhvdXQgb3Zlcmhl YWQgYnkgdXNpbmcgdGhlIHN1cGVyc2V0LgoKSSBwcmVwYXJlIGZvbGxvd2luZyBzdHJpbmcgdG8g bWVhc3VyZSB0aGUgcGVyZm9ybWFuY2UuCgogICAgeWVzIGpqampqampqampqampqampqampqampq ampqampqampqampqampqamogfCBoZWFkIC0xMDAwMDAwMCA+IGsKCkkgcnVuIHRocmVlIHRlc3Rz IHdpdGggdGhpcyBwYXRjaCAoYmVzdC1vZi01IHRyaWFscyk6CgogICAgZW52IExDX0FMTD1qYV9K UC5ldWNKUCB0aW1lIC1wIHNyYy9ncmVwIC1pIGZvb2JhciBrCiAgICAgICAgcmVhbCAxLjc3ICAg ICAgIHVzZXIgMS4yMyAgICAgICBzeXMgMC40NwogICAgZW52IExDX0FMTD1lbl9VUy5VVEYtOCB0 aW1lIC1wIHNyYy9ncmVwIC1pICdqW2EtY11kJyBrCiAgICAgICAgcmVhbCAxLjg2ICAgICAgIHVz ZXIgMS4zNSAgICAgICBzeXMgMC40NQogICAgZW52IExDX0FMTD1DIHRpbWUgLXAgc3JjL2dyZXAg J1woalwpXDFkJyBrCiAgICAgICAgcmVhbCAxLjkyICAgICAgIHVzZXIgMS40MCAgICAgICBzeXMg MC40OAoKQmFjayBvdXQgdGhhdCBjb21taXQgKHRlbXBvcmFyaWx5KSwgcmVjb21waWxlLCBhbmQg cmVydW4gdGhlIGV4cGVyaW1lbnQ6CgogICAgZW52IExDX0FMTD1qYV9KUC5ldWNKUCB0aW1lIC1w IHNyYy9ncmVwIC1pIGZvb2JhciBrCiAgICAgICAgcmVhbCAyNy4yMSAgICAgIHVzZXIgMjEuMTUg ICAgICBzeXMgNS4zNgogICAgZW52IExDX0FMTD1lbl9VUy5VVEYtOCB0aW1lIC1wIHNyYy9ncmVw IC1pICdqW2EtY11kJyBrCiAgICAgICAgcmVhbCA5Ni4zNSAgICAgIHVzZXIgNDI5LjgwICAgICBz eXMgNTcuMzcKICAgIGVudiBMQ19BTEw9QyB0aW1lIC1wIHNyYy9ncmVwICdcKGpcKVwxZCcgawog ICAgICAgIHJlYWwgNTAyLjMyICAgICB1c2VyIDQyOS44MCAgICAgc3lzIDU3LjM3CgoqIHNyYy9k ZmEuYyAoc3RydWN0IGRmYSkgTmV3IG1lbWJlciBgc3VwZXJzZXQnLgooZGZhaGludCk6IE5ldyBm dW5jdGlvbi4KKGRmYW9wdGltaXplKTogSWYgc3VjY2VlZCBpbiBvcHRpbWl6YXRpb24gZm9yIFVU Ri04IGxvY2FsZSwgZG9uJ3QgdXNlCnRoZSBzdXBlcnNldC4KKGRmYXN1cGVyc2V0KTogTmV3IGZ1 bmN0aW9uLgooZGZhY29tcCk6IEFkZCBjYWxsIG9mIGRmYXN1cGVyc2V0IGFuZCBkZmFhbmFseXpl IGZ1bmN0aW9ucy4KKGRmYWZyZWUpOiBSdW4gZnJlZSBvbmx5IHdoZW4gdGhlIHZhbHVlIG9mIHRo ZSBwb2ludGVyIGlzbid0IE5VTEwuCihkZmFhbGxvYyk6IFNldCBOVUxMIHRvIG1lbWJlciBgc3Vw ZXJzZXQnIG9mIERGQSBjbGVhcmx5LgoqIHNyYy9kZmEuaDogRGVmaW5lIHByb3RvdHlwZSBmb3Ig ZGZhaGludCBmdW5jdGlvbi4KKiBkZmFzZWFyY2guYzogKEVHZXhlY3V0ZSk6IFVzZSBkZmFoaW50 LgotLS0KIHNyYy9kZmEuYyAgICAgICB8IDEzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2RmYS5oICAgICAgIHwgICAzICsrCiBz cmMvZGZhc2VhcmNoLmMgfCAgNjMgKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDMgZmlsZXMg Y2hhbmdlZCwgMTc4IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9kZmEuYyBiL3NyYy9kZmEuYwppbmRleCA0ZWQyMTg5Li4xMWVmNTQyIDEwMDY0NAotLS0g YS9zcmMvZGZhLmMKKysrIGIvc3JjL2RmYS5jCkBAIC0zODksNiArMzg5LDkgQEAgc3RydWN0IGRm YQogICBzaXplX3Qgbm1iY3NldHM7CiAgIHNpemVfdCBtYmNzZXRzX2FsbG9jOwogCisgIC8qIEZp ZWxkcyBmaWxsZWQgYnkgdGhlIHN1cGVyc2V0LiAgKi8KKyAgc3RydWN0IGRmYSAqc3VwZXJzZXQ7 ICAgICAgICAgICAgIC8qIEhpbnQgb2YgdGhlIGRmYS4gICovCisKICAgLyogRmllbGRzIGZpbGxl ZCBieSB0aGUgc3RhdGUgYnVpbGRlci4gICovCiAgIGRmYV9zdGF0ZSAqc3RhdGVzOyAgICAgICAg ICAgIC8qIFN0YXRlcyBvZiB0aGUgZGZhLiAgKi8KICAgc3RhdGVfbnVtIHNpbmRleDsgICAgICAg ICAgICAgLyogSW5kZXggZm9yIGFkZGluZyBuZXcgc3RhdGVzLiAgKi8KQEAgLTM1NTEsNiArMzU1 NCwyMSBAQCBkZmFleGVjIChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdpbiwgY2hhciAq ZW5kLAogICAgIH0KIH0KIAorc2l6ZV90CitkZmFoaW50IChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNv bnN0ICpiZWdpbiwgY2hhciAqZW5kLCBzaXplX3QgKmNvdW50KQoreworICBjaGFyIGNvbnN0ICpt YXRjaDsKKworICBpZiAoZC0+c3VwZXJzZXQgPT0gTlVMTCkKKyAgICByZXR1cm4gKHNpemVfdCkg LTI7CisKKyAgbWF0Y2ggPSBkZmFleGVjIChkLT5zdXBlcnNldCwgYmVnaW4sIGVuZCwgMSwgY291 bnQsIE5VTEwpOworICBpZiAobWF0Y2ggPT0gTlVMTCkKKyAgICByZXR1cm4gKHNpemVfdCkgLTE7 CisKKyAgcmV0dXJuIG1hdGNoIC0gYmVnaW47Cit9CisKIHN0YXRpYyB2b2lkCiBmcmVlX21iZGF0 YSAoc3RydWN0IGRmYSAqZCkKIHsKQEAgLTM2MzMsNiArMzY1MSw4MSBAQCBkZmFvcHRpbWl6ZSAo c3RydWN0IGRmYSAqZCkKICAgZC0+bWJfY3VyX21heCA9IDE7CiB9CiAKK3N0YXRpYyB2b2lkCitk ZmFzdXBlcnNldCAoc3RydWN0IGRmYSAqZCkKK3sKKyAgc2l6ZV90IGksIGo7CisgIGNoYXJjbGFz cyBjY2w7CisgIGJvb2wgaGF2ZV9hY2hhciA9IGZhbHNlOworICBib29sIGhhdmVfbmNoYXIgPSBm YWxzZTsKKworICBkZmEgPSBkLT5zdXBlcnNldCA9IGRmYWFsbG9jICgpOworICAqZC0+c3VwZXJz ZXQgPSAqZDsKKyAgZC0+c3VwZXJzZXQtPm1iX2N1cl9tYXggPSAxOworICBkLT5zdXBlcnNldC0+ bXVsdGlieXRlX3Byb3AgPSBOVUxMOworICBkLT5zdXBlcnNldC0+bWJjc2V0cyA9IE5VTEw7Cisg IGQtPnN1cGVyc2V0LT5zdXBlcnNldCA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5zdGF0ZXMgPSBO VUxMOworICBkLT5zdXBlcnNldC0+Zm9sbG93cyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT50cmFu cyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5yZWFsdHJhbnMgPSBOVUxMOworICBkLT5zdXBlcnNl dC0+ZmFpbHMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+c3VjY2VzcyA9IE5VTEw7CisgIGQtPnN1 cGVyc2V0LT5uZXdsaW5lcyA9IE5VTEw7CisgIGQtPnN1cGVyc2V0LT5tdXN0cyA9IE5VTEw7CisK KyAgTUFMTE9DIChkLT5zdXBlcnNldC0+Y2hhcmNsYXNzZXMsIGQtPnN1cGVyc2V0LT5jYWxsb2Mp OworICBmb3IgKGkgPSAwOyBpIDwgZC0+Y2luZGV4OyBpKyspCisgICAgY29weXNldCAoZC0+Y2hh cmNsYXNzZXNbaV0sIGQtPnN1cGVyc2V0LT5jaGFyY2xhc3Nlc1tpXSk7CisKKyAgZC0+c3VwZXJz ZXQtPnRhbGxvYyA9IGQtPnRpbmRleCAqIDI7CisgIE1BTExPQyAoZC0+c3VwZXJzZXQtPnRva2Vu cywgZC0+c3VwZXJzZXQtPnRhbGxvYyk7CisKKyAgZm9yIChpID0gaiA9IDA7IGkgPCBkLT50aW5k ZXg7IGkrKykKKyAgICB7CisgICAgICBzd2l0Y2ggKGQtPnRva2Vuc1tpXSkKKyAgICAgICAgewor ICAgICAgICBjYXNlIEFOWUNIQVI6CisgICAgICAgIGNhc2UgTUJDU0VUOgorICAgICAgICBjYXNl IEJBQ0tSRUY6CisgICAgICAgICAgemVyb3NldCAoY2NsKTsKKyAgICAgICAgICBub3RzZXQgKGNj bCk7CisgICAgICAgICAgZC0+c3VwZXJzZXQtPnRva2Vuc1tqKytdID0gQ1NFVCArIGNoYXJjbGFz c19pbmRleCAoY2NsKTsKKyAgICAgICAgICBkLT5zdXBlcnNldC0+dG9rZW5zW2orK10gPSBTVEFS OworICAgICAgICAgIGlmIChkLT50b2tlbnNbaSArIDFdID09IFFNQVJLIHx8IGQtPnRva2Vuc1tp ICsgMV0gPT0gU1RBUgorICAgICAgICAgICAgICB8fCBkLT50b2tlbnNbaSArIDFdID09IFBMVVMp CisgICAgICAgICAgICBpKys7CisgICAgICAgICAgaGF2ZV9hY2hhciA9IHRydWU7CisgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQkVHV09SRDoKKyAgICAgICAgY2FzZSBFTkRXT1JEOgor ICAgICAgICBjYXNlIExJTVdPUkQ6CisgICAgICAgIGNhc2UgTk9UTElNV09SRDoKKyAgICAgICAg ICBpZiAoTUJfQ1VSX01BWCA+IDEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIC8qIEln bm9yZSB0aGVzZSBjb25zdHJhaW50cy4gICovCisgICAgICAgICAgICAgIGQtPnN1cGVyc2V0LT50 b2tlbnNbaisrXSA9IEVNUFRZOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBkLT5zdXBlcnNldC0+dG9rZW5zW2orK10gPSBk LT50b2tlbnNbaV07CisgICAgICAgICAgaWYgKChkLT50b2tlbnNbaV0gPj0gMCAmJiBkLT50b2tl bnNbaV0gPCBOT1RDSEFSKQorICAgICAgICAgICAgICAgfHwgZC0+dG9rZW5zW2ldID49IENTRVQp CisgICAgICAgICAgICBoYXZlX25jaGFyID0gdHJ1ZTsKKyAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorICAgIH0KKworICBpZiAoKGQtPm1iX2N1cl9tYXggPT0gMSAmJiAhaGF2ZV9hY2hhcikg fHwgIWhhdmVfbmNoYXIpCisgICAgeworICAgICAgZGZhZnJlZSAoZC0+c3VwZXJzZXQpOworICAg ICAgZC0+c3VwZXJzZXQgPSBOVUxMOworICAgICAgcmV0dXJuOworICAgIH0KKworICBkLT5zdXBl cnNldC0+dGluZGV4ID0gajsKK30KKwogLyogUGFyc2UgYW5kIGFuYWx5emUgYSBzaW5nbGUgc3Ry aW5nIG9mIHRoZSBnaXZlbiBsZW5ndGguICAqLwogdm9pZAogZGZhY29tcCAoY2hhciBjb25zdCAq cywgc2l6ZV90IGxlbiwgc3RydWN0IGRmYSAqZCwgaW50IHNlYXJjaGZsYWcpCkBAIC0zNjQyLDcg KzM3MzUsMTAgQEAgZGZhY29tcCAoY2hhciBjb25zdCAqcywgc2l6ZV90IGxlbiwgc3RydWN0IGRm YSAqZCwgaW50IHNlYXJjaGZsYWcpCiAgIGRmYXBhcnNlIChzLCBsZW4sIGQpOwogICBkZmFtdXN0 IChkKTsKICAgZGZhb3B0aW1pemUgKGQpOworICBkZmFzdXBlcnNldCAoZCk7CiAgIGRmYWFuYWx5 emUgKGQsIHNlYXJjaGZsYWcpOworICBpZiAoZC0+c3VwZXJzZXQgIT0gTlVMTCkKKyAgICBkZmFh bmFseXplIChkLT5zdXBlcnNldCwgc2VhcmNoZmxhZyk7CiB9CiAKIC8qIEZyZWUgdGhlIHN0b3Jh Z2UgaGVsZCBieSB0aGUgY29tcG9uZW50cyBvZiBhIGRmYS4gICovCkBAIC0zNjU4LDMxICszNzU0 LDQ3IEBAIGRmYWZyZWUgKHN0cnVjdCBkZmEgKmQpCiAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkK ICAgICBmcmVlX21iZGF0YSAoZCk7CiAKLSAgZm9yIChpID0gMDsgaSA8IGQtPnNpbmRleDsgKytp KQorICBpZiAoZC0+c3RhdGVzICE9IE5VTEwpCiAgICAgewotICAgICAgZnJlZSAoZC0+c3RhdGVz W2ldLmVsZW1zLmVsZW1zKTsKLSAgICAgIGlmIChNQlNfU1VQUE9SVCkKLSAgICAgICAgZnJlZSAo ZC0+c3RhdGVzW2ldLm1icHMuZWxlbXMpOworICAgICAgZm9yIChpID0gMDsgaSA8IGQtPnNpbmRl eDsgKytpKQorICAgICAgICB7CisgICAgICAgICAgZnJlZSAoZC0+c3RhdGVzW2ldLmVsZW1zLmVs ZW1zKTsKKyAgICAgICAgICBpZiAoTUJTX1NVUFBPUlQpCisgICAgICAgICAgICBmcmVlIChkLT5z dGF0ZXNbaV0ubWJwcy5lbGVtcyk7CisgICAgICAgIH0KKyAgICAgIGZyZWUgKGQtPnN0YXRlcyk7 CiAgICAgfQotICBmcmVlIChkLT5zdGF0ZXMpOwotICBmb3IgKGkgPSAwOyBpIDwgZC0+dGluZGV4 OyArK2kpCi0gICAgZnJlZSAoZC0+Zm9sbG93c1tpXS5lbGVtcyk7Ci0gIGZyZWUgKGQtPmZvbGxv d3MpOwotICBmb3IgKGkgPSAwOyBpIDwgZC0+dHJhbGxvYzsgKytpKQorICBpZiAoZC0+Zm9sbG93 cyAhPSBOVUxMKQorICAgIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBkLT50aW5kZXg7ICsraSkK KyAgICAgICAgZnJlZSAoZC0+Zm9sbG93c1tpXS5lbGVtcyk7CisgICAgICBmcmVlIChkLT5mb2xs b3dzKTsKKyAgICB9CisgIGlmIChkLT50cmFucyAhPSBOVUxMKQorICAgIHsKKyAgICAgIGZvciAo aSA9IDA7IGkgPCBkLT50cmFsbG9jOyArK2kpCisgICAgICAgIGZyZWUgKGQtPnRyYW5zW2ldKTsK KyAgICB9CisgIGlmIChkLT5mYWlscyAhPSBOVUxMKQogICAgIHsKLSAgICAgIGZyZWUgKGQtPnRy YW5zW2ldKTsKLSAgICAgIGZyZWUgKGQtPmZhaWxzW2ldKTsKKyAgICAgIGZvciAoaSA9IDA7IGkg PCBkLT50cmFsbG9jOyArK2kpCisgICAgICAgIGZyZWUgKGQtPmZhaWxzW2ldKTsKICAgICB9CisK ICAgZnJlZSAoZC0+cmVhbHRyYW5zKTsKICAgZnJlZSAoZC0+ZmFpbHMpOwogICBmcmVlIChkLT5u ZXdsaW5lcyk7CiAgIGZyZWUgKGQtPnN1Y2Nlc3MpOworCiAgIGZvciAoZG0gPSBkLT5tdXN0czsg ZG07IGRtID0gbmRtKQogICAgIHsKICAgICAgIG5kbSA9IGRtLT5uZXh0OwogICAgICAgZnJlZSAo ZG0tPm11c3QpOwogICAgICAgZnJlZSAoZG0pOwogICAgIH0KKworICBpZiAoZC0+c3VwZXJzZXQg IT0gTlVMTCkKKyAgICBkZmFmcmVlIChkLT5zdXBlcnNldCk7CiB9CiAKIC8qIEhhdmluZyBmb3Vu ZCB0aGUgcG9zdGZpeCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uLApA QCAtNDE5MCw3ICs0MzAyLDkgQEAgZG9uZToKIHN0cnVjdCBkZmEgKgogZGZhYWxsb2MgKHZvaWQp CiB7Ci0gIHJldHVybiB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkZmEpKTsKKyAgc3RydWN0IGRm YSAqZCA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGRmYSkpOworICBkLT5zdXBlcnNldCA9IE5V TEw7CisgIHJldHVybiBkOwogfQogCiBzdHJ1Y3QgZGZhbXVzdCAqX0dMX0FUVFJJQlVURV9QVVJF CmRpZmYgLS1naXQgYS9zcmMvZGZhLmggYi9zcmMvZGZhLmgKaW5kZXggMjRmYmNiZS4uYWQ5NzQ5 OCAxMDA2NDQKLS0tIGEvc3JjL2RmYS5oCisrKyBiL3NyYy9kZmEuaApAQCAtNjcsNiArNjcsOSBA QCBleHRlcm4gdm9pZCBkZmFjb21wIChjaGFyIGNvbnN0ICosIHNpemVfdCwgc3RydWN0IGRmYSAq LCBpbnQpOwogICAgdG8gZGVjaWRlIHdoZXRoZXIgdG8gZmFsbCBiYWNrIG9uIGEgYmFja3RyYWNr aW5nIG1hdGNoZXIuICovCiBleHRlcm4gY2hhciAqZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hh ciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3 bGluZSwgc2l6ZV90ICpjb3VudCwgaW50ICpiYWNrcmVmKTsKK2V4dGVybiBzaXplX3QgZGZhaGlu dCAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90ICpjb3VudCk7CisKIAogLyogRnJlZSB0aGUgc3RvcmFnZSBo ZWxkIGJ5IHRoZSBjb21wb25lbnRzIG9mIGEgc3RydWN0IGRmYS4gKi8KIGV4dGVybiB2b2lkIGRm YWZyZWUgKHN0cnVjdCBkZmEgKik7CmRpZmYgLS1naXQgYS9zcmMvZGZhc2VhcmNoLmMgYi9zcmMv ZGZhc2VhcmNoLmMKaW5kZXggZDA5OGE5Yi4uOThkN2U0MiAxMDA2NDQKLS0tIGEvc3JjL2RmYXNl YXJjaC5jCisrKyBiL3NyYy9kZmFzZWFyY2guYwpAQCAtMjM2LDcgKzIzNiw2IEBAIEVHZXhlY3V0 ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLAogICAg ICAgICAgICAgICBtYXRjaCA9IGJlZzsKICAgICAgICAgICAgICAgd2hpbGUgKGJlZyA+IGJ1ZiAm JiBiZWdbLTFdICE9IGVvbCkKICAgICAgICAgICAgICAgICAtLWJlZzsKLSAgICAgICAgICAgICAg Y2hhciBjb25zdCAqZGZhX3N0YXJ0ID0gYmVnOwogICAgICAgICAgICAgICBpZiAoa3dzbS5pbmRl eCA8IGt3c2V0X2V4YWN0X21hdGNoZXMpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgaWYgKCFNQlNfU1VQUE9SVCkKQEAgLTI1MSwyOSArMjUwLDY1IEBAIEVHZXhlY3V0ZSAo Y2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLAogICAgICAg ICAgICAgICAgICAgLyogVGhlIG1hdGNoZWQgbGluZSBzdGFydHMgaW4gdGhlIG1pZGRsZSBvZiBh IG11bHRpYnl0ZQogICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyLiAgUGVyZm9ybSB0aGUg REZBIHNlYXJjaCBzdGFydGluZyBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgYmVnaW5u aW5nIG9mIHRoZSBuZXh0IGNoYXJhY3Rlci4gICovCi0gICAgICAgICAgICAgICAgICBkZmFfc3Rh cnQgPSBtYl9zdGFydDsKKyAgICAgICAgICAgICAgICAgIGlmIChkZmFleGVjIChkZmEsIG1iX3N0 YXJ0LCAoY2hhciAqKSBlbmQsIDAsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmJhY2tyZWYpID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgIGlmIChkZmFoaW50IChkZmEsIGJlZywgKGNoYXIgKikgZW5kLCBOVUxM KSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplX3QpIC0xKQorICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgIGlmIChkZmFleGVjIChk ZmEsIGJlZywgKGNoYXIgKikgZW5kLCAwLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZiYWNrcmVmKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGlmIChkZmFleGVjIChkZmEsIGRmYV9z dGFydCwgKGNoYXIgKikgZW5kLCAwLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg JmJhY2tyZWYpID09IE5VTEwpCi0gICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg ICB9CiAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAvKiBObyBn b29kIGZpeGVkIHN0cmluZ3M7IHN0YXJ0IHdpdGggREZBLiAqLwotICAgICAgICAgICAgICBjaGFy IGNvbnN0ICpuZXh0X2JlZyA9IGRmYWV4ZWMgKGRmYSwgYmVnLCAoY2hhciAqKSBidWZsaW0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgJmJh Y2tyZWYpOwotICAgICAgICAgICAgICAvKiBJZiB0aGVyZSdzIG5vIG1hdGNoLCBvciBpZiB3ZSd2 ZSBtYXRjaGVkIHRoZSBzZW50aW5lbCwKLSAgICAgICAgICAgICAgICAgd2UncmUgZG9uZS4gICov Ci0gICAgICAgICAgICAgIGlmIChuZXh0X2JlZyA9PSBOVUxMIHx8IG5leHRfYmVnID09IGJ1Zmxp bSkKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwg Y291bnQ7CisgICAgICAgICAgICAgIGNoYXIgY29uc3QgKm5leHRfYmVnOworICAgICAgICAgICAg ICBjb3VudCA9IDA7CisgICAgICAgICAgICAgIG9mZnNldCA9IGRmYWhpbnQgKGRmYSwgYmVnLCAo Y2hhciAqKSBidWZsaW0sICZjb3VudCk7CisgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gKHNp emVfdCkgLTEpCisgICAgICAgICAgICAgICAgZ290byBmYWlsdXJlOworICAgICAgICAgICAgICBp ZiAob2Zmc2V0ID09IChzaXplX3QpIC0yKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgIC8qIE5vIHVzZSBoaW50LiAqLworICAgICAgICAgICAgICAgICAgbmV4dF9iZWcgPSBk ZmFleGVjIChkZmEsIGJlZywgKGNoYXIgKikgYnVmbGltLCAwLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMLCAmYmFja3JlZik7CisgICAgICAgICAgICAgICAgICAv KiBJZiB0aGVyZSdzIG5vIG1hdGNoLCBvciBpZiB3ZSd2ZSBtYXRjaGVkIHRoZSBzZW50aW5lbCwK KyAgICAgICAgICAgICAgICAgICAgIHdlJ3JlIGRvbmUuICAqLworICAgICAgICAgICAgICAgICAg aWYgKG5leHRfYmVnID09IE5VTEwgfHwgbmV4dF9iZWcgPT0gYnVmbGltKQorICAgICAgICAgICAg ICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBl bHNlCisgICAgICAgICAgICAgICAgbmV4dF9iZWcgPSBiZWcgKyBvZmZzZXQ7CiAgICAgICAgICAg ICAgIC8qIE5hcnJvdyBkb3duIHRvIHRoZSBsaW5lIHdlJ3ZlIGZvdW5kLiAqLwogICAgICAgICAg ICAgICBiZWcgPSBuZXh0X2JlZzsKLSAgICAgICAgICAgICAgaWYgKChlbmQgPSBtZW1jaHIoYmVn LCBlb2wsIGJ1ZmxpbSAtIGJlZykpICE9IE5VTEwpCisgICAgICAgICAgICAgIHdoaWxlIChiZWcg PiBidWYgJiYgYmVnWy0xXSAhPSBlb2wpCisgICAgICAgICAgICAgICAgLS1iZWc7CisgICAgICAg ICAgICAgIGlmIChjb3VudCA+IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgLyogZGZhaGludCgpIG1heSBtYXRjaCBpbiBtdWx0aXBsZSBsaW5lcy4gIElmIHRoYXQgaXMK KyAgICAgICAgICAgICAgICAgICAgIHRoZSBjYXNlLCB0cnkgdG8gbWF0Y2ggaW4gb25lIGxpbmUu ICAqLworICAgICAgICAgICAgICAgICAgZW5kID0gYmVnOworICAgICAgICAgICAgICAgICAgY29u dGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAoKGVuZCA9IG1lbWNo cihuZXh0X2JlZywgZW9sLCBidWZsaW0gLSBiZWcpKSAhPSBOVUxMKQogICAgICAgICAgICAgICAg IGVuZCsrOwogICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZW5kID0gYnVmbGlt OwotICAgICAgICAgICAgICB3aGlsZSAoYmVnID4gYnVmICYmIGJlZ1stMV0gIT0gZW9sKQotICAg ICAgICAgICAgICAgIC0tYmVnOworICAgICAgICAgICAgICBpZiAob2Zmc2V0ICE9IChzaXplX3Qp IC0yKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIG5leHRfYmVnID0gZGZh ZXhlYyAoZGZhLCBiZWcsIChjaGFyICopIGVuZCwgMCwgTlVMTCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmJhY2tyZWYpOworICAgICAgICAgICAgICAgICAgLyogSWYg dGhlcmUncyBubyBtYXRjaCwgb3IgaWYgd2UndmUgbWF0Y2hlZCB0aGUgc2VudGluZWwsCisgICAg ICAgICAgICAgICAgICAgICB3ZSdyZSBkb25lLiAgKi8KKyAgICAgICAgICAgICAgICAgIGlmIChu ZXh0X2JlZyA9PSBOVUxMIHx8IG5leHRfYmVnID09IGVuZCkKKyAgICAgICAgICAgICAgICAgICAg Y29udGludWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgIC8q IFN1Y2Nlc3NmdWwsIG5vIGJhY2tyZWZlcmVuY2VzIGVuY291bnRlcmVkISAqLwogICAgICAgICAg IGlmICghYmFja3JlZikKLS0gCjEuOS4xCgo= --------_5335AB49000000000647_MULTIPART_MIXED_-- From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 01 04:16:38 2014 Received: (at 16966) by debbugs.gnu.org; 1 Apr 2014 08:16:38 +0000 Received: from localhost ([127.0.0.1]:58652 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WUts5-0003VL-Tt for submit@debbugs.gnu.org; Tue, 01 Apr 2014 04:16:38 -0400 Received: from mail-wg0-f43.google.com ([74.125.82.43]:35914) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WUts3-0003VB-PW for 16966@debbugs.gnu.org; Tue, 01 Apr 2014 04:16:36 -0400 Received: by mail-wg0-f43.google.com with SMTP id x13so6892894wgg.2 for <16966@debbugs.gnu.org>; Tue, 01 Apr 2014 01:16:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=0bQ4BCBInVK+vYsvvDt1VoN3mFaFSaqBVC3540MI9rQ=; b=nChl4q/N29EDwvSGYxVfbFPVJ4hmhjJsPQCbZBajsruhLDAhzYv9BnLkORtrBwkl9I c1oIZxbC1/MVbr9T/KhYtuJ31LuwxDY31daSSvlvqNTdKPAYIiHRGzFUtv3U3at+ylbH OJ5IofpTYYFYykA3nHpkBe1Rr3jaZqkr0vYHa+LwV+edWgJ1EGZdHhvMJVn3HbcidfXG Gh1VACvElCfengYFIrAGYhDvauV6myKR3dRHZf2n9tmSLCT0/2U3tvvCKuLAY4nh2wj8 ekABA2cW0S5xKCxfZ1geuMGlzFSZLSEtY1CL8MTG2IwgWi4pBFWdbGzN2VE7//W5TXev +fAg== X-Received: by 10.194.241.132 with SMTP id wi4mr20573475wjc.14.1396340195108; Tue, 01 Apr 2014 01:16:35 -0700 (PDT) Received: from yakj.usersys.redhat.com (net-37-117-156-129.cust.vodafonedsl.it. [37.117.156.129]) by mx.google.com with ESMTPSA id z48sm38828789eel.27.2014.04.01.01.16.33 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 01 Apr 2014 01:16:34 -0700 (PDT) Message-ID: <533A75E0.8080400@gnu.org> Date: Tue, 01 Apr 2014 10:16:32 +0200 From: Paolo Bonzini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Norihiro Tanaka , 16966@debbugs.gnu.org Subject: Re: bug#16966: [PATCH] grep: optimization with the superset of DFA References: <20140308144141.021A.27F6AC2D@kcn.ne.jp> <20140310003306.3EB5.27F6AC2D@kcn.ne.jp> <20140329022028.0637.27F6AC2D@kcn.ne.jp> In-Reply-To: <20140329022028.0637.27F6AC2D@kcn.ne.jp> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16966 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Il 28/03/2014 18:20, Norihiro Tanaka ha scritto: > I rebased this patch, and added four fixes to it. > > 1. Fix for the conditions that the superset is used. No longer use it > when don't include any normal chars and CSETs. (dfasuperset) > > 2. Ignore any letter constrations. Otherwise, it mayn't be able to be > a superset of the original dfa. (dfasuperset) > > 3. Change return type of dfahint(). It can check whether used or not > from caller.(dfahint) > > 4. If both kwset and dfahint() aren't used, run DFA matcher in whole > range still. For ANYCHAR, you can convert it to CSET{1,mb_cur_max} or, even better, (single-CSET | lead-CSET full-CSET{0,mb_cur_max-1}). Single-CSET and lead-CSET can be computed by looping over the 256 characters with mbrtowc and looking respectively for non-negative or -2 return values. Paolo From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 01 11:19:02 2014 Received: (at 16966) by debbugs.gnu.org; 1 Apr 2014 15:19:02 +0000 Received: from localhost ([127.0.0.1]:59512 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV0Sr-0008Vc-LY for submit@debbugs.gnu.org; Tue, 01 Apr 2014 11:19:02 -0400 Received: from pbsg500.nifty.com ([202.248.238.70]:27922) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV0So-0008VS-Br for 16966@debbugs.gnu.org; Tue, 01 Apr 2014 11:19:00 -0400 Received: from [10.120.1.62] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg500.nifty.com with ESMTP id s31FIoDo027413; Wed, 2 Apr 2014 00:18:50 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Wed, 02 Apr 2014 00:18:52 +0900 From: Norihiro Tanaka To: Paolo Bonzini Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <533A75E0.8080400@gnu.org> References: <20140329022028.0637.27F6AC2D@kcn.ne.jp> <533A75E0.8080400@gnu.org> Message-Id: <20140402001851.78CF.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) Hi Paulo, > For ANYCHAR, you can convert it to CSET{1,mb_cur_max} or, even better, (single-CSET | lead-CSET full-CSET{0,mb_cur_max-1}). I seem that it's complicated. The superset requires a memory area that is different from the original DFA and additional costs to build it. And exact matching isn't required for it. So, I want to make it simple and smaller DFA. Do you know how to code ANYCHAR correctly in a simple method? Norihiro From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 01 11:32:24 2014 Received: (at 16966) by debbugs.gnu.org; 1 Apr 2014 15:32:24 +0000 Received: from localhost ([127.0.0.1]:59525 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV0fn-0000R1-QY for submit@debbugs.gnu.org; Tue, 01 Apr 2014 11:32:24 -0400 Received: from mail-wi0-f173.google.com ([209.85.212.173]:52976) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV0fk-0000Qr-4y for 16966@debbugs.gnu.org; Tue, 01 Apr 2014 11:32:21 -0400 Received: by mail-wi0-f173.google.com with SMTP id z2so3663589wiv.6 for <16966@debbugs.gnu.org>; Tue, 01 Apr 2014 08:32:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=5qxkTEDEg6Tp21dwi1sGrGJd/USaC7AFa0VwnJEtjXY=; b=cAQhVQ+avuaLkxmmxO1LMMoZmJyX7CmBcyFdyHbyEmuBgZdijDd5CUDuvLPgLXRY6X lNiNMpAdH4aB8eRdWlSdDBHoIMOjd7VkkSScUUqXmAifULBrAGb7kr6/7CwQxWin3kEt 6cc7DpRlzWD933axBKf58KQpFkW5WwfWVIa/CD5zCommcqWOURSN+gM3YHcfBVg6aD1a nv71a6naPGaSvT2oaE3ib52n+biiq9XwBhdP7a+zShK4EP+afTyB4CCUZBVOfxew7YDJ /md8h6uI81zEo3VgupJFeDGlSDnXtEBSwkHT0P65KlK0pK1DTi4W2GZdcdyTWMBh9Cmk DphQ== X-Received: by 10.180.72.195 with SMTP id f3mr20734041wiv.61.1396366339219; Tue, 01 Apr 2014 08:32:19 -0700 (PDT) Received: from yakj.usersys.redhat.com (net-37-117-156-129.cust.vodafonedsl.it. [37.117.156.129]) by mx.google.com with ESMTPSA id w12sm41260586eez.36.2014.04.01.08.32.17 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 01 Apr 2014 08:32:18 -0700 (PDT) Message-ID: <533ADC00.2050206@gnu.org> Date: Tue, 01 Apr 2014 17:32:16 +0200 From: Paolo Bonzini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Norihiro Tanaka Subject: Re: bug#16966: [PATCH] grep: optimization with the superset of DFA References: <20140329022028.0637.27F6AC2D@kcn.ne.jp> <533A75E0.8080400@gnu.org> <20140402001851.78CF.27F6AC2D@kcn.ne.jp> In-Reply-To: <20140402001851.78CF.27F6AC2D@kcn.ne.jp> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Il 01/04/2014 17:18, Norihiro Tanaka ha scritto: >> > For ANYCHAR, you can convert it to CSET{1,mb_cur_max} or, even better, (single-CSET | lead-CSET full-CSET{0,mb_cur_max-1}). > I seem that it's complicated. The superset requires a memory area that > is different from the original DFA and additional costs to build it. And > exact matching isn't required for it. So, I want to make it simple and > smaller DFA. I'm worried that the "STAR" method will match basically everything. We're using something like CSET{1,mb_cur_max} already for UTF-8, so the size increase for that should not be too bad. Paolo From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 01 11:49:38 2014 Received: (at 16966) by debbugs.gnu.org; 1 Apr 2014 15:49:38 +0000 Received: from localhost ([127.0.0.1]:59533 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV0wU-0000rn-0N for submit@debbugs.gnu.org; Tue, 01 Apr 2014 11:49:38 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:44861) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV0wO-0000rY-KU for 16966@debbugs.gnu.org; Tue, 01 Apr 2014 11:49:35 -0400 Received: from [10.120.1.62] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s31FnHri010802; Wed, 2 Apr 2014 00:49:18 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Wed, 02 Apr 2014 00:49:19 +0900 From: Norihiro Tanaka To: Paolo Bonzini Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <533ADC00.2050206@gnu.org> References: <20140402001851.78CF.27F6AC2D@kcn.ne.jp> <533ADC00.2050206@gnu.org> Message-Id: <20140402004917.78D6.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) Hi Paolo, > I'm worried that the "STAR" method will match basically everything. If no normal char and/or CSET is included in the pattern, the superset won't be used. > We're using something like CSET{1,mb_cur_max} already for UTF-8, so the size increase for that should not be too bad. We cannot apply its rule to non-UTF8 locales. Norihiro From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 01 13:48:29 2014 Received: (at 16966) by debbugs.gnu.org; 1 Apr 2014 17:48:29 +0000 Received: from localhost ([127.0.0.1]:59667 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV2nU-0006Uo-Mn for submit@debbugs.gnu.org; Tue, 01 Apr 2014 13:48:29 -0400 Received: from mail-wi0-f169.google.com ([209.85.212.169]:40212) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV2nS-0006Ue-Ln for 16966@debbugs.gnu.org; Tue, 01 Apr 2014 13:48:27 -0400 Received: by mail-wi0-f169.google.com with SMTP id hm4so5231587wib.4 for <16966@debbugs.gnu.org>; Tue, 01 Apr 2014 10:48:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=WF+IiFGUXdEd5AixelTT3HSvKRQCzeSX5Ag9nNGM7Ek=; b=aQf0jBNz32BDX7MQIRv7rchu52zeKX/+Etv3JTbVU7TW5o0D+coVMzK1+uIQutZDnk J+NeaMTmkhIPPC8VU+SU3Ou1gtQl/IKLA6KHuRnr9qcVQVjGmIyupYreTQK0Dpjc8ucm MPkb9CGvL53ZtHWYrMYN7IzWZF8ubyTpjopbBnZsIuMHYpj2ELgFR2/jEaD6JqQt0POa fwVMf5795BfGqN+VOLKSNXRVrNa9NAfSZFMa11I4+8o4wPR8immoxsMglFyTOyPwQJFn DyRZjKBwPQTyF6aMFa9zXQEC0quQwpHXbdDXEyLOjpaQ0QqGbUGEJ2l9/0ctW58XC5zh RRPQ== X-Received: by 10.194.87.163 with SMTP id az3mr15829941wjb.63.1396374489087; Tue, 01 Apr 2014 10:48:09 -0700 (PDT) Received: from yakj.usersys.redhat.com (net-37-117-156-129.cust.vodafonedsl.it. [37.117.156.129]) by mx.google.com with ESMTPSA id q41sm42061215eez.7.2014.04.01.10.48.06 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 01 Apr 2014 10:48:07 -0700 (PDT) Message-ID: <533AFBD5.7020902@gnu.org> Date: Tue, 01 Apr 2014 19:48:05 +0200 From: Paolo Bonzini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Norihiro Tanaka Subject: Re: bug#16966: [PATCH] grep: optimization with the superset of DFA References: <20140402001851.78CF.27F6AC2D@kcn.ne.jp> <533ADC00.2050206@gnu.org> <20140402004917.78D6.27F6AC2D@kcn.ne.jp> In-Reply-To: <20140402004917.78D6.27F6AC2D@kcn.ne.jp> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Il 01/04/2014 17:49, Norihiro Tanaka ha scritto: > >> > I'm worried that the "STAR" method will match basically everything. > If no normal char and/or CSET is included in the pattern, the superset > won't be used. > Yeah, but my problem is that a.b will look at a very long line if it is translated to a[\x0-\xff]*b. Better translate it to a[\x0-\xff]{1,2}b or something similar. Paolo From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 01 18:21:10 2014 Received: (at 16966) by debbugs.gnu.org; 1 Apr 2014 22:21:10 +0000 Received: from localhost ([127.0.0.1]:59783 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV73N-0005O9-Vh for submit@debbugs.gnu.org; Tue, 01 Apr 2014 18:21:10 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:55976) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV73I-0005Nu-Rs for 16966@debbugs.gnu.org; Tue, 01 Apr 2014 18:21:07 -0400 Received: from [10.120.1.39] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s31ML0DJ009033; Wed, 2 Apr 2014 07:21:01 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Wed, 02 Apr 2014 07:21:02 +0900 From: Norihiro Tanaka To: Paolo Bonzini Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <533AFBD5.7020902@gnu.org> References: <20140402004917.78D6.27F6AC2D@kcn.ne.jp> <533AFBD5.7020902@gnu.org> Message-Id: <20140402072101.BF86.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) Paolo Bonzini wrote: > Yeah, but my problem is that a.b will look at a very long line if it > is translated to a[\x0-\xff]*b. Better translate it to a[\x0-\xff]{1,2}b > or something similar. I seem that it's no problem. For example, I try following text for the pattern `a.b'. Whereas the digit isn't a part of the text but the line number. 1 accccccccccccccccccccccccccccccccccccccc 2 cccccccccccccccccccccccccccccccccccccccc 3 cccccccccccccccccccccccccccccccccccccccc 4 cccccccccccccccccccccccccccccccccccccccc 5 cccccccccccccccccccccccccccccccccccccccb a --> a + CSET --> a + CSET --> ...... --> a + CSET + b (match) Then all lines are matched fast. However, because matches multiple lines, retry from the last line (line 5). It doesn't matches the pattern `a.b'. Therefore the text is rejected. Next, I try following text for it. 1 accccccccccccccccccccccccccccccccccccccc 2 cccccccccccccccccccccccccccccccccccccccc 3 cccccccccccccccccccccccccccccccccccccccc 4 cccccccccccccccccccccccccccccccccccccccc 5 accccccccccccccccccccccccccccccccccccccb Then all lines are matched fast. However, because matches multiple lines, retry from the last line (line 5). It's accepted by the superset. However, It's rejected by normal DFA. On the other hands, It can be constituted just three DFA states. It's too simple. /\ / \ \ / \/ 1:a ---> 2:CSET ---> 3:b Thanks, Norihiro From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 01 18:59:08 2014 Received: (at 16966) by debbugs.gnu.org; 1 Apr 2014 22:59:08 +0000 Received: from localhost ([127.0.0.1]:59799 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV7e8-0006NR-20 for submit@debbugs.gnu.org; Tue, 01 Apr 2014 18:59:08 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:56925) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV7e2-0006MT-VA for 16966@debbugs.gnu.org; Tue, 01 Apr 2014 18:59:05 -0400 Received: from [10.120.1.39] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s31MwhY3018836; Wed, 2 Apr 2014 07:58:43 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Wed, 02 Apr 2014 07:58:44 +0900 From: Norihiro Tanaka To: Paolo Bonzini Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <20140402072101.BF86.27F6AC2D@kcn.ne.jp> References: <533AFBD5.7020902@gnu.org> <20140402072101.BF86.27F6AC2D@kcn.ne.jp> Message-Id: <20140402075844.BF91.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) Norihiro Tanaka wrote: > For example, I try following text for the pattern `a.b'. In UTF8, the pattern `a.b' doesn't use the superset. Consider `a[d-z]b' and/or `\(a\)\1b' instead of it. Norihiro From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 01 19:56:07 2014 Received: (at 16966) by debbugs.gnu.org; 1 Apr 2014 23:56:08 +0000 Received: from localhost ([127.0.0.1]:59808 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV8XH-0007sS-H6 for submit@debbugs.gnu.org; Tue, 01 Apr 2014 19:56:07 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:30421) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WV8XD-0007rx-2E for 16966@debbugs.gnu.org; Tue, 01 Apr 2014 19:56:05 -0400 Received: from [10.120.1.39] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s31Ntp4c002702; Wed, 2 Apr 2014 08:55:52 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Wed, 02 Apr 2014 08:55:53 +0900 From: Norihiro Tanaka To: Paolo Bonzini Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <533AFBD5.7020902@gnu.org> References: <20140402004917.78D6.27F6AC2D@kcn.ne.jp> <533AFBD5.7020902@gnu.org> Message-Id: <20140402085552.BF99.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) Paolo Bonzini wrote: > Better translate it to a[\x0-\xff]{1,2}b or something similar. I also thought that previously. However, since we don't ask an exact match for the superset, that is believed to be meaningless. Norihiro From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 02 03:09:14 2014 Received: (at 16966) by debbugs.gnu.org; 2 Apr 2014 07:09:14 +0000 Received: from localhost ([127.0.0.1]:60240 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WVFIP-0004tm-RH for submit@debbugs.gnu.org; Wed, 02 Apr 2014 03:09:14 -0400 Received: from mail-wg0-f49.google.com ([74.125.82.49]:40282) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WVFIM-0004td-Ps for 16966@debbugs.gnu.org; Wed, 02 Apr 2014 03:09:11 -0400 Received: by mail-wg0-f49.google.com with SMTP id a1so8593532wgh.20 for <16966@debbugs.gnu.org>; Wed, 02 Apr 2014 00:09:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=WM6Z+MFZu97HY8AEFo8/JJeckrMbomXcfyawC+seF8s=; b=0rmApcl1M9LW66FCwftO+yqoRy9QarIH1DlMFM8A6d3Lbkxu+U0yv4s5zFFZ9NpzkO HOz5RxXuRCxfPkJL4jYB78NoZT251o+ouAs9IYMOWQ+qwXYh0bIXb7DdSDF9MZYa/S79 JDge7N2gOESDvVirCDazzSAC6bsflWKBmHnfjBKTr9iwR0jfREmynsZ64dFfTnDatS9V BQbEiGRjPGYd40Mz5yGol/0FRJcesfUo3k1l4maZheVLyThplSosNieTsJlQm1/jB7UM 5z1O4VJfOkV92vUqcKCuK+bG+DOpCrUkfI2e4EKEKSeFUmoTnLRmUANlr9zxFIU801jp NACQ== X-Received: by 10.180.8.40 with SMTP id o8mr14842948wia.25.1396422549986; Wed, 02 Apr 2014 00:09:09 -0700 (PDT) Received: from yakj.usersys.redhat.com (net-37-117-156-129.cust.vodafonedsl.it. [37.117.156.129]) by mx.google.com with ESMTPSA id m42sm2418787eex.21.2014.04.02.00.09.07 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 02 Apr 2014 00:09:08 -0700 (PDT) Message-ID: <533BB791.5000203@gnu.org> Date: Wed, 02 Apr 2014 09:09:05 +0200 From: Paolo Bonzini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Norihiro Tanaka Subject: Re: bug#16966: [PATCH] grep: optimization with the superset of DFA References: <20140402004917.78D6.27F6AC2D@kcn.ne.jp> <533AFBD5.7020902@gnu.org> <20140402072101.BF86.27F6AC2D@kcn.ne.jp> In-Reply-To: <20140402072101.BF86.27F6AC2D@kcn.ne.jp> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Il 02/04/2014 00:21, Norihiro Tanaka ha scritto: > 1 accccccccccccccccccccccccccccccccccccccc > 2 cccccccccccccccccccccccccccccccccccccccc > 3 cccccccccccccccccccccccccccccccccccccccc > 4 cccccccccccccccccccccccccccccccccccccccc > 5 accccccccccccccccccccccccccccccccccccccb > > Then all lines are matched fast. However, because matches multiple > lines, retry from the last line (line 5). It's accepted by the > superset. However, It's rejected by normal DFA. > > On the other hands, It can be constituted just three DFA states. It's > too simple. > > /\ > / \ > \ / > \/ > 1:a ---> 2:CSET ---> 3:b Does anything change if there are a few million c's? Paolo From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 02 09:02:09 2014 Received: (at 16966) by debbugs.gnu.org; 2 Apr 2014 13:02:09 +0000 Received: from localhost ([127.0.0.1]:60497 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WVKnw-00083I-Uu for submit@debbugs.gnu.org; Wed, 02 Apr 2014 09:02:09 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:41358) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WVKnr-00082w-Og for 16966@debbugs.gnu.org; Wed, 02 Apr 2014 09:02:06 -0400 Received: from [10.120.1.7] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s32D1wwp005172; Wed, 2 Apr 2014 22:01:59 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Wed, 02 Apr 2014 22:02:01 +0900 From: Norihiro Tanaka To: Paolo Bonzini Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <533BB791.5000203@gnu.org> References: <20140402072101.BF86.27F6AC2D@kcn.ne.jp> <533BB791.5000203@gnu.org> Message-Id: <20140402220159.660B.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) Paolo Bonzini wrote: > Does anything change if there are a few million c's? The superset of `a ANYCHAR b' is 'a CSET STAR b'. It's DFA states are following. s0: The position set is none. s1: The position set is 1:a s2: The position set is 1:a 2:CSET s3: The position set is 1:a 2:CSET 3:b (accepted) 1 accccccccccccccccccccccccccccccccccccccc ^ s1 1 accccccccccccccccccccccccccccccccccccccc ^ s2 1 accccccccccccccccccccccccccccccccccccccc ^ s2 ...... 1,000,000 cccccccccccccccccccccccccccccccccccccccb ^ s2 1,000,000 cccccccccccccccccccccccccccccccccccccccb ^ s3 accepted Then re-searched with the superset because matched on multi-lines. 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s0 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s1 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s2 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s2 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s3 accepted Then re-searched with the original DFA becuase matched on one-line. The DFA states are following. s0: The position set is none. s1: The position set is 1:a s2: The position set is 1:a 2:ANYCHAR s3: The position set is 1:a 2:ANYCHAR 3:b (accepted) 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s1 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s2 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s0 rejected Even if matched multi-line, It's still as fast and memory-required as matched single-line, because in search-mode STAR doesn't count number of NFA and DFA states up. So for example, a set of DFA states for `a CSET STAR b' is correspond with for `a CSET b'. (If my recognition is right.) OTOH, If CSET{1,mb_cur_max} is assigned for ANYCHAR, number of DFA states will be greater than above, and I may be slightly slower becuase of overheads to build DFA states. Notice that `{m,n}' expression requires a lot of memory and is slow (See also http://www.gnu.org/software/grep/manual/grep.html#Reporting-Bugs). Example, use the superset for following pattern in EUC-JP locale. It's mb_cur_max == 3. a.....b If ANYCHAR is replaced to `CSET STAR', as following. a CSET STAR CSET STAR CSET STAR CSET STAR CSET STAR CSET STAR b I draw it below. /\ / \ 2:CSET \ / \/ 1:a ---> 3:b (The figure drawn previously was wrong.) It's equal to following. a CSET STAR b OTOH, the period is replaced to `CSET CSET CSET CAT OR CSET CSET CAT CSET CAT OR', below. Itt's complicated, and I don't want to draw it. :) a CSET CSET CSET CAT OR CSET CSET CAT CSET CAT OR CSET CSET CSET CAT OR CSET CSET CAT CSET CAT OR CAT CSET CSET CSET CAT OR CSET CSET CAT CSET CAT OR CAT CSET CSET CSET CAT OR CSET CSET CAT CSET CAT OR CAT b Thanks, Norihiro From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 02 09:52:55 2014 Received: (at 16966) by debbugs.gnu.org; 2 Apr 2014 13:52:55 +0000 Received: from localhost ([127.0.0.1]:60532 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WVLb4-0000tZ-HJ for submit@debbugs.gnu.org; Wed, 02 Apr 2014 09:52:54 -0400 Received: from pbsg500.nifty.com ([202.248.238.70]:25201) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WVLaz-0000tI-Bq for 16966@debbugs.gnu.org; Wed, 02 Apr 2014 09:52:52 -0400 Received: from [10.120.1.7] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg500.nifty.com with ESMTP id s32Dqf85004929; Wed, 2 Apr 2014 22:52:41 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Wed, 02 Apr 2014 22:52:43 +0900 From: Norihiro Tanaka To: Paolo Bonzini Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <20140402220159.660B.27F6AC2D@kcn.ne.jp> References: <533BB791.5000203@gnu.org> <20140402220159.660B.27F6AC2D@kcn.ne.jp> Message-Id: <20140402225241.661B.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 16966 Cc: 16966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.7 (/) Norihiro Tanaka wrote: > s0: The position set is none. > s1: The position set is 1:a > s2: The position set is 1:a 2:CSET > s3: The position set is 1:a 2:CSET 3:b (accepted) Sorry, it was wrong. It should be as follows. s0: The position set is none. s1: The position set is 1:a s2: The position set is 1:a 2:CSET s3: The position set is 2:CSET 3:b (accepted) s4: The position set is 2:CSET 1 accccccccccccccccccccccccccccccccccccccc ^ s1 1 accccccccccccccccccccccccccccccccccccccc ^ s4 1 accccccccccccccccccccccccccccccccccccccc ^ s4 ...... 1,000,000 cccccccccccccccccccccccccccccccccccccccb ^ s4 1,000,000 cccccccccccccccccccccccccccccccccccccccb ^ s3 accepted Then re-searched with the superset because matched on multi-lines. 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s0 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s1 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s4 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s4 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s3 accepted s0: The position set is none. s1: The position set is 1:a s2: The position set is 1:a 2:ANYCHAR s3: The position set is 2:ANYCHAR 3:b (accepted) s4: The position set is 2:ANYCHAR 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s1 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s4 1,000,000 cccccccccccccccccccccacccccccccccccccccb ^ s0 rejected From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 03 23:29:09 2014 Received: (at 16966) by debbugs.gnu.org; 4 Apr 2014 03:29:09 +0000 Received: from localhost ([127.0.0.1]:34865 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WVuoV-0007J5-FK for submit@debbugs.gnu.org; Thu, 03 Apr 2014 23:29:09 -0400 Received: from pbsg501.nifty.com ([202.248.238.71]:57284) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WVuoP-0007IY-CA for 16966@debbugs.gnu.org; Thu, 03 Apr 2014 23:29:04 -0400 Received: from [10.120.1.58] (i118-21-128-66.s30.a048.ap.plala.or.jp [118.21.128.66]) (authenticated) by pbsg501.nifty.com with ESMTP id s343Smjp000632; Fri, 4 Apr 2014 12:28:48 +0900 X-Nifty-SrcIP: [118.21.128.66] Date: Fri, 04 Apr 2014 12:28:47 +0900 From: Norihiro Tanaka To: Paolo Bonzini , 16966@debbugs.gnu.org Subject: bug#16966: [PATCH] grep: optimization with the superset of DFA In-Reply-To: <20140402225241.661B.27F6AC2D@kcn.ne.jp> References: <20140402220159.660B.27F6AC2D@kcn.ne.jp> <20140402225241.661B.27F6AC2D@kcn.ne.jp> Message-Id: <20140404122838.2C24.27F6AC2D@kcn.ne.jp> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_533DF0F5000000002C12_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.65.07 [ja] X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 16966 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) --------_533DF0F5000000002C12_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Norihiro Tanaka wrote: > s0: The position set is none. > s1: The position set is 1:a > s2: The position set is 1:a 2:CSET > s3: The position set is 2:CSET 3:b (accepted) > s4: The position set is 2:CSET Sorry, it was wrong yet. It should be as follows. s0: The position set is none. s1: The position set is 1:a 2:CSET 3:b s2: The position set is 1:a 2:CSET 3:b (accepted) First of all, I noticed that the example is wrong, because if fixed strings are included in the pattern, kwset is used for the pattern, and dfahint() is called for each single line. -- By the way, I compared two cases, which are CSET* and CSET{1,mb_cur_max}. I used `\(a\|z\)[x-y]\{10\}\(b\|z\)' as the pattern. `[x-z]' is MBCSET in UTF-8 locale. If replace MBCSET to CSET*, the pattern in the superset is `\(a\|z\)\(CSET*\)\{10\}\(b\|z\)'. If replace MBCSET to CSET{1,mb_cur_max}, the pattern in the superset is `\(a\|z\)\(CSET\{1,6\}\)\{10\}\(b\|z\)'. In order to simplify, use `\(a\|z\)\(.\{1,6\}\)\{10\}\(b\|z\)' in POSIX locale for later. Before testing, apply the patch attached on this mail, Set `DDEBUG' to CPPFLAGS, and re-build. It outputs more debugging information. $ yes `printf '%0100d\n'` | head -320 | \ sed -e '1s/^0/a/; $s/0$/b/' | \ env LANG=en_US.UTF-8 src/grep '\(a\|z\)[x-y]\{10\}\(b\|z\)' 2>debug1.log $ yes `printf '%0100d\n'` | head -320 | \ sed -e '1s/^0/a/; $s/0$/b/' | \ env LANG=C src/grep '\(a\|z\)\(.\{1,6\}\)\{10\}\(b\|z\)' 2>debug2.log (`320' originates in the default size of a buffer.) The formar is only built 3 states. OTOH, the later is built 224 dfastates. i.e. even if matched multi-lines, many states aren't necessarily built. Next, I checked performance for each case in worst text. It's best in 10 times. yes `printf '%0100d\n'` | head -2 | sed -e '1s/^0/a/; $s/0$/b/' >t yes t | head -1000000 | xargs cat >u time -p env LANG=C src/grep '\(a\|z\)\(.\{1,6\}\)\{10\}\(b\|z\)' u real 1.26 user 0.95 sys 0.28 time -p env LANG=en_US.UTF-8 src/grep '\(a\|z\)[x-y]\{10\}\(b\|z\)' u real 0.74 user 0.45 sys 0.27 Though, the later is fast, I like the former, because it's very simple. the later is complicated, also needs to update nleaves and depth. Norihiro --------_533DF0F5000000002C12_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 RnJvbSBkZjZkYTVkNDBhNDdhYmJjNmUzNDUxY2I5ZmFiN2E4YzllZGUxMmNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgpEYXRl OiBGcmksIDI4IE1hciAyMDE0IDE5OjI3OjAwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxLzNdIGRm YTogaW1wcm92ZSBwb3J0IHRvIGZyZWVzdGFuZGluZyBESkdQUAoKU3VnZ2VzdGVkIGJ5IEFoYXJv biBSb2JiaW5zIChCdWcjMTcwNTYpLgoqIHNyYy9kZmEuYyAoc2V0bG9jYWxlKSBbIUxDX0FMTF06 IFJldHVybiBOVUxMLCBub3QgIkMiLApyZXZlcnRpbmcgcGFydCBvZiBhIHJlY2VudCBjaGFuZ2Uu Cih1c2luZ19zaW1wbGVfbG9jYWxlKTogUmV0dXJuIHRydWUgaWYgc2V0bG9jYWxlIHJldHVybnMg bnVsbC4KLS0tCiBzcmMvZGZhLmMgfCA3ICsrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2RmYS5jIGIvc3JjL2Rm YS5jCmluZGV4IDRlZDIxODkuLmIyMmZlOTcgMTAwNjQ0Ci0tLSBhL3NyYy9kZmEuYworKysgYi9z cmMvZGZhLmMKQEAgLTM3LDcgKzM3LDcgQEAKIC8qIEdhd2sgZG9lc24ndCB1c2UgR251bGliLCBz byBkb24ndCBhc3N1bWUgdGhhdCBzZXRsb2NhbGUgYW5kCiAgICBzdGF0aWNfYXNzZXJ0IGFyZSBw cmVzZW50LiAgKi8KICNpZm5kZWYgTENfQUxMCi0jIGRlZmluZSBzZXRsb2NhbGUoY2F0ZWdvcnks IGxvY2FsZSkgIkMiCisjIGRlZmluZSBzZXRsb2NhbGUoY2F0ZWdvcnksIGxvY2FsZSkgTlVMTAog I2VuZGlmCiAjaWZuZGVmIHN0YXRpY19hc3NlcnQKICMgZGVmaW5lIHN0YXRpY19hc3NlcnQoY29u ZCwgZGlhZ25vc3RpYykgXApAQCAtODUwLDggKzg1MCw5IEBAIHVzaW5nX3NpbXBsZV9sb2NhbGUg KHZvaWQpCiAgICAgICBpZiAodW5pYnl0ZV9jIDwgMCkKICAgICAgICAgewogICAgICAgICAgIGNo YXIgY29uc3QgKmxvY2FsZSA9IHNldGxvY2FsZSAoTENfQUxMLCBOVUxMKTsKLSAgICAgICAgICB1 bmlieXRlX2MgPSAobG9jYWxlICYmIChTVFJFUSAobG9jYWxlLCAiQyIpCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfHwgU1RSRVEgKGxvY2FsZSwgIlBPU0lYIikpKTsKKyAgICAg ICAgICB1bmlieXRlX2MgPSAoIWxvY2FsZQorICAgICAgICAgICAgICAgICAgICAgICB8fCBTVFJF USAobG9jYWxlLCAiQyIpCisgICAgICAgICAgICAgICAgICAgICAgIHx8IFNUUkVRIChsb2NhbGUs ICJQT1NJWCIpKTsKICAgICAgICAgfQogICAgICAgcmV0dXJuIHVuaWJ5dGVfYzsKICAgICB9Ci0t IAoxLjkuMQoKCkZyb20gZDgwYzlhNWRhMmM1ZTA0ODQ0YWMzOWY4Y2RkNDVlNjQyNWIyZGRlNiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTm9yaWhpcm8gVGFuYWthIDxub3JpdG5rQGtj bi5uZS5qcD4KRGF0ZTogVHVlLCAxIEFwciAyMDE0IDExOjE4OjQ0ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAyLzNdIGRmYTogYXZvaWQgcmUtYnVpbGRpbmcgYSBzdGF0ZSBidWlsdCBwcmV2aW91c2x5 CgoqIHNyYy9kZmEuYyAoZGZhZXhlYyk6IEF2b2lkIHRvIHJlLWJ1aWxkIGEgc3RhdGUgYnVpbHQg cHJldmlvdXNseS4KLS0tCiBzcmMvZGZhLmMgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9kZmEuYyBiL3NyYy9k ZmEuYwppbmRleCBiMjJmZTk3Li5iNmZiZDU4IDEwMDY0NAotLS0gYS9zcmMvZGZhLmMKKysrIGIv c3JjL2RmYS5jCkBAIC0zNTM3LDcgKzM1MzcsOCBAQCBkZmFleGVjIChzdHJ1Y3QgZGZhICpkLCBj aGFyIGNvbnN0ICpiZWdpbiwgY2hhciAqZW5kLAogCiAgICAgICBpZiAocyA+PSAwKQogICAgICAg ICB7Ci0gICAgICAgICAgYnVpbGRfc3RhdGUgKHMsIGQpOworICAgICAgICAgIGlmICghZC0+dHJh bnNbc10pCisgICAgICAgICAgICBidWlsZF9zdGF0ZSAocywgZCk7CiAgICAgICAgICAgdHJhbnMg PSBkLT50cmFuczsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotLSAKMS45LjEKCgpG cm9tIGYxOGEwOTZiZThhMGJlMjk0MWY5NzExMWEzODcwZTE0YThhYmI2MTMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IE5vcmloaXJvIFRhbmFrYSA8bm9yaXRua0BrY24ubmUuanA+CkRh dGU6IFNhdCwgMjIgTWFyIDIwMTQgMTc6MDA6MzYgKzA5MDAKU3ViamVjdDogW1BBVENIIDMvM10g Z3JlcDogcHJpbnQgdGhlIGRldGFpbCBvZiBERkEgc3RhdGVzCgoqIHNyYy9kZmEuYyAocHJ0b2sp OiByZXBsYWNlIGAlYycgdG8gYCUwMngnIGluIGZvcm1hdCBvZiBwcmludGYoKS4KKHN0YXRlX2lu ZGV4KTogcHJpbnQgZGV0YWlsIG9mIG5ldyBzdGF0ZS4KKGRmYXN0YXRlKSBwcmludCBkZXRhaWwg b2YgdGhlIHByb2Nlc3MuCi0tLQogc3JjL2RmYS5jIHwgNTIgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDUxIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvZGZhLmMgYi9zcmMvZGZh LmMKaW5kZXggYjZmYmQ1OC4uZmM0ZWRjYiAxMDA2NDQKLS0tIGEvc3JjL2RmYS5jCisrKyBiL3Ny Yy9kZmEuYwpAQCAtNTU2LDcgKzU1Niw3IEBAIHBydG9rICh0b2tlbiB0KQogICBlbHNlIGlmICh0 IDwgTk9UQ0hBUikKICAgICB7CiAgICAgICBpbnQgY2ggPSB0OwotICAgICAgZnByaW50ZiAoc3Rk ZXJyLCAiJWMiLCBjaCk7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICIweCUwMngiLCBjaCk7CiAg ICAgfQogICBlbHNlCiAgICAgewpAQCAtMjE1NSw2ICsyMTU1LDI4IEBAIHN0YXRlX2luZGV4IChz dHJ1Y3QgZGZhICpkLCBwb3NpdGlvbl9zZXQgY29uc3QgKnMsIGludCBjb250ZXh0KQogICAgICAg ICByZXR1cm4gaTsKICAgICB9CiAKKyNpZmRlZiBERUJVRworICBmcHJpbnRmIChzdGRlcnIsICJu ZXcgc3RhdGUgJWQ6XG4gIHBvc2l0aW9uOiIsIGkpOworICBmb3IgKGogPSAwOyBqIDwgcy0+bmVs ZW07ICsraikKKyAgICB7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICIgJWQ6Iiwgcy0+ZWxlbXNb al0uaW5kZXgpOworICAgICAgcHJ0b2sgKGQtPnRva2Vuc1tzLT5lbGVtc1tqXS5pbmRleF0pOwor ICAgIH0KKyAgZnByaW50ZiAoc3RkZXJyLCAiXG4gIGNvbnRleHQ6Iik7CisgIGlmIChjb250ZXh0 ICYgQ1RYX0FOWSkKKyAgICBmcHJpbnRmIChzdGRlcnIsICIgQ1RYX0FOWSIpOworICBlbHNlCisg ICAgeworICAgICAgaWYgKGNvbnRleHQgJiBDVFhfTk9ORSkKKyAgICAgICAgZnByaW50ZiAoc3Rk ZXJyLCAiIENUWF9OT05FIik7CisgICAgICBpZiAoY29udGV4dCAmIENUWF9ORVdMSU5FKQorICAg ICAgICBmcHJpbnRmIChzdGRlcnIsICIgQ1RYX0xFVFRFUiIpOworICAgICAgaWYgKGNvbnRleHQg JiBDVFhfTkVXTElORSkKKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiIENUWF9ORVdMSU5FIik7 CisgICAgfQorICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworI2VuZGlmCisKICAgLyogV2UnbGwg aGF2ZSB0byBjcmVhdGUgYSBuZXcgc3RhdGUuICAqLwogICBSRUFMTE9DX0lGX05FQ0VTU0FSWSAo ZC0+c3RhdGVzLCBkLT5zYWxsb2MsIGQtPnNpbmRleCArIDEpOwogICBkLT5zdGF0ZXNbaV0uaGFz aCA9IGhhc2g7CkBAIC0yNjI2LDYgKzI2NDgsMTAgQEAgZGZhc3RhdGUgKHN0YXRlX251bSBzLCBz dHJ1Y3QgZGZhICpkLCBzdGF0ZV9udW0gdHJhbnNbXSkKICAgaW50IG5leHRfaXNudF8xc3RfYnl0 ZSA9IDA7ICAgLyogRmxhZyBpZiB3ZSBjYW4ndCBhZGQgc3RhdGUwLiAgKi8KICAgc2l6ZV90IGks IGosIGs7CiAKKyNpZmRlZiBERUJVRworICBmcHJpbnRmIChzdGRlcnIsICIqKiogREZBIHN0YXRl ICVkICoqKlxuIiwgcyk7CisjZW5kaWYKKwogICBNQUxMT0MgKGdycHMsIE5PVENIQVIpOwogICBN QUxMT0MgKGxhYmVscywgTk9UQ0hBUik7CiAKQEAgLTI2NzgsNiArMjcwNCwxNCBAQCBkZmFzdGF0 ZSAoc3RhdGVfbnVtIHMsIHN0cnVjdCBkZmEgKmQsIHN0YXRlX251bSB0cmFuc1tdKQogICAgICAg ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorI2lmZGVmIERFQlVHCisgICAgICBmcHJpbnRm IChzdGRlcnIsICJwb3NpdGlvbiAlZDoiLCBwb3MuaW5kZXgpOworICAgICAgZm9yIChqID0gMDsg aiA8IE5PVENIQVI7IGorKykKKyAgICAgIGlmICh0c3RiaXQgKGosICBtYXRjaGVzKSkKKyAgICAg ICAgZnByaW50ZiAoc3RkZXJyLCAiIDB4JTAyeCIsIGopOworICAgICAgZnByaW50ZiAoc3RkZXJy LCAiXG4iKTsKKyNlbmRpZgorCiAgICAgICBmb3IgKGogPSAwOyBqIDwgbmdycHM7ICsraikKICAg ICAgICAgewogICAgICAgICAgIC8qIElmIG1hdGNoZXMgY29udGFpbnMgYSBzaW5nbGUgY2hhcmFj dGVyIG9ubHksIGFuZCB0aGUgY3VycmVudApAQCAtMjgzNiw2ICsyODcwLDIyIEBAIGRmYXN0YXRl IChzdGF0ZV9udW0gcywgc3RydWN0IGRmYSAqZCwgc3RhdGVfbnVtIHRyYW5zW10pCiAgICAgICBl bHNlCiAgICAgICAgIHN0YXRlX2xldHRlciA9IHN0YXRlOwogCisjaWZkZWYgREVCVUcKKyAgICAg IGZwcmludGYgKHN0ZGVyciwgImdyb3VwICVkOlxuICBuZXh0cG9zIDoiLCBpKTsKKyAgICAgIGZv ciAoaiA9IDA7IGogPCBncnBzW2ldLm5lbGVtOyArK2opCisgICAgICAgIHsKKyAgICAgICAgICBm cHJpbnRmIChzdGRlcnIsICIgJWQ6IiwgZ3Jwc1tpXS5lbGVtc1tqXSk7CisgICAgICAgICAgcHJ0 b2sgKGQtPnRva2Vuc1tncnBzW2ldLmVsZW1zW2pdXSk7CisgICAgICAgIH0KKyAgICAgIGZwcmlu dGYgKHN0ZGVyciwgIlxuICBmb2xsb3dzIDoiKTsKKyAgICAgIGZvciAoaiA9IDA7IGogPCBmb2xs b3dzLm5lbGVtOyArK2opCisgICAgICAgIHsKKyAgICAgICAgICBmcHJpbnRmIChzdGRlcnIsICIg JWQ6IiwgZm9sbG93cy5lbGVtc1tqXS5pbmRleCk7CisgICAgICAgICAgcHJ0b2sgKGQtPnRva2Vu c1tmb2xsb3dzLmVsZW1zW2pdLmluZGV4XSk7CisgICAgICAgIH0KKyAgICAgIGZwcmludGYgKHN0 ZGVyciwgIlxuICBuZXh0c3RhdGU6ICVkLCAlZCwgJWRcbiIsIHN0YXRlLCBzdGF0ZV9uZXdsaW5l LCBzdGF0ZV9sZXR0ZXIpOworI2VuZGlmCisKICAgICAgIC8qIFNldCB0aGUgdHJhbnNpdGlvbnMg Zm9yIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBjdXJyZW50IGxhYmVsLiAgKi8KICAgICAgIGZvciAo aiA9IDA7IGogPCBDSEFSQ0xBU1NfSU5UUzsgKytqKQogICAgICAgICBmb3IgKGsgPSAwOyBrIDwg SU5UQklUUzsgKytrKQotLSAKMS45LjEKCg== --------_533DF0F5000000002C12_MULTIPART_MIXED_-- From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 07 01:09:05 2014 Received: (at 16966-done) by debbugs.gnu.org; 7 Apr 2014 05:09:05 +0000 Received: from localhost ([127.0.0.1]:38669 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WX1nr-0001VT-EI for submit@debbugs.gnu.org; Mon, 07 Apr 2014 01:09:04 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:56557) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WX1nm-0001V1-EL for 16966-done@debbugs.gnu.org; Mon, 07 Apr 2014 01:09:00 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id A107439E8018; Sun, 6 Apr 2014 22:08:57 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vfEWxHWM4EnT; Sun, 6 Apr 2014 22:08:53 -0700 (PDT) Received: from [192.168.1.9] (pool-108-0-233-62.lsanca.fios.verizon.net [108.0.233.62]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 67CD239E8013; Sun, 6 Apr 2014 22:08:53 -0700 (PDT) Message-ID: <534232E5.7090408@cs.ucla.edu> Date: Sun, 06 Apr 2014 22:08:53 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Norihiro Tanaka Subject: Re: bug#16966: [PATCH] grep: optimization with the superset of DFA References: <20140308144141.021A.27F6AC2D@kcn.ne.jp> <20140310003306.3EB5.27F6AC2D@kcn.ne.jp> <20140329022028.0637.27F6AC2D@kcn.ne.jp> In-Reply-To: <20140329022028.0637.27F6AC2D@kcn.ne.jp> Content-Type: multipart/mixed; boundary="------------010005050004090208080407" X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 16966-done Cc: Paolo Bonzini , 16966-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) This is a multi-part message in MIME format. --------------010005050004090208080407 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Norihiro Tanaka wrote: > I rebased this patch, and added four fixes to it. Thanks. This patch seems like a real performance win for grep -i in the usual case, so I installed it into the master. If we run into performance problems in unusual cases I suppose we can look into them as they arise. In reviewing the patch I found one memory-access typo: > - if ((end = memchr(beg, eol, buflim - beg)) != NULL) > ... > + if ((end = memchr(next_beg, eol, buflim - beg)) != NULL) That last "beg" should be "next_beg". I merged the patch into the current master on Savannah (first attached file) and then applied a fixup patch (second attached file) that fixes this bug and makes some other minor related improvements, e.g., using memrchr rather than looking for eol by hand. --------------010005050004090208080407 Content-Type: text/plain; charset=UTF-8; name="0001-grep-optimization-with-the-superset-of-DFA.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-grep-optimization-with-the-superset-of-DFA.patch" RnJvbSAzN2Y5NmNkZDIzOGEyZTRhOGVmNTQ0MmQyNmViNGYzZDk3MDYyNDQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOb3JpaGlybyBUYW5ha2EgPG5vcml0bmtAa2NuLm5l LmpwPgpEYXRlOiBTdW4sIDYgQXByIDIwMTQgMTM6NDI6MDggLTA3MDAKU3ViamVjdDogW1BB VENIIDEvMl0gZ3JlcDogb3B0aW1pemF0aW9uIHdpdGggdGhlIHN1cGVyc2V0IG9mIERGQQoK VGhlIHN1cGVyc2V0IG9mIGEgREZBIGlzIGxpa2UgdGhlIERGQSwgZXhjZXB0IHRoYXQgZm9y IHNwZWVkCkFOWUNIQVIsIE1CQ1NFVCBhbmQgQkFDS1JFRiBhcmUgcmVwbGFjZWQgYnkgKENT RVQgZnVsbCBiaXRzKSBTVEFSLAphbmQgbWJfY3VyX21heCBpcyAxLiAgRm9yIGV4YW1wbGUs IGZvciAnYVwoYlwpY1wxJzoKICBvcmlnaW5hbDogYSBiIENBVCBjIENBVCBCQUNLUkVGIENB VAogIHN1cGVyc2V0OiBhIGIgQ0FUIGMgQ0FUIENTRVQgU1RBUiBDQVQgIChUaGUgQ1NFVCBo YXMgYWxsIGJpdHMgc2V0LikKSWYgYSBzdHJpbmcgbWF0Y2hlcyBhIERGQSwgaXQgbWF0Y2hl cyB0aGUgREZBJ3Mgc3VwZXJzZXQuClVzaW5nIHRoZSBzdXBlcnNldCB0byBmaWx0ZXIgY2Fu IGRyYW1hdGljYWxseSBpbXByb3ZlIHBlcmZvcm1hbmNlLApvdmVyIDIwMHggaW4gc29tZSBj YXNlcy4gIFNlZSA8aHR0cDovL2J1Z3MuZ251Lm9yZy8xNjk2Nj4uCiogc3JjL2RmYS5jIChz dHJ1Y3QgZGZhKTogTmV3IG1lbWJlciAnc3VwZXJzZXQnLgooZGZhaGludCwgZGZhc3VwZXJz ZXQpOiBOZXcgZnVuY3Rpb25zLgooZGZhY29tcCk6IENyZWF0ZSBhbmQgYW5hbHl6ZSB0aGUg c3VwZXJzZXQuCihkZmFmcmVlKTogRnJlZSBvbmx5IG5vbi1OVUxMIGl0ZW1zLgooZGZhYWxs b2MpOiBJbml0aWFsaXplIHN1cGVyc2V0IG1lbWJlci4KKGRmYW9wdGltaXplKTogSWYgc3Vj Y2VlZCBpbiBvcHRpbWl6YXRpb24gZm9yIFVURi04IGxvY2FsZSwgZG9uJ3QgdXNlCnRoZSBz dXBlcnNldC4KKiBzcmMvZGZhLmggKGRmYWhpbnQpOiBOZXcgZGVjbC4KKiBzcmMvZGZhc2Vh cmNoLmMgKEVHZXhlY3V0ZSk6IFVzZSBkZmFoaW50LgotLS0KIHNyYy9kZmEuYyAgICAgICB8 IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLQogc3JjL2RmYS5oICAgICAgIHwgICAzICsrCiBzcmMvZGZhc2VhcmNoLmMgfCAg NjMgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE3MyBp bnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGZhLmMg Yi9zcmMvZGZhLmMKaW5kZXggZWY1YzhhOS4uZDg4ZDA3NyAxMDA2NDQKLS0tIGEvc3JjL2Rm YS5jCisrKyBiL3NyYy9kZmEuYwpAQCAtMzczLDYgKzM3Myw5IEBAIHN0cnVjdCBkZmEKICAg c2l6ZV90IG5tYmNzZXRzOwogICBzaXplX3QgbWJjc2V0c19hbGxvYzsKIAorICAvKiBGaWVs ZHMgZmlsbGVkIGJ5IHRoZSBzdXBlcnNldC4gICovCisgIHN0cnVjdCBkZmEgKnN1cGVyc2V0 OyAgICAgICAgICAgICAvKiBIaW50IG9mIHRoZSBkZmEuICAqLworCiAgIC8qIEZpZWxkcyBm aWxsZWQgYnkgdGhlIHN0YXRlIGJ1aWxkZXIuICAqLwogICBkZmFfc3RhdGUgKnN0YXRlczsg ICAgICAgICAgICAvKiBTdGF0ZXMgb2YgdGhlIGRmYS4gICovCiAgIHN0YXRlX251bSBzaW5k ZXg7ICAgICAgICAgICAgIC8qIEluZGV4IGZvciBhZGRpbmcgbmV3IHN0YXRlcy4gICovCkBA IC0zNDg4LDYgKzM0OTEsMjEgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25z dCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICB9CiB9CiAKK3NpemVfdAorZGZhaGludCAoc3Ry dWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwgc2l6ZV90ICpjb3Vu dCkKK3sKKyAgY2hhciBjb25zdCAqbWF0Y2g7CisKKyAgaWYgKGQtPnN1cGVyc2V0ID09IE5V TEwpCisgICAgcmV0dXJuIChzaXplX3QpIC0yOworCisgIG1hdGNoID0gZGZhZXhlYyAoZC0+ c3VwZXJzZXQsIGJlZ2luLCBlbmQsIDEsIGNvdW50LCBOVUxMKTsKKyAgaWYgKG1hdGNoID09 IE5VTEwpCisgICAgcmV0dXJuIChzaXplX3QpIC0xOworCisgIHJldHVybiBtYXRjaCAtIGJl Z2luOworfQorCiBzdGF0aWMgdm9pZAogZnJlZV9tYmRhdGEgKHN0cnVjdCBkZmEgKmQpCiB7 CkBAIC0zNTc5LDYgKzM1OTcsODEgQEAgZGZhb3B0aW1pemUgKHN0cnVjdCBkZmEgKmQpCiAg IGQtPm1iX2N1cl9tYXggPSAxOwogfQogCitzdGF0aWMgdm9pZAorZGZhc3VwZXJzZXQgKHN0 cnVjdCBkZmEgKmQpCit7CisgIHNpemVfdCBpLCBqOworICBjaGFyY2xhc3MgY2NsOworICBi b29sIGhhdmVfYWNoYXIgPSBmYWxzZTsKKyAgYm9vbCBoYXZlX25jaGFyID0gZmFsc2U7CisK KyAgZGZhID0gZC0+c3VwZXJzZXQgPSBkZmFhbGxvYyAoKTsKKyAgKmQtPnN1cGVyc2V0ID0g KmQ7CisgIGQtPnN1cGVyc2V0LT5tYl9jdXJfbWF4ID0gMTsKKyAgZC0+c3VwZXJzZXQtPm11 bHRpYnl0ZV9wcm9wID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPm1iY3NldHMgPSBOVUxMOwor ICBkLT5zdXBlcnNldC0+c3VwZXJzZXQgPSBOVUxMOworICBkLT5zdXBlcnNldC0+c3RhdGVz ID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPmZvbGxvd3MgPSBOVUxMOworICBkLT5zdXBlcnNl dC0+dHJhbnMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+cmVhbHRyYW5zID0gTlVMTDsKKyAg ZC0+c3VwZXJzZXQtPmZhaWxzID0gTlVMTDsKKyAgZC0+c3VwZXJzZXQtPnN1Y2Nlc3MgPSBO VUxMOworICBkLT5zdXBlcnNldC0+bmV3bGluZXMgPSBOVUxMOworICBkLT5zdXBlcnNldC0+ bXVzdHMgPSBOVUxMOworCisgIE1BTExPQyAoZC0+c3VwZXJzZXQtPmNoYXJjbGFzc2VzLCBk LT5zdXBlcnNldC0+Y2FsbG9jKTsKKyAgZm9yIChpID0gMDsgaSA8IGQtPmNpbmRleDsgaSsr KQorICAgIGNvcHlzZXQgKGQtPmNoYXJjbGFzc2VzW2ldLCBkLT5zdXBlcnNldC0+Y2hhcmNs YXNzZXNbaV0pOworCisgIGQtPnN1cGVyc2V0LT50YWxsb2MgPSBkLT50aW5kZXggKiAyOwor ICBNQUxMT0MgKGQtPnN1cGVyc2V0LT50b2tlbnMsIGQtPnN1cGVyc2V0LT50YWxsb2MpOwor CisgIGZvciAoaSA9IGogPSAwOyBpIDwgZC0+dGluZGV4OyBpKyspCisgICAgeworICAgICAg c3dpdGNoIChkLT50b2tlbnNbaV0pCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBBTllDSEFS OgorICAgICAgICBjYXNlIE1CQ1NFVDoKKyAgICAgICAgY2FzZSBCQUNLUkVGOgorICAgICAg ICAgIHplcm9zZXQgKGNjbCk7CisgICAgICAgICAgbm90c2V0IChjY2wpOworICAgICAgICAg IGQtPnN1cGVyc2V0LT50b2tlbnNbaisrXSA9IENTRVQgKyBjaGFyY2xhc3NfaW5kZXggKGNj bCk7CisgICAgICAgICAgZC0+c3VwZXJzZXQtPnRva2Vuc1tqKytdID0gU1RBUjsKKyAgICAg ICAgICBpZiAoZC0+dG9rZW5zW2kgKyAxXSA9PSBRTUFSSyB8fCBkLT50b2tlbnNbaSArIDFd ID09IFNUQVIKKyAgICAgICAgICAgICAgfHwgZC0+dG9rZW5zW2kgKyAxXSA9PSBQTFVTKQor ICAgICAgICAgICAgaSsrOworICAgICAgICAgIGhhdmVfYWNoYXIgPSB0cnVlOworICAgICAg ICAgIGJyZWFrOworICAgICAgICBjYXNlIEJFR1dPUkQ6CisgICAgICAgIGNhc2UgRU5EV09S RDoKKyAgICAgICAgY2FzZSBMSU1XT1JEOgorICAgICAgICBjYXNlIE5PVExJTVdPUkQ6Cisg ICAgICAgICAgaWYgKE1CX0NVUl9NQVggPiAxKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICAvKiBJZ25vcmUgdGhlc2UgY29uc3RyYWludHMuICAqLworICAgICAgICAgICAgICBk LT5zdXBlcnNldC0+dG9rZW5zW2orK10gPSBFTVBUWTsKKyAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZC0+c3VwZXJz ZXQtPnRva2Vuc1tqKytdID0gZC0+dG9rZW5zW2ldOworICAgICAgICAgIGlmICgoZC0+dG9r ZW5zW2ldID49IDAgJiYgZC0+dG9rZW5zW2ldIDwgTk9UQ0hBUikKKyAgICAgICAgICAgICAg IHx8IGQtPnRva2Vuc1tpXSA+PSBDU0VUKQorICAgICAgICAgICAgaGF2ZV9uY2hhciA9IHRy dWU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgaWYgKChkLT5t Yl9jdXJfbWF4ID09IDEgJiYgIWhhdmVfYWNoYXIpIHx8ICFoYXZlX25jaGFyKQorICAgIHsK KyAgICAgIGRmYWZyZWUgKGQtPnN1cGVyc2V0KTsKKyAgICAgIGQtPnN1cGVyc2V0ID0gTlVM TDsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgZC0+c3VwZXJzZXQtPnRpbmRleCA9IGo7 Cit9CisKIC8qIFBhcnNlIGFuZCBhbmFseXplIGEgc2luZ2xlIHN0cmluZyBvZiB0aGUgZ2l2 ZW4gbGVuZ3RoLiAgKi8KIHZvaWQKIGRmYWNvbXAgKGNoYXIgY29uc3QgKnMsIHNpemVfdCBs ZW4sIHN0cnVjdCBkZmEgKmQsIGludCBzZWFyY2hmbGFnKQpAQCAtMzU4OCw3ICszNjgxLDEw IEBAIGRmYWNvbXAgKGNoYXIgY29uc3QgKnMsIHNpemVfdCBsZW4sIHN0cnVjdCBkZmEgKmQs IGludCBzZWFyY2hmbGFnKQogICBkZmFwYXJzZSAocywgbGVuLCBkKTsKICAgZGZhbXVzdCAo ZCk7CiAgIGRmYW9wdGltaXplIChkKTsKKyAgZGZhc3VwZXJzZXQgKGQpOwogICBkZmFhbmFs eXplIChkLCBzZWFyY2hmbGFnKTsKKyAgaWYgKGQtPnN1cGVyc2V0ICE9IE5VTEwpCisgICAg ZGZhYW5hbHl6ZSAoZC0+c3VwZXJzZXQsIHNlYXJjaGZsYWcpOwogfQogCiAvKiBGcmVlIHRo ZSBzdG9yYWdlIGhlbGQgYnkgdGhlIGNvbXBvbmVudHMgb2YgYSBkZmEuICAqLwpAQCAtMzYw NCwzMCArMzcwMCw0MiBAQCBkZmFmcmVlIChzdHJ1Y3QgZGZhICpkKQogICBpZiAoZC0+bWJf Y3VyX21heCA+IDEpCiAgICAgZnJlZV9tYmRhdGEgKGQpOwogCi0gIGZvciAoaSA9IDA7IGkg PCBkLT5zaW5kZXg7ICsraSkKKyAgaWYgKGQtPnN0YXRlcyAhPSBOVUxMKQogICAgIHsKLSAg ICAgIGZyZWUgKGQtPnN0YXRlc1tpXS5lbGVtcy5lbGVtcyk7Ci0gICAgICBmcmVlIChkLT5z dGF0ZXNbaV0ubWJwcy5lbGVtcyk7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgZC0+c2luZGV4 OyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICBmcmVlIChkLT5zdGF0ZXNbaV0uZWxlbXMu ZWxlbXMpOworICAgICAgICAgIGZyZWUgKGQtPnN0YXRlc1tpXS5tYnBzLmVsZW1zKTsKKyAg ICAgICAgfQorICAgICAgZnJlZSAoZC0+c3RhdGVzKTsKICAgICB9Ci0gIGZyZWUgKGQtPnN0 YXRlcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCBkLT50aW5kZXg7ICsraSkKLSAgICBmcmVlIChk LT5mb2xsb3dzW2ldLmVsZW1zKTsKLSAgZnJlZSAoZC0+Zm9sbG93cyk7Ci0gIGZvciAoaSA9 IDA7IGkgPCBkLT50cmFsbG9jOyArK2kpCisgIGlmIChkLT5mb2xsb3dzICE9IE5VTEwpCiAg ICAgewotICAgICAgZnJlZSAoZC0+dHJhbnNbaV0pOwotICAgICAgZnJlZSAoZC0+ZmFpbHNb aV0pOworICAgICAgZm9yIChpID0gMDsgaSA8IGQtPnRpbmRleDsgKytpKQorICAgICAgICBm cmVlIChkLT5mb2xsb3dzW2ldLmVsZW1zKTsKKyAgICAgIGZyZWUgKGQtPmZvbGxvd3MpOwog ICAgIH0KKyAgaWYgKGQtPnRyYW5zICE9IE5VTEwpCisgICAgZm9yIChpID0gMDsgaSA8IGQt PnRyYWxsb2M7ICsraSkKKyAgICAgIHsKKyAgICAgICAgZnJlZSAoZC0+dHJhbnNbaV0pOwor ICAgICAgICBmcmVlIChkLT5mYWlsc1tpXSk7CisgICAgICB9CisKICAgZnJlZSAoZC0+cmVh bHRyYW5zKTsKICAgZnJlZSAoZC0+ZmFpbHMpOwogICBmcmVlIChkLT5uZXdsaW5lcyk7CiAg IGZyZWUgKGQtPnN1Y2Nlc3MpOworCiAgIGZvciAoZG0gPSBkLT5tdXN0czsgZG07IGRtID0g bmRtKQogICAgIHsKICAgICAgIG5kbSA9IGRtLT5uZXh0OwogICAgICAgZnJlZSAoZG0tPm11 c3QpOwogICAgICAgZnJlZSAoZG0pOwogICAgIH0KKworICBpZiAoZC0+c3VwZXJzZXQgIT0g TlVMTCkKKyAgICBkZmFmcmVlIChkLT5zdXBlcnNldCk7CiB9CiAKIC8qIEhhdmluZyBmb3Vu ZCB0aGUgcG9zdGZpeCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVndWxhciBleHByZXNzaW9u LApAQCAtNDEzNSw3ICs0MjQzLDkgQEAgZG9uZToKIHN0cnVjdCBkZmEgKgogZGZhYWxsb2Mg KHZvaWQpCiB7Ci0gIHJldHVybiB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBkZmEpKTsKKyAg c3RydWN0IGRmYSAqZCA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGRmYSkpOworICBkLT5z dXBlcnNldCA9IE5VTEw7CisgIHJldHVybiBkOwogfQogCiBzdHJ1Y3QgZGZhbXVzdCAqX0dM X0FUVFJJQlVURV9QVVJFCmRpZmYgLS1naXQgYS9zcmMvZGZhLmggYi9zcmMvZGZhLmgKaW5k ZXggMjRmYmNiZS4uYWQ5NzQ5OCAxMDA2NDQKLS0tIGEvc3JjL2RmYS5oCisrKyBiL3NyYy9k ZmEuaApAQCAtNjcsNiArNjcsOSBAQCBleHRlcm4gdm9pZCBkZmFjb21wIChjaGFyIGNvbnN0 ICosIHNpemVfdCwgc3RydWN0IGRmYSAqLCBpbnQpOwogICAgdG8gZGVjaWRlIHdoZXRoZXIg dG8gZmFsbCBiYWNrIG9uIGEgYmFja3RyYWNraW5nIG1hdGNoZXIuICovCiBleHRlcm4gY2hh ciAqZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVu ZCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3bGluZSwgc2l6ZV90ICpjb3VudCwg aW50ICpiYWNrcmVmKTsKK2V4dGVybiBzaXplX3QgZGZhaGludCAoc3RydWN0IGRmYSAqZCwg Y2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90ICpjb3VudCk7CisKIAogLyogRnJlZSB0aGUgc3RvcmFnZSBoZWxkIGJ5IHRoZSBj b21wb25lbnRzIG9mIGEgc3RydWN0IGRmYS4gKi8KIGV4dGVybiB2b2lkIGRmYWZyZWUgKHN0 cnVjdCBkZmEgKik7CmRpZmYgLS1naXQgYS9zcmMvZGZhc2VhcmNoLmMgYi9zcmMvZGZhc2Vh cmNoLmMKaW5kZXggY2EwMDUwNS4uMzgzYzJhZCAxMDA2NDQKLS0tIGEvc3JjL2RmYXNlYXJj aC5jCisrKyBiL3NyYy9kZmFzZWFyY2guYwpAQCAtMjM2LDcgKzIzNiw2IEBAIEVHZXhlY3V0 ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICptYXRjaF9zaXplLAog ICAgICAgICAgICAgICBtYXRjaCA9IGJlZzsKICAgICAgICAgICAgICAgd2hpbGUgKGJlZyA+ IGJ1ZiAmJiBiZWdbLTFdICE9IGVvbCkKICAgICAgICAgICAgICAgICAtLWJlZzsKLSAgICAg ICAgICAgICAgY2hhciBjb25zdCAqZGZhX3N0YXJ0ID0gYmVnOwogICAgICAgICAgICAgICBp ZiAoa3dzbS5pbmRleCA8IGt3c2V0X2V4YWN0X21hdGNoZXMpCiAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgaWYgKG1iX3N0YXJ0IDwgYmVnKQpAQCAtMjQ4LDI5ICsy NDcsNjUgQEAgRUdleGVjdXRlIChjaGFyIGNvbnN0ICpidWYsIHNpemVfdCBzaXplLCBzaXpl X3QgKm1hdGNoX3NpemUsCiAgICAgICAgICAgICAgICAgICAvKiBUaGUgbWF0Y2hlZCBsaW5l IHN0YXJ0cyBpbiB0aGUgbWlkZGxlIG9mIGEgbXVsdGlieXRlCiAgICAgICAgICAgICAgICAg ICAgICBjaGFyYWN0ZXIuICBQZXJmb3JtIHRoZSBERkEgc2VhcmNoIHN0YXJ0aW5nIGZyb20g dGhlCiAgICAgICAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIG5leHQgY2hhcmFj dGVyLiAgKi8KLSAgICAgICAgICAgICAgICAgIGRmYV9zdGFydCA9IG1iX3N0YXJ0OworICAg ICAgICAgICAgICAgICAgaWYgKGRmYWV4ZWMgKGRmYSwgbWJfc3RhcnQsIChjaGFyICopIGVu ZCwgMCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmFja3JlZikg PT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgaWYgKGRmYWhpbnQgKGRmYSwgYmVnLCAoY2hhciAqKSBlbmQsIE5VTEwpID09 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemVfdCkgLTEpCisgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgaWYgKGRmYWV4ZWMg KGRmYSwgYmVnLCAoY2hhciAqKSBlbmQsIDAsIE5VTEwsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmJhY2tyZWYpID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgaWYgKGRmYWV4ZWMg KGRmYSwgZGZhX3N0YXJ0LCAoY2hhciAqKSBlbmQsIDAsIE5VTEwsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAmYmFja3JlZikgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBjb250 aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgIC8qIE5vIGdvb2QgZml4ZWQgc3RyaW5nczsgc3RhcnQgd2l0aCBERkEu ICovCi0gICAgICAgICAgICAgIGNoYXIgY29uc3QgKm5leHRfYmVnID0gZGZhZXhlYyAoZGZh LCBiZWcsIChjaGFyICopIGJ1ZmxpbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAwLCBOVUxMLCAmYmFja3JlZik7Ci0gICAgICAgICAgICAgIC8q IElmIHRoZXJlJ3Mgbm8gbWF0Y2gsIG9yIGlmIHdlJ3ZlIG1hdGNoZWQgdGhlIHNlbnRpbmVs LAotICAgICAgICAgICAgICAgICB3ZSdyZSBkb25lLiAgKi8KLSAgICAgICAgICAgICAgaWYg KG5leHRfYmVnID09IE5VTEwgfHwgbmV4dF9iZWcgPT0gYnVmbGltKQotICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LCBjb3VudDsKKyAgICAg ICAgICAgICAgY2hhciBjb25zdCAqbmV4dF9iZWc7CisgICAgICAgICAgICAgIGNvdW50ID0g MDsKKyAgICAgICAgICAgICAgb2Zmc2V0ID0gZGZhaGludCAoZGZhLCBiZWcsIChjaGFyICop IGJ1ZmxpbSwgJmNvdW50KTsKKyAgICAgICAgICAgICAgaWYgKG9mZnNldCA9PSAoc2l6ZV90 KSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgICAgICAgICAgIGlm IChvZmZzZXQgPT0gKHNpemVfdCkgLTIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgLyogTm8gdXNlIGhpbnQuICovCisgICAgICAgICAgICAgICAgICBuZXh0X2Jl ZyA9IGRmYWV4ZWMgKGRmYSwgYmVnLCAoY2hhciAqKSBidWZsaW0sIDAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICZiYWNrcmVmKTsKKyAgICAgICAg ICAgICAgICAgIC8qIElmIHRoZXJlJ3Mgbm8gbWF0Y2gsIG9yIGlmIHdlJ3ZlIG1hdGNoZWQg dGhlIHNlbnRpbmVsLAorICAgICAgICAgICAgICAgICAgICAgd2UncmUgZG9uZS4gICovCisg ICAgICAgICAgICAgICAgICBpZiAobmV4dF9iZWcgPT0gTlVMTCB8fCBuZXh0X2JlZyA9PSBi dWZsaW0pCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXh0X2JlZyA9 IGJlZyArIG9mZnNldDsKICAgICAgICAgICAgICAgLyogTmFycm93IGRvd24gdG8gdGhlIGxp bmUgd2UndmUgZm91bmQuICovCiAgICAgICAgICAgICAgIGJlZyA9IG5leHRfYmVnOwotICAg ICAgICAgICAgICBpZiAoKGVuZCA9IG1lbWNocihiZWcsIGVvbCwgYnVmbGltIC0gYmVnKSkg IT0gTlVMTCkKKyAgICAgICAgICAgICAgd2hpbGUgKGJlZyA+IGJ1ZiAmJiBiZWdbLTFdICE9 IGVvbCkKKyAgICAgICAgICAgICAgICAtLWJlZzsKKyAgICAgICAgICAgICAgaWYgKGNvdW50 ID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAvKiBkZmFoaW50 KCkgbWF5IG1hdGNoIGluIG11bHRpcGxlIGxpbmVzLiAgSWYgdGhhdCBpcworICAgICAgICAg ICAgICAgICAgICAgdGhlIGNhc2UsIHRyeSB0byBtYXRjaCBpbiBvbmUgbGluZS4gICovCisg ICAgICAgICAgICAgICAgICBlbmQgPSBiZWc7CisgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmICgoZW5kID0gbWVtY2hy KG5leHRfYmVnLCBlb2wsIGJ1ZmxpbSAtIGJlZykpICE9IE5VTEwpCiAgICAgICAgICAgICAg ICAgZW5kKys7CiAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbmQgPSBi dWZsaW07Ci0gICAgICAgICAgICAgIHdoaWxlIChiZWcgPiBidWYgJiYgYmVnWy0xXSAhPSBl b2wpCi0gICAgICAgICAgICAgICAgLS1iZWc7CisgICAgICAgICAgICAgIGlmIChvZmZzZXQg IT0gKHNpemVfdCkgLTIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg bmV4dF9iZWcgPSBkZmFleGVjIChkZmEsIGJlZywgKGNoYXIgKikgZW5kLCAwLCBOVUxMLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmFja3JlZik7CisgICAg ICAgICAgICAgICAgICAvKiBJZiB0aGVyZSdzIG5vIG1hdGNoLCBvciBpZiB3ZSd2ZSBtYXRj aGVkIHRoZSBzZW50aW5lbCwKKyAgICAgICAgICAgICAgICAgICAgIHdlJ3JlIGRvbmUuICAq LworICAgICAgICAgICAgICAgICAgaWYgKG5leHRfYmVnID09IE5VTEwgfHwgbmV4dF9iZWcg PT0gZW5kKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgLyogU3VjY2Vzc2Z1bCwgbm8gYmFja3Jl ZmVyZW5jZXMgZW5jb3VudGVyZWQhICovCiAgICAgICAgICAgaWYgKCFiYWNrcmVmKQotLSAK MS45LjAKCg== --------------010005050004090208080407 Content-Type: text/plain; charset=UTF-8; name="0002-grep-cleanup-DFA-superset-optimization.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-grep-cleanup-DFA-superset-optimization.patch" RnJvbSA5NTU0YWFjODExN2Q0MzM0NjQwMjQ3NmU1ZGY4ZDgzN2EzZTlhOWY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBTdW4sIDYgQXByIDIwMTQgMjE6NTQ6NTkgLTA3MDAKU3ViamVjdDogW1BBVENI IDIvMl0gZ3JlcDogY2xlYW51cCBERkEgc3VwZXJzZXQgb3B0aW1pemF0aW9uCgoqIHNyYy9k ZmEuYyAoZGZhX2NoYXJjbGFzc19pbmRleCk6IE5ldyBmdW5jdGlvbiwgd2l0aCBib2R5IG9m Cm9sZCBkZmFfY2hhcmNsYXNzIGJ1dCB3aXRoIGFuIGV4dHJhIHBhcmFtZXRlciBELgooY2hh cmNsYXNzX2luZGV4KTogUmVpbXBsZW1lbnQgaW4gdGVybXMgb2YgZGZhX2NoYXJjbGFzc19p bmRleC4KKGRmYWhpbnQpOiBDbGFyaWZ5LgooZGZhc3VwZXJzZXQpOiBEbyBub3QgYXNzaWdu IHRvICdkZmEnIHN0YXRpYyB2YXJpYWJsZS4gIEluc3RlYWQsCnVzZSBhIGxvY2FsLCBhbmQg dXNlIHRoZSBuZXcgZGZhX2NoYXJjbGFzc19pbmRleCBmdW5jdGlvbi4gIFRoaXMKZG9lc24n dCBmaXggYW55IGJ1Z3MsIGJ1dCBpdCdzIGNsZWFyZXIuICBJbml0aWFsaXplIGEgZmV3IG1v cmUKbWVtYmVycywgdG8gc2ltcGxpZnkgZGZhZnJlZS4gIENvcHkgdGhlIGNoYXJjbGFzc2Vz IHdpdGgKanVzdCBvbmUgbWVtY3B5IGNhbGwuICBEb24ndCBhc3NpZ24gbm9ubnVsbCB0byBE LT5zdXBlcnNldCB1bnRpbAppdCdzIGtub3duIHRvIGJlIHZhbGlkOyB0aGF0J3Mgc2ltcGxl ci4KKGRmYWZyZWUsIGRmYWFsbG9jKTogU2ltcGxpZnkgYmFzZWQgb24gZGZhc3VwZXJzZXQg aW5pdGlhbGl6YXRpb25zLgoqIHNyYy9kZmEuaCAoZGZhaGludCk6IEFkZCBjb21tZW50Lgoq IHNyYy9kZmFzZWFyY2guYyAoRUdleGVjdXRlKTogU2ltcGxpZnkgdXNlIG9mIG1lbWNoci4K U2ltcGxpZnkgYnkgdXNpbmcgbWVtcmNoci4gIEZpeCB0eXBvIHRoYXQgY291bGQgY2F1c2Ug YSBidWZmZXIKcmVhZCBvdmVycnVuLgotLS0KIHNyYy9kZmEuYyAgICAgICB8IDE1NSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog c3JjL2RmYS5oICAgICAgIHwgIDEwICsrKy0KIHNyYy9kZmFzZWFyY2guYyB8ICAzNyArKysr KystLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgOTggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2RmYS5jIGIvc3JjL2RmYS5jCmluZGV4IGQ4 OGQwNzcuLmI2YzEyNTAgMTAwNjQ0Ci0tLSBhL3NyYy9kZmEuYworKysgYi9zcmMvZGZhLmMK QEAgLTY3NCwyNSArNjc0LDMxIEBAIGVxdWFsIChjaGFyY2xhc3MgY29uc3QgczEsIGNoYXJj bGFzcyBjb25zdCBzMikKICAgcmV0dXJuIG1lbWNtcCAoczEsIHMyLCBzaXplb2YgKGNoYXJj bGFzcykpID09IDA7CiB9CiAKLS8qIEEgcG9pbnRlciB0byB0aGUgY3VycmVudCBkZmEgaXMg a2VwdCBoZXJlIGR1cmluZyBwYXJzaW5nLiAgKi8KLXN0YXRpYyBzdHJ1Y3QgZGZhICpkZmE7 Ci0KLS8qIEZpbmQgdGhlIGluZGV4IG9mIGNoYXJjbGFzcyBzIGluIGRmYS0+Y2hhcmNsYXNz ZXMsIG9yIGFsbG9jYXRlIGEKLSAgIG5ldyBjaGFyY2xhc3MuICAqLworLyogSW4gREZBIEQs IGZpbmQgdGhlIGluZGV4IG9mIGNoYXJjbGFzcyBTLCBvciBhbGxvY2F0ZSBhIG5ldyBvbmUu ICAqLwogc3RhdGljIHNpemVfdAotY2hhcmNsYXNzX2luZGV4IChjaGFyY2xhc3MgY29uc3Qg cykKK2RmYV9jaGFyY2xhc3NfaW5kZXggKHN0cnVjdCBkZmEgKmQsIGNoYXJjbGFzcyBjb25z dCBzKQogewogICBzaXplX3QgaTsKIAotICBmb3IgKGkgPSAwOyBpIDwgZGZhLT5jaW5kZXg7 ICsraSkKLSAgICBpZiAoZXF1YWwgKHMsIGRmYS0+Y2hhcmNsYXNzZXNbaV0pKQorICBmb3Ig KGkgPSAwOyBpIDwgZC0+Y2luZGV4OyArK2kpCisgICAgaWYgKGVxdWFsIChzLCBkLT5jaGFy Y2xhc3Nlc1tpXSkpCiAgICAgICByZXR1cm4gaTsKLSAgUkVBTExPQ19JRl9ORUNFU1NBUlkg KGRmYS0+Y2hhcmNsYXNzZXMsIGRmYS0+Y2FsbG9jLCBkZmEtPmNpbmRleCArIDEpOwotICAr K2RmYS0+Y2luZGV4OwotICBjb3B5c2V0IChzLCBkZmEtPmNoYXJjbGFzc2VzW2ldKTsKKyAg UkVBTExPQ19JRl9ORUNFU1NBUlkgKGQtPmNoYXJjbGFzc2VzLCBkLT5jYWxsb2MsIGQtPmNp bmRleCArIDEpOworICArK2QtPmNpbmRleDsKKyAgY29weXNldCAocywgZC0+Y2hhcmNsYXNz ZXNbaV0pOwogICByZXR1cm4gaTsKIH0KIAorLyogQSBwb2ludGVyIHRvIHRoZSBjdXJyZW50 IGRmYSBpcyBrZXB0IGhlcmUgZHVyaW5nIHBhcnNpbmcuICAqLworc3RhdGljIHN0cnVjdCBk ZmEgKmRmYTsKKworLyogRmluZCB0aGUgaW5kZXggb2YgY2hhcmNsYXNzIFMgaW4gdGhlIGN1 cnJlbnQgREZBLCBvciBhbGxvY2F0ZSBhIG5ldyBvbmUuICAqLworc3RhdGljIHNpemVfdAor Y2hhcmNsYXNzX2luZGV4IChjaGFyY2xhc3MgY29uc3QgcykKK3sKKyAgcmV0dXJuIGRmYV9j aGFyY2xhc3NfaW5kZXggKGRmYSwgcyk7Cit9CisKIC8qIFN5bnRheCBiaXRzIGNvbnRyb2xs aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgbGV4aWNhbCBhbmFseXplci4gICovCiBzdGF0aWMg cmVnX3N5bnRheF90IHN5bnRheF9iaXRzLCBzeW50YXhfYml0c19zZXQ7CiAKQEAgLTM0OTEs MTkgKzM0OTcsMjQgQEAgZGZhZXhlYyAoc3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVn aW4sIGNoYXIgKmVuZCwKICAgICB9CiB9CiAKKy8qIFNlYXJjaCB0aHJvdWdoIGEgYnVmZmVy IGxvb2tpbmcgZm9yIGEgcG90ZW50aWFsIG1hdGNoIGZvciBELgorICAgUmV0dXJuIHRoZSBv ZmZzZXQgb2YgdGhlIGJ5dGUgYWZ0ZXIgdGhlIGZpcnN0IHBvdGVudGlhbCBtYXRjaC4KKyAg IElmIHRoZXJlIGlzIG5vIG1hdGNoLCByZXR1cm4gKHNpemVfdCkgLTEuICBJZiBEIGxhY2tz IGEgc3VwZXJzZXQKKyAgIHNvIGl0J3Mgbm90IGtub3duIHdoZXRoZXIgdGhlcmUgaXMgYSBt YXRjaCwgcmV0dXJuIChzaXplX3QpIC0yLgorICAgQkVHSU4gcG9pbnRzIHRvIHRoZSBiZWdp bm5pbmcgb2YgdGhlIGJ1ZmZlciwgYW5kIEVORCBwb2ludHMgdG8gdGhlCisgICBmaXJzdCBi eXRlIGFmdGVyIGl0cyBlbmQuICBTdG9yZSBhIHNlbnRpbmVsIGJ5dGUgKHVzdWFsbHkgbmV3 bGluZSkKKyAgIGluICpFTkQsIHNvIHRoZSBhY3R1YWwgYnVmZmVyIG11c3QgYmUgb25lIGJ5 dGUgbG9uZ2VyLiAgSWYgQ09VTlQgaXMKKyAgIG5vbi1OVUxMLCBpbmNyZW1lbnQgKkNPVU5U IG9uY2UgZm9yIGVhY2ggbmV3bGluZSBwcm9jZXNzZWQuICAqLwogc2l6ZV90CiBkZmFoaW50 IChzdHJ1Y3QgZGZhICpkLCBjaGFyIGNvbnN0ICpiZWdpbiwgY2hhciAqZW5kLCBzaXplX3Qg KmNvdW50KQogewotICBjaGFyIGNvbnN0ICptYXRjaDsKLQotICBpZiAoZC0+c3VwZXJzZXQg PT0gTlVMTCkKLSAgICByZXR1cm4gKHNpemVfdCkgLTI7Ci0KLSAgbWF0Y2ggPSBkZmFleGVj IChkLT5zdXBlcnNldCwgYmVnaW4sIGVuZCwgMSwgY291bnQsIE5VTEwpOwotICBpZiAobWF0 Y2ggPT0gTlVMTCkKLSAgICByZXR1cm4gKHNpemVfdCkgLTE7Ci0KLSAgcmV0dXJuIG1hdGNo IC0gYmVnaW47CisgIGlmICghIGQtPnN1cGVyc2V0KQorICAgIHJldHVybiAtMjsKKyAgZWxz ZQorICAgIHsKKyAgICAgIGNoYXIgY29uc3QgKm1hdGNoID0gZGZhZXhlYyAoZC0+c3VwZXJz ZXQsIGJlZ2luLCBlbmQsIDEsIGNvdW50LCBOVUxMKTsKKyAgICAgIHJldHVybiBtYXRjaCA/ IG1hdGNoIC0gYmVnaW4gOiAtMTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zNjA0 LDI4ICszNjE1LDI5IEBAIGRmYXN1cGVyc2V0IChzdHJ1Y3QgZGZhICpkKQogICBjaGFyY2xh c3MgY2NsOwogICBib29sIGhhdmVfYWNoYXIgPSBmYWxzZTsKICAgYm9vbCBoYXZlX25jaGFy ID0gZmFsc2U7Ci0KLSAgZGZhID0gZC0+c3VwZXJzZXQgPSBkZmFhbGxvYyAoKTsKLSAgKmQt PnN1cGVyc2V0ID0gKmQ7Ci0gIGQtPnN1cGVyc2V0LT5tYl9jdXJfbWF4ID0gMTsKLSAgZC0+ c3VwZXJzZXQtPm11bHRpYnl0ZV9wcm9wID0gTlVMTDsKLSAgZC0+c3VwZXJzZXQtPm1iY3Nl dHMgPSBOVUxMOwotICBkLT5zdXBlcnNldC0+c3VwZXJzZXQgPSBOVUxMOwotICBkLT5zdXBl cnNldC0+c3RhdGVzID0gTlVMTDsKLSAgZC0+c3VwZXJzZXQtPmZvbGxvd3MgPSBOVUxMOwot ICBkLT5zdXBlcnNldC0+dHJhbnMgPSBOVUxMOwotICBkLT5zdXBlcnNldC0+cmVhbHRyYW5z ID0gTlVMTDsKLSAgZC0+c3VwZXJzZXQtPmZhaWxzID0gTlVMTDsKLSAgZC0+c3VwZXJzZXQt PnN1Y2Nlc3MgPSBOVUxMOwotICBkLT5zdXBlcnNldC0+bmV3bGluZXMgPSBOVUxMOwotICBk LT5zdXBlcnNldC0+bXVzdHMgPSBOVUxMOwotCi0gIE1BTExPQyAoZC0+c3VwZXJzZXQtPmNo YXJjbGFzc2VzLCBkLT5zdXBlcnNldC0+Y2FsbG9jKTsKLSAgZm9yIChpID0gMDsgaSA8IGQt PmNpbmRleDsgaSsrKQotICAgIGNvcHlzZXQgKGQtPmNoYXJjbGFzc2VzW2ldLCBkLT5zdXBl cnNldC0+Y2hhcmNsYXNzZXNbaV0pOwotCi0gIGQtPnN1cGVyc2V0LT50YWxsb2MgPSBkLT50 aW5kZXggKiAyOwotICBNQUxMT0MgKGQtPnN1cGVyc2V0LT50b2tlbnMsIGQtPnN1cGVyc2V0 LT50YWxsb2MpOworICBzdHJ1Y3QgZGZhICpzdXAgPSBkZmFhbGxvYyAoKTsKKworICAqc3Vw ID0gKmQ7CisgIHN1cC0+bWJfY3VyX21heCA9IDE7CisgIHN1cC0+bXVsdGlieXRlX3Byb3Ag PSBOVUxMOworICBzdXAtPm1iY3NldHMgPSBOVUxMOworICBzdXAtPnN1cGVyc2V0ID0gTlVM TDsKKyAgc3VwLT5zdGF0ZXMgPSBOVUxMOworICBzdXAtPnNpbmRleCA9IDA7CisgIHN1cC0+ Zm9sbG93cyA9IE5VTEw7CisgIHN1cC0+dHJhbGxvYyA9IDA7CisgIHN1cC0+cmVhbHRyYW5z ID0gTlVMTDsKKyAgc3VwLT5mYWlscyA9IE5VTEw7CisgIHN1cC0+c3VjY2VzcyA9IE5VTEw7 CisgIHN1cC0+bmV3bGluZXMgPSBOVUxMOworICBzdXAtPm11c3RzID0gTlVMTDsKKworICBN QUxMT0MgKHN1cC0+Y2hhcmNsYXNzZXMsIHN1cC0+Y2FsbG9jKTsKKyAgbWVtY3B5IChzdXAt PmNoYXJjbGFzc2VzLCBkLT5jaGFyY2xhc3NlcywKKyAgICAgICAgICBkLT5jaW5kZXggKiBz aXplb2YgKnN1cC0+Y2hhcmNsYXNzZXMpOworCisgIHN1cC0+dGFsbG9jID0gZC0+dGluZGV4 ICogMjsKKyAgTUFMTE9DIChzdXAtPnRva2Vucywgc3VwLT50YWxsb2MpOwogCiAgIGZvciAo aSA9IGogPSAwOyBpIDwgZC0+dGluZGV4OyBpKyspCiAgICAgewpAQCAtMzYzNiw4ICszNjQ4 LDggQEAgZGZhc3VwZXJzZXQgKHN0cnVjdCBkZmEgKmQpCiAgICAgICAgIGNhc2UgQkFDS1JF RjoKICAgICAgICAgICB6ZXJvc2V0IChjY2wpOwogICAgICAgICAgIG5vdHNldCAoY2NsKTsK LSAgICAgICAgICBkLT5zdXBlcnNldC0+dG9rZW5zW2orK10gPSBDU0VUICsgY2hhcmNsYXNz X2luZGV4IChjY2wpOwotICAgICAgICAgIGQtPnN1cGVyc2V0LT50b2tlbnNbaisrXSA9IFNU QVI7CisgICAgICAgICAgc3VwLT50b2tlbnNbaisrXSA9IENTRVQgKyBkZmFfY2hhcmNsYXNz X2luZGV4IChzdXAsIGNjbCk7CisgICAgICAgICAgc3VwLT50b2tlbnNbaisrXSA9IFNUQVI7 CiAgICAgICAgICAgaWYgKGQtPnRva2Vuc1tpICsgMV0gPT0gUU1BUksgfHwgZC0+dG9rZW5z W2kgKyAxXSA9PSBTVEFSCiAgICAgICAgICAgICAgIHx8IGQtPnRva2Vuc1tpICsgMV0gPT0g UExVUykKICAgICAgICAgICAgIGkrKzsKQEAgLTM2NTAsMjYgKzM2NjIsMjMgQEAgZGZhc3Vw ZXJzZXQgKHN0cnVjdCBkZmEgKmQpCiAgICAgICAgICAgaWYgKE1CX0NVUl9NQVggPiAxKQog ICAgICAgICAgICAgewogICAgICAgICAgICAgICAvKiBJZ25vcmUgdGhlc2UgY29uc3RyYWlu dHMuICAqLwotICAgICAgICAgICAgICBkLT5zdXBlcnNldC0+dG9rZW5zW2orK10gPSBFTVBU WTsKKyAgICAgICAgICAgICAgc3VwLT50b2tlbnNbaisrXSA9IEVNUFRZOwogICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg ICBkLT5zdXBlcnNldC0+dG9rZW5zW2orK10gPSBkLT50b2tlbnNbaV07Ci0gICAgICAgICAg aWYgKChkLT50b2tlbnNbaV0gPj0gMCAmJiBkLT50b2tlbnNbaV0gPCBOT1RDSEFSKQotICAg ICAgICAgICAgICAgfHwgZC0+dG9rZW5zW2ldID49IENTRVQpCisgICAgICAgICAgc3VwLT50 b2tlbnNbaisrXSA9IGQtPnRva2Vuc1tpXTsKKyAgICAgICAgICBpZiAoKDAgPD0gZC0+dG9r ZW5zW2ldICYmIGQtPnRva2Vuc1tpXSA8IE5PVENIQVIpCisgICAgICAgICAgICAgIHx8IGQt PnRva2Vuc1tpXSA+PSBDU0VUKQogICAgICAgICAgICAgaGF2ZV9uY2hhciA9IHRydWU7CiAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisgIHN1cC0+dGluZGV4ID0gajsK IAogICBpZiAoKGQtPm1iX2N1cl9tYXggPT0gMSAmJiAhaGF2ZV9hY2hhcikgfHwgIWhhdmVf bmNoYXIpCi0gICAgewotICAgICAgZGZhZnJlZSAoZC0+c3VwZXJzZXQpOwotICAgICAgZC0+ c3VwZXJzZXQgPSBOVUxMOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICBkLT5zdXBlcnNl dC0+dGluZGV4ID0gajsKKyAgICBkZmFmcmVlIChzdXApOworICBlbHNlCisgICAgZC0+c3Vw ZXJzZXQgPSBzdXA7CiB9CiAKIC8qIFBhcnNlIGFuZCBhbmFseXplIGEgc2luZ2xlIHN0cmlu ZyBvZiB0aGUgZ2l2ZW4gbGVuZ3RoLiAgKi8KQEAgLTM2ODMsNyArMzY5Miw3IEBAIGRmYWNv bXAgKGNoYXIgY29uc3QgKnMsIHNpemVfdCBsZW4sIHN0cnVjdCBkZmEgKmQsIGludCBzZWFy Y2hmbGFnKQogICBkZmFvcHRpbWl6ZSAoZCk7CiAgIGRmYXN1cGVyc2V0IChkKTsKICAgZGZh YW5hbHl6ZSAoZCwgc2VhcmNoZmxhZyk7Ci0gIGlmIChkLT5zdXBlcnNldCAhPSBOVUxMKQor ICBpZiAoZC0+c3VwZXJzZXQpCiAgICAgZGZhYW5hbHl6ZSAoZC0+c3VwZXJzZXQsIHNlYXJj aGZsYWcpOwogfQogCkBAIC0zNzAwLDI3ICszNzA5LDI1IEBAIGRmYWZyZWUgKHN0cnVjdCBk ZmEgKmQpCiAgIGlmIChkLT5tYl9jdXJfbWF4ID4gMSkKICAgICBmcmVlX21iZGF0YSAoZCk7 CiAKLSAgaWYgKGQtPnN0YXRlcyAhPSBOVUxMKQorICBmb3IgKGkgPSAwOyBpIDwgZC0+c2lu ZGV4OyArK2kpCiAgICAgewotICAgICAgZm9yIChpID0gMDsgaSA8IGQtPnNpbmRleDsgKytp KQotICAgICAgICB7Ci0gICAgICAgICAgZnJlZSAoZC0+c3RhdGVzW2ldLmVsZW1zLmVsZW1z KTsKLSAgICAgICAgICBmcmVlIChkLT5zdGF0ZXNbaV0ubWJwcy5lbGVtcyk7Ci0gICAgICAg IH0KLSAgICAgIGZyZWUgKGQtPnN0YXRlcyk7CisgICAgICBmcmVlIChkLT5zdGF0ZXNbaV0u ZWxlbXMuZWxlbXMpOworICAgICAgZnJlZSAoZC0+c3RhdGVzW2ldLm1icHMuZWxlbXMpOwog ICAgIH0KLSAgaWYgKGQtPmZvbGxvd3MgIT0gTlVMTCkKKyAgZnJlZSAoZC0+c3RhdGVzKTsK KworICBpZiAoZC0+Zm9sbG93cykKICAgICB7CiAgICAgICBmb3IgKGkgPSAwOyBpIDwgZC0+ dGluZGV4OyArK2kpCiAgICAgICAgIGZyZWUgKGQtPmZvbGxvd3NbaV0uZWxlbXMpOwogICAg ICAgZnJlZSAoZC0+Zm9sbG93cyk7CiAgICAgfQotICBpZiAoZC0+dHJhbnMgIT0gTlVMTCkK LSAgICBmb3IgKGkgPSAwOyBpIDwgZC0+dHJhbGxvYzsgKytpKQotICAgICAgewotICAgICAg ICBmcmVlIChkLT50cmFuc1tpXSk7Ci0gICAgICAgIGZyZWUgKGQtPmZhaWxzW2ldKTsKLSAg ICAgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgZC0+dHJhbGxvYzsgKytpKQorICAgIHsKKyAg ICAgIGZyZWUgKGQtPnRyYW5zW2ldKTsKKyAgICAgIGZyZWUgKGQtPmZhaWxzW2ldKTsKKyAg ICB9CiAKICAgZnJlZSAoZC0+cmVhbHRyYW5zKTsKICAgZnJlZSAoZC0+ZmFpbHMpOwpAQCAt MzczNCw3ICszNzQxLDcgQEAgZGZhZnJlZSAoc3RydWN0IGRmYSAqZCkKICAgICAgIGZyZWUg KGRtKTsKICAgICB9CiAKLSAgaWYgKGQtPnN1cGVyc2V0ICE9IE5VTEwpCisgIGlmIChkLT5z dXBlcnNldCkKICAgICBkZmFmcmVlIChkLT5zdXBlcnNldCk7CiB9CiAKQEAgLTQyNDMsOSAr NDI1MCw3IEBAIGRvbmU6CiBzdHJ1Y3QgZGZhICoKIGRmYWFsbG9jICh2b2lkKQogewotICBz dHJ1Y3QgZGZhICpkID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZGZhKSk7Ci0gIGQtPnN1 cGVyc2V0ID0gTlVMTDsKLSAgcmV0dXJuIGQ7CisgIHJldHVybiB4bWFsbG9jIChzaXplb2Yg KHN0cnVjdCBkZmEpKTsKIH0KIAogc3RydWN0IGRmYW11c3QgKl9HTF9BVFRSSUJVVEVfUFVS RQpkaWZmIC0tZ2l0IGEvc3JjL2RmYS5oIGIvc3JjL2RmYS5oCmluZGV4IGFkOTc0OTguLjZl ZDIyMzEgMTAwNjQ0Ci0tLSBhL3NyYy9kZmEuaAorKysgYi9zcmMvZGZhLmgKQEAgLTY3LDEw ICs2NywxOCBAQCBleHRlcm4gdm9pZCBkZmFjb21wIChjaGFyIGNvbnN0ICosIHNpemVfdCwg c3RydWN0IGRmYSAqLCBpbnQpOwogICAgdG8gZGVjaWRlIHdoZXRoZXIgdG8gZmFsbCBiYWNr IG9uIGEgYmFja3RyYWNraW5nIG1hdGNoZXIuICovCiBleHRlcm4gY2hhciAqZGZhZXhlYyAo c3RydWN0IGRmYSAqZCwgY2hhciBjb25zdCAqYmVnaW4sIGNoYXIgKmVuZCwKICAgICAgICAg ICAgICAgICAgICAgICBpbnQgbmV3bGluZSwgc2l6ZV90ICpjb3VudCwgaW50ICpiYWNrcmVm KTsKKworLyogU2VhcmNoIHRocm91Z2ggYSBidWZmZXIgbG9va2luZyBmb3IgYSBwb3RlbnRp YWwgbWF0Y2ggZm9yIEQuCisgICBSZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgYnl0ZSBhZnRl ciB0aGUgZmlyc3QgcG90ZW50aWFsIG1hdGNoLgorICAgSWYgdGhlcmUgaXMgbm8gbWF0Y2gs IHJldHVybiAoc2l6ZV90KSAtMS4gIElmIEQgbGFja3MgYSBzdXBlcnNldAorICAgc28gaXQn cyBub3Qga25vd24gd2hldGhlciB0aGVyZSBpcyBhIG1hdGNoLCByZXR1cm4gKHNpemVfdCkg LTIuCisgICBCRUdJTiBwb2ludHMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLCBh bmQgRU5EIHBvaW50cyB0byB0aGUKKyAgIGZpcnN0IGJ5dGUgYWZ0ZXIgaXRzIGVuZC4gIFN0 b3JlIGEgc2VudGluZWwgYnl0ZSAodXN1YWxseSBuZXdsaW5lKQorICAgaW4gKkVORCwgc28g dGhlIGFjdHVhbCBidWZmZXIgbXVzdCBiZSBvbmUgYnl0ZSBsb25nZXIuICBJZiBDT1VOVCBp cworICAgbm9uLU5VTEwsIGluY3JlbWVudCAqQ09VTlQgb25jZSBmb3IgZWFjaCBuZXdsaW5l IHByb2Nlc3NlZC4gICovCiBleHRlcm4gc2l6ZV90IGRmYWhpbnQgKHN0cnVjdCBkZmEgKmQs IGNoYXIgY29uc3QgKmJlZ2luLCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCAqY291bnQpOwogCi0KIC8qIEZyZWUgdGhlIHN0b3JhZ2UgaGVsZCBieSB0aGUg Y29tcG9uZW50cyBvZiBhIHN0cnVjdCBkZmEuICovCiBleHRlcm4gdm9pZCBkZmFmcmVlIChz dHJ1Y3QgZGZhICopOwogCmRpZmYgLS1naXQgYS9zcmMvZGZhc2VhcmNoLmMgYi9zcmMvZGZh c2VhcmNoLmMKaW5kZXggMzgzYzJhZC4uYWRlYzRlMiAxMDA2NDQKLS0tIGEvc3JjL2RmYXNl YXJjaC5jCisrKyBiL3NyYy9kZmFzZWFyY2guYwpAQCAtMjI5LDEzICsyMjksMTEgQEAgRUdl eGVjdXRlIChjaGFyIGNvbnN0ICpidWYsIHNpemVfdCBzaXplLCBzaXplX3QgKm1hdGNoX3Np emUsCiAgICAgICAgICAgICAgIGJlZyArPSBvZmZzZXQ7CiAgICAgICAgICAgICAgIC8qIE5h cnJvdyBkb3duIHRvIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGNhbmRpZGF0ZSwgYW5kCiAg ICAgICAgICAgICAgICAgIHJ1biBpdCB0aHJvdWdoIERGQS4gKi8KLSAgICAgICAgICAgICAg aWYgKChlbmQgPSBtZW1jaHIoYmVnLCBlb2wsIGJ1ZmxpbSAtIGJlZykpICE9IE5VTEwpCi0g ICAgICAgICAgICAgICAgZW5kKys7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg ICAgICBlbmQgPSBidWZsaW07CisgICAgICAgICAgICAgIGVuZCA9IG1lbWNociAoYmVnLCBl b2wsIGJ1ZmxpbSAtIGJlZyk7CisgICAgICAgICAgICAgIGVuZCA9IGVuZCA/IGVuZCArIDEg OiBidWZsaW07CiAgICAgICAgICAgICAgIG1hdGNoID0gYmVnOwotICAgICAgICAgICAgICB3 aGlsZSAoYmVnID4gYnVmICYmIGJlZ1stMV0gIT0gZW9sKQotICAgICAgICAgICAgICAgIC0t YmVnOworICAgICAgICAgICAgICBiZWcgPSBtZW1yY2hyIChidWYsIGVvbCwgYmVnIC0gYnVm KTsKKyAgICAgICAgICAgICAgYmVnID0gYmVnID8gYmVnICsgMSA6IGJ1ZjsKICAgICAgICAg ICAgICAgaWYgKGt3c20uaW5kZXggPCBrd3NldF9leGFjdF9tYXRjaGVzKQogICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgIGlmIChtYl9zdGFydCA8IGJlZykKQEAgLTI0 NywxNyArMjQ1LDE1IEBAIEVHZXhlY3V0ZSAoY2hhciBjb25zdCAqYnVmLCBzaXplX3Qgc2l6 ZSwgc2l6ZV90ICptYXRjaF9zaXplLAogICAgICAgICAgICAgICAgICAgLyogVGhlIG1hdGNo ZWQgbGluZSBzdGFydHMgaW4gdGhlIG1pZGRsZSBvZiBhIG11bHRpYnl0ZQogICAgICAgICAg ICAgICAgICAgICAgY2hhcmFjdGVyLiAgUGVyZm9ybSB0aGUgREZBIHNlYXJjaCBzdGFydGlu ZyBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgYmVnaW5uaW5nIG9mIHRoZSBuZXh0 IGNoYXJhY3Rlci4gICovCi0gICAgICAgICAgICAgICAgICBpZiAoZGZhZXhlYyAoZGZhLCBt Yl9zdGFydCwgKGNoYXIgKikgZW5kLCAwLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZiYWNrcmVmKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgaWYgKCEg ZGZhZXhlYyAoZGZhLCBtYl9zdGFydCwgKGNoYXIgKikgZW5kLCAwLCBOVUxMLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJhY2tyZWYpKQogICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGVsc2UK ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZiAoZGZhaGludCAoZGZh LCBiZWcsIChjaGFyICopIGVuZCwgTlVMTCkgPT0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2l6ZV90KSAtMSkKKyAgICAgICAgICAgICAgICAgIGlmIChkZmFoaW50IChk ZmEsIGJlZywgKGNoYXIgKikgZW5kLCBOVUxMKSA9PSAoc2l6ZV90KSAtMSkKICAgICAgICAg ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICBpZiAoZGZhZXhlYyAo ZGZhLCBiZWcsIChjaGFyICopIGVuZCwgMCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmYmFja3JlZikgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgIGlmICgh IGRmYWV4ZWMgKGRmYSwgYmVnLCAoY2hhciAqKSBlbmQsIDAsIE5VTEwsICZiYWNrcmVmKSkK ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgfQpAQCAtMjgzLDIwICsyNzksMTcgQEAgRUdleGVjdXRlIChjaGFyIGNvbnN0 ICpidWYsIHNpemVfdCBzaXplLCBzaXplX3QgKm1hdGNoX3NpemUsCiAgICAgICAgICAgICAg IGVsc2UKICAgICAgICAgICAgICAgICBuZXh0X2JlZyA9IGJlZyArIG9mZnNldDsKICAgICAg ICAgICAgICAgLyogTmFycm93IGRvd24gdG8gdGhlIGxpbmUgd2UndmUgZm91bmQuICovCi0g ICAgICAgICAgICAgIGJlZyA9IG5leHRfYmVnOwotICAgICAgICAgICAgICB3aGlsZSAoYmVn ID4gYnVmICYmIGJlZ1stMV0gIT0gZW9sKQotICAgICAgICAgICAgICAgIC0tYmVnOwotICAg ICAgICAgICAgICBpZiAoY291bnQgPiAwKQorICAgICAgICAgICAgICBiZWcgPSBtZW1yY2hy IChidWYsIGVvbCwgbmV4dF9iZWcgLSBidWYpOworICAgICAgICAgICAgICBiZWcgPSBiZWcg PyBiZWcgKyAxIDogYnVmOworICAgICAgICAgICAgICBpZiAoY291bnQgIT0gMCkKICAgICAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAvKiBkZmFoaW50KCkgbWF5IG1hdGNo IGluIG11bHRpcGxlIGxpbmVzLiAgSWYgdGhhdCBpcwotICAgICAgICAgICAgICAgICAgICAg dGhlIGNhc2UsIHRyeSB0byBtYXRjaCBpbiBvbmUgbGluZS4gICovCisgICAgICAgICAgICAg ICAgICAvKiBJZiBkZmFoaW50IG1heSBtYXRjaCBpbiBtdWx0aXBsZSBsaW5lcywgdHJ5IHRv CisgICAgICAgICAgICAgICAgICAgICBtYXRjaCBpbiBvbmUgbGluZS4gICovCiAgICAgICAg ICAgICAgICAgICBlbmQgPSBiZWc7CiAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGlmICgoZW5kID0gbWVtY2hyKG5leHRf YmVnLCBlb2wsIGJ1ZmxpbSAtIGJlZykpICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgZW5k Kys7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbmQgPSBidWZsaW07 CisgICAgICAgICAgICAgIGVuZCA9IG1lbWNociAobmV4dF9iZWcsIGVvbCwgYnVmbGltIC0g bmV4dF9iZWcpOworICAgICAgICAgICAgICBlbmQgPSBlbmQgPyBlbmQgKyAxIDogYnVmbGlt OwogICAgICAgICAgICAgICBpZiAob2Zmc2V0ICE9IChzaXplX3QpIC0yKQogICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgIG5leHRfYmVnID0gZGZhZXhlYyAoZGZhLCBi ZWcsIChjaGFyICopIGVuZCwgMCwgTlVMTCwKLS0gCjEuOS4wCgo= --------------010005050004090208080407-- From unknown Mon Aug 18 06:57:23 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 05 May 2014 11:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator