From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Kangas Newsgroups: gmane.emacs.devel Subject: Re: master 37889523278: Add new `swap` macro and use it Date: Sat, 6 Jan 2024 00:50:55 -0800 Message-ID: References: <170452579053.27998.16123231327386305897@vcs2.savannah.gnu.org> <20240106072311.28B8FC0034E@vcs2.savannah.gnu.org> <87plye9ahs.fsf@yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000023f51a060e43107c" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="2284"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Paul Eggert , Eli Zaretskii To: Po Lu , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Jan 06 09:51:41 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rM2P6-0000NB-Us for ged-emacs-devel@m.gmane-mx.org; Sat, 06 Jan 2024 09:51:41 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rM2OT-0007I9-Ob; Sat, 06 Jan 2024 03:51:01 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rM2OS-0007I1-Vf for emacs-devel@gnu.org; Sat, 06 Jan 2024 03:51:01 -0500 Original-Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rM2OQ-000267-OO; Sat, 06 Jan 2024 03:51:00 -0500 Original-Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-557535489d0so305136a12.2; Sat, 06 Jan 2024 00:50:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704531057; x=1705135857; darn=gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=azeL8IAu4UBwj3Ba26Rq7A34ni6vfdRqOIaBSt5IbxM=; b=VzAgt98UTf2hR9E9VG2jnq3FRYal42Xk771jzcswBvWOrHjS0lTMKbPAurssRUKZEr 7dEDehDUm8vRMORJlC2jiAgc0D+35U8BDCdTsjl46VSmHzGE1bnrM2mrw8LDJyMcdS97 SonknLMiW4DU+yYOJnfCJfWBZoPuPLLvywwRmKiL8I3Xf5AubI8GH4N1udMlscWGvajz pgSWsKV3c/497vvJA3ZMb6B82cQWfQITGqlqGD2KyfADaP1ezuRU3RMXXZX5PK41bGUw R826XqgkpA4gsWhlrIUw0Gc2iCHTxl6R1oTjY/PYli3+auxqAQhiltLKek1Klz5L/VOK iEWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704531057; x=1705135857; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=azeL8IAu4UBwj3Ba26Rq7A34ni6vfdRqOIaBSt5IbxM=; b=p1D420DuriNy0hUrZx97Dzszll77tvI3R8+YxSNWBSPiauZOrAF0gNb8UISOvkvzKK d2wKpiyPHXODclvsf/DrZ7pNxj4e+dixJBXlaqamjRXsruosKcTiokZt0IDnKC2+JyOK XTP9UM2BBBROS0tpf9sscv3ztXtVv+RHKOVoV7GBrsb5fdt6yu1phBrIi8hVUbM/o2CR HNTEaUldGo0Mxs4+bCuBwLJfjRU1hwFJwW2/gLInlyykcfXQPl/gcfwFdUJBYxN0BJ6E vqmImliKKJizIeLLGISbSIX5Hlb7wMSH/7+fTTSZOQkvcUFKVdBRfjs+odR9g1L0iaR+ XVKA== X-Gm-Message-State: AOJu0YxZIP07tgmqDED6DuX+fHplCJhhtb3Z6I6Lry4bos8VTElsC53m EcAWtWgfJrFjocry3WMKdRit2rIrGuMYdWOy+6E= X-Google-Smtp-Source: AGHT+IFctyrT2Hw+x8hSscsd66ZR2RyVqydt6VthBAjW+4nu5mQ4QbGRZAq2HzshhNOX5n3ypROTYZGE140kGFKA58U= X-Received: by 2002:a50:d74e:0:b0:557:a9c:bdfd with SMTP id i14-20020a50d74e000000b005570a9cbdfdmr300843edj.19.1704531056647; Sat, 06 Jan 2024 00:50:56 -0800 (PST) Original-Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 6 Jan 2024 00:50:55 -0800 In-Reply-To: <87plye9ahs.fsf@yahoo.com> Received-SPF: pass client-ip=2a00:1450:4864:20::532; envelope-from=stefankangas@gmail.com; helo=mail-ed1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:314598 Archived-At: --00000000000023f51a060e43107c Content-Type: text/plain; charset="UTF-8" Po Lu writes: > Stefan Kangas writes: > >> branch: master >> commit 37889523278fe65733938fb11c3701898309961c >> Author: Stefan Kangas >> Commit: Stefan Kangas >> >> Add new `swap` macro and use it >> >> A `swap` macro prevents programming errors and is more concise. >> It is a natural addition to our existing `min` and `max` macros. > > It's well known that a generic "swap" macro is impossible to express in > Standard C for lack of a standard "typeof"-like expression. To > compensate for this limitation, the macro must accept an argument > identifying the type of the field where the temporary value is saved, > which is more trouble than it's worth and reintroduces the type > conversion problems such macros are intended to prevent. > > Neither typeof nor __typeof__ are portable by our standards, the latter > being an extension compatible with the Standard enabled when GCC is > configured to obey the standard to the letter, while the former is a > keyword enabled in other situations. Ouch, right. I was inspired by some other large project, let's leave it unnamed, but their C chops were big enough that I let my guard down. Unfortunately for me, they happen to support far fewer compilers than we do. Sorry about that, and thanks for being on your toes. I had a look at what Gnulib has, and came up with the attached patch. It still lets us avoid the type conversion problems on GCC, clang and reasonably recent versions of IBM C and sunc. I'm not sure it's worth it though, so perhaps my original patch should just be reverted. I copied in Paul just in case, and I'm hoping Eli will chime in too. --00000000000023f51a060e43107c Content-Type: text/x-diff; charset="US-ASCII"; name="portable-swap.diff" Content-Disposition: attachment; filename="portable-swap.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: 171a57c99db4dce7_0.1 ZGlmZiAtLWdpdCBhL2x3bGliL3hsd21lbnUuYyBiL2x3bGliL3hsd21lbnUuYwppbmRleCBhM2Q5 NDc0YmVkMC4uZDZmYTIzODQxYTMgMTAwNjQ0Ci0tLSBhL2x3bGliL3hsd21lbnUuYworKysgYi9s d2xpYi94bHdtZW51LmMKQEAgLTY3MSw3ICs2NzEsNyBAQCBkcmF3X3NoYWRvd19yZWN0YW5nbGUg KFhsd01lbnVXaWRnZXQgbXcsIFdpbmRvdyB3aW5kb3csIGludCB4LCBpbnQgeSwKICAgICB9CiAK ICAgaWYgKCFlcmFzZV9wICYmIGRvd25fcCkKLSAgICBzd2FwICh0b3BfZ2MsIGJvdHRvbV9nYyk7 CisgICAgc3dhcCAoR0MsIHRvcF9nYywgYm90dG9tX2djKTsKIAogICAvKiBEbyBkcmF3IChvciBl cmFzZSkgc2hhZG93cyAqLwogICBwb2ludHMgWzBdLnggPSB4OwpAQCAtNzUyLDcgKzc1Miw3IEBA IGRyYXdfc2hhZG93X3Job21idXMgKFhsd01lbnVXaWRnZXQgbXcsIFdpbmRvdyB3aW5kb3csIGlu dCB4LCBpbnQgeSwKICAgICB9CiAKICAgaWYgKCFlcmFzZV9wICYmIGRvd25fcCkKLSAgICBzd2Fw ICh0b3BfZ2MsIGJvdHRvbV9nYyk7CisgICAgc3dhcCAoR0MsIHRvcF9nYywgYm90dG9tX2djKTsK IAogICBwb2ludHMgWzBdLnggPSB4OwogICBwb2ludHMgWzBdLnkgPSB5ICsgaGVpZ2h0IC8gMjsK ZGlmZiAtLWdpdCBhL3NyYy9hbmRyb2lkdGVybS5jIGIvc3JjL2FuZHJvaWR0ZXJtLmMKaW5kZXgg MzQ3MzRlNjNjMzcuLjg1MWEwNjYzMTZhIDEwMDY0NAotLS0gYS9zcmMvYW5kcm9pZHRlcm0uYwor KysgYi9zcmMvYW5kcm9pZHRlcm0uYwpAQCAtNTg2OSw3ICs1ODY5LDcgQEAgYW5kcm9pZF9nZXRf c3Vycm91bmRpbmdfdGV4dCAodm9pZCAqZGF0YSkKICAgICAgYmFkIGlucHV0IG1ldGhvZHMuICAq LwogCiAgIGlmIChyZXF1ZXN0LT5lbmQgPCByZXF1ZXN0LT5zdGFydCkKLSAgICBzd2FwIChyZXF1 ZXN0LT5zdGFydCwgcmVxdWVzdC0+ZW5kKTsKKyAgICBzd2FwIChwdHJkaWZmX3QsIHJlcXVlc3Qt PnN0YXJ0LCByZXF1ZXN0LT5lbmQpOwogCiAgIC8qIFJldHJpZXZlIHRoZSBjb252ZXJzaW9uIHJl Z2lvbi4gICovCiAKZGlmZiAtLWdpdCBhL3NyYy9idWZmZXIuYyBiL3NyYy9idWZmZXIuYwppbmRl eCAxNGM2NzIyNDU1MS4uYzAzMTcwZThjMmQgMTAwNjQ0Ci0tLSBhL3NyYy9idWZmZXIuYworKysg Yi9zcmMvYnVmZmVyLmMKQEAgLTM1OTEsNyArMzU5MSw3IEBAIERFRlVOICgibWFrZS1vdmVybGF5 IiwgRm1ha2Vfb3ZlcmxheSwgU21ha2Vfb3ZlcmxheSwgMiwgNSwgMCwKICAgQ0hFQ0tfRklYTlVN X0NPRVJDRV9NQVJLRVIgKGVuZCk7CiAKICAgaWYgKFhGSVhOVU0gKGJlZykgPiBYRklYTlVNIChl bmQpKQotICAgIHN3YXAgKGJlZywgZW5kKTsKKyAgICBzd2FwIChMaXNwX09iamVjdCwgYmVnLCBl bmQpOwogCiAgIHB0cmRpZmZfdCBvYmVnID0gY2xpcF90b19ib3VuZHMgKEJVRl9CRUcgKGIpLCBY RklYTlVNIChiZWcpLCBCVUZfWiAoYikpOwogICBwdHJkaWZmX3Qgb2VuZCA9IGNsaXBfdG9fYm91 bmRzIChvYmVnLCBYRklYTlVNIChlbmQpLCBCVUZfWiAoYikpOwpAQCAtMzYxMSw3ICszNjExLDcg QEAgREVGVU4gKCJtYWtlLW92ZXJsYXkiLCBGbWFrZV9vdmVybGF5LCBTbWFrZV9vdmVybGF5LCAy LCA1LCAwLAogbW9kaWZ5X292ZXJsYXkgKHN0cnVjdCBidWZmZXIgKmJ1ZiwgcHRyZGlmZl90IHN0 YXJ0LCBwdHJkaWZmX3QgZW5kKQogewogICBpZiAoc3RhcnQgPiBlbmQpCi0gICAgc3dhcCAoc3Rh cnQsIGVuZCk7CisgICAgc3dhcCAocHRyZGlmZl90LCBzdGFydCwgZW5kKTsKIAogICBCVUZfQ09N UFVURV9VTkNIQU5HRUQgKGJ1Ziwgc3RhcnQsIGVuZCk7CiAKQEAgLTM2NTEsNyArMzY1MSw3IEBA IERFRlVOICgibW92ZS1vdmVybGF5IiwgRm1vdmVfb3ZlcmxheSwgU21vdmVfb3ZlcmxheSwgMywg NCwgMCwKICAgQ0hFQ0tfRklYTlVNX0NPRVJDRV9NQVJLRVIgKGVuZCk7CiAKICAgaWYgKFhGSVhO VU0gKGJlZykgPiBYRklYTlVNIChlbmQpKQotICAgIHN3YXAgKGJlZywgZW5kKTsKKyAgICBzd2Fw IChMaXNwX09iamVjdCwgYmVnLCBlbmQpOwogCiAgIHNwZWNiaW5kIChRaW5oaWJpdF9xdWl0LCBR dCk7IC8qIEZJWE1FOiBXaHk/ICAqLwogCmRpZmYgLS1naXQgYS9zcmMvZGlzcG5ldy5jIGIvc3Jj L2Rpc3BuZXcuYwppbmRleCA3OGVjMzUzN2EzNS4uYTNlNmNhNDE2ZGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9kaXNwbmV3LmMKKysrIGIvc3JjL2Rpc3BuZXcuYwpAQCAtNjQ5LDcgKzY0OSw3IEBAIHJldmVy c2Vfcm93cyAoc3RydWN0IGdseXBoX21hdHJpeCAqbWF0cml4LCBpbnQgc3RhcnQsIGludCBlbmQp CiAgIGludCBpLCBqOwogCiAgIGZvciAoaSA9IHN0YXJ0LCBqID0gZW5kIC0gMTsgaSA8IGo7ICsr aSwgLS1qKQotICAgIHN3YXAgKG1hdHJpeC0+cm93c1tpXSwgbWF0cml4LT5yb3dzW2pdKTsKKyAg ICBzd2FwIChzdHJ1Y3QgZ2x5cGhfcm93LCBtYXRyaXgtPnJvd3NbaV0sIG1hdHJpeC0+cm93c1tq XSk7CiB9CiAKIApAQCAtOTc1LDcgKzk3NSw3IEBAIHN3YXBfZ2x5cGhzX2luX3Jvd3MgKHN0cnVj dCBnbHlwaF9yb3cgKmEsIHN0cnVjdCBnbHlwaF9yb3cgKmIpCiAKICAgICAgIHdoaWxlIChnbHlw aF9hIDwgZ2x5cGhfYV9lbmQpCiAJewotCSAgc3dhcCAoKmdseXBoX2EsICpnbHlwaF9iKTsKKwkg IHN3YXAgKHN0cnVjdCBnbHlwaCwgKmdseXBoX2EsICpnbHlwaF9iKTsKIAkgICsrZ2x5cGhfYTsK IAkgICsrZ2x5cGhfYjsKIAl9CmRpZmYgLS1naXQgYS9zcmMvZWRpdGZucy5jIGIvc3JjL2VkaXRm bnMuYwppbmRleCAyZTQ1NWEyZWZlZC4uZjMxZDhmNWFlZjMgMTAwNjQ0Ci0tLSBhL3NyYy9lZGl0 Zm5zLmMKKysrIGIvc3JjL2VkaXRmbnMuYwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgREVGVU4gKCJp bnNlcnQtYnVmZmVyLXN1YnN0cmluZyIsIEZpbnNlcnRfYnVmZmVyX3N1YnN0cmluZywgU2luc2Vy dF9idWZmZXJfc3Vic3QKICAgYiA9ICFOSUxQIChzdGFydCkgPyBmaXhfcG9zaXRpb24gKHN0YXJ0 KSA6IEJVRl9CRUdWIChicCk7CiAgIGUgPSAhTklMUCAoZW5kKSA/IGZpeF9wb3NpdGlvbiAoZW5k KSA6IEJVRl9aViAoYnApOwogICBpZiAoYiA+IGUpCi0gICAgc3dhcCAoYiwgZSk7CisgICAgc3dh cCAoRU1BQ1NfSU5ULCBiLCBlKTsKIAogICBpZiAoIShCVUZfQkVHViAoYnApIDw9IGIgJiYgZSA8 PSBCVUZfWlYgKGJwKSkpCiAgICAgYXJnc19vdXRfb2ZfcmFuZ2UgKHN0YXJ0LCBlbmQpOwpAQCAt MTgwOCw3ICsxODA4LDcgQEAgREVGVU4gKCJjb21wYXJlLWJ1ZmZlci1zdWJzdHJpbmdzIiwgRmNv bXBhcmVfYnVmZmVyX3N1YnN0cmluZ3MsIFNjb21wYXJlX2J1ZmZlcl8KICAgYmVncDEgPSAhTklM UCAoc3RhcnQxKSA/IGZpeF9wb3NpdGlvbiAoc3RhcnQxKSA6IEJVRl9CRUdWIChicDEpOwogICBl bmRwMSA9ICFOSUxQIChlbmQxKSA/IGZpeF9wb3NpdGlvbiAoZW5kMSkgOiBCVUZfWlYgKGJwMSk7 CiAgIGlmIChiZWdwMSA+IGVuZHAxKQotICAgIHN3YXAgKGJlZ3AxLCBlbmRwMSk7CisgICAgc3dh cCAoRU1BQ1NfSU5ULCBiZWdwMSwgZW5kcDEpOwogCiAgIGlmICghKEJVRl9CRUdWIChicDEpIDw9 IGJlZ3AxCiAJJiYgYmVncDEgPD0gZW5kcDEKQEAgLTE4MzMsNyArMTgzMyw3IEBAIERFRlVOICgi Y29tcGFyZS1idWZmZXItc3Vic3RyaW5ncyIsIEZjb21wYXJlX2J1ZmZlcl9zdWJzdHJpbmdzLCBT Y29tcGFyZV9idWZmZXJfCiAgIGJlZ3AyID0gIU5JTFAgKHN0YXJ0MikgPyBmaXhfcG9zaXRpb24g KHN0YXJ0MikgOiBCVUZfQkVHViAoYnAyKTsKICAgZW5kcDIgPSAhTklMUCAoZW5kMikgPyBmaXhf cG9zaXRpb24gKGVuZDIpIDogQlVGX1pWIChicDIpOwogICBpZiAoYmVncDIgPiBlbmRwMikKLSAg ICBzd2FwIChiZWdwMiwgZW5kcDIpOworICAgIHN3YXAgKEVNQUNTX0lOVCwgYmVncDIsIGVuZHAy KTsKIAogICBpZiAoIShCVUZfQkVHViAoYnAyKSA8PSBiZWdwMgogCSYmIGJlZ3AyIDw9IGVuZHAy CmRpZmYgLS1naXQgYS9zcmMvZXZhbC5jIGIvc3JjL2V2YWwuYwppbmRleCA2YTg2NmQ2Y2MzMi4u N2Q4OWMwYjYyMWUgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAt Mjc5NCw5ICsyNzk0LDkgQEAgREVGVU4gKCJydW4taG9vay13aXRoLWFyZ3MtdW50aWwtZmFpbHVy ZSIsIEZydW5faG9va193aXRoX2FyZ3NfdW50aWxfZmFpbHVyZSwKIHN0YXRpYyBMaXNwX09iamVj dAogcnVuX2hvb2tfd3JhcHBlZF9mdW5jYWxsIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0 ICphcmdzKQogewotICBzd2FwIChhcmdzWzBdLCBhcmdzWzFdKTsKKyAgc3dhcCAoTGlzcF9PYmpl Y3QsIGFyZ3NbMF0sIGFyZ3NbMV0pOwogICBMaXNwX09iamVjdCByZXQgPSBGZnVuY2FsbCAobmFy Z3MsIGFyZ3MpOwotICBzd2FwIChhcmdzWzFdLCBhcmdzWzBdKTsKKyAgc3dhcCAoTGlzcF9PYmpl Y3QsIGFyZ3NbMV0sIGFyZ3NbMF0pOwogICByZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9z cmMvZm5zLmMgYi9zcmMvZm5zLmMKaW5kZXggYzhhZGM1Y2I4OTEuLjllN2Y0M2I1OGUxIDEwMDY0 NAotLS0gYS9zcmMvZm5zLmMKKysrIGIvc3JjL2Zucy5jCkBAIC01Njc0LDcgKzU2NzQsNyBAQCBl eHRyYWN0X2RhdGFfZnJvbV9vYmplY3QgKExpc3BfT2JqZWN0IHNwZWMsCiAgICAgICBiID0gIU5J TFAgKHN0YXJ0KSA/IGZpeF9wb3NpdGlvbiAoc3RhcnQpIDogQkVHVjsKICAgICAgIGUgPSAhTklM UCAoZW5kKSA/IGZpeF9wb3NpdGlvbiAoZW5kKSA6IFpWOwogICAgICAgaWYgKGIgPiBlKQotCXN3 YXAgKGIsIGUpOworCXN3YXAgKEVNQUNTX0lOVCwgYiwgZSk7CiAKICAgICAgIGlmICghKEJFR1Yg PD0gYiAmJiBlIDw9IFpWKSkKIAlhcmdzX291dF9vZl9yYW5nZSAoc3RhcnQsIGVuZCk7CmRpZmYg LS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xpc3AuaAppbmRleCBmOTY5MzJhYjBjMS4uYTk3ODI4 NjgxNTcgMTAwNjQ0Ci0tLSBhL3NyYy9saXNwLmgKKysrIGIvc3JjL2xpc3AuaApAQCAtNjgsOCAr NjgsMTMgQEAgI2RlZmluZSBtYXgoYSwgYikgKChhKSA+IChiKSA/IChhKSA6IChiKSkKICNkZWZp bmUgbWluKGEsIGIpICgoYSkgPCAoYikgPyAoYSkgOiAoYikpCiAKIC8qIFN3YXAgdmFsdWVzIG9m IGEgYW5kIGIuICAqLwotI2RlZmluZSBzd2FwKGEsIGIpIFwKLSAgZG8geyB0eXBlb2YgKGEpIF9f dG1wOyBfX3RtcCA9IChhKTsgKGEpID0gKGIpOyAoYikgPSBfX3RtcDsgfSB3aGlsZSAoMCk7Cisj aWYgX0dMX0hBVkVfX19UWVBFT0ZfXworI2RlZmluZSBzd2FwKHR5cGUsIGEsIGIpCQkJCQkJCVwK KyAgZG8geyBfX3R5cGVvZl9fIChhKSBfX3RtcDsgX190bXAgPSAoYSk7IChhKSA9IChiKTsgKGIp ID0gX190bXA7IH0gd2hpbGUgKDApOworI2Vsc2UKKyNkZWZpbmUgc3dhcCh0eXBlLCBhLCBiKQkJ CQkJCQlcCisgIGRvIHsgdHlwZSBfX3RtcDsgX190bXAgPSAoYSk7IChhKSA9IChiKTsgKGIpID0g X190bXA7IH0gd2hpbGUgKDApOworI2VuZGlmCiAKIC8qIE51bWJlciBvZiBlbGVtZW50cyBpbiBh biBhcnJheS4gICovCiAjZGVmaW5lIEFSUkFZRUxUUyhhcnIpIChzaXplb2YgKGFycikgLyBzaXpl b2YgKGFycilbMF0pCmRpZmYgLS1naXQgYS9zcmMvcmVnZXgtZW1hY3MuYyBiL3NyYy9yZWdleC1l bWFjcy5jCmluZGV4IGZkYzJjYzYzNDQ1Li5hZmFmMGQwNmJkMSAxMDA2NDQKLS0tIGEvc3JjL3Jl Z2V4LWVtYWNzLmMKKysrIGIvc3JjL3JlZ2V4LWVtYWNzLmMKQEAgLTI5MzAsNyArMjkzMCw3IEBA IGZvcmFsbF9maXJzdGNoYXJfMSAocmVfY2hhciAqcCwgcmVfY2hhciAqcGVuZCwKIAkgICAgLyog V2UgaGF2ZSB0byBjaGVjayB0aGF0IGJvdGggZGVzdGluYXRpb25zIGFyZSBzYWZlLgogCSAgICAg ICBBcnJhbmdlIGZvciBgbmV3cDFgIHRvIGJlIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28uICAqLwog CSAgICBpZiAobmV3cDEgPiBuZXdwMikKLQkgICAgICBzd2FwIChuZXdwMSwgbmV3cDIpOworCSAg ICAgIHN3YXAgKHJlX2NoYXIgKiwgbmV3cDEsIG5ld3AyKTsKIAogCSAgICBpZiAobmV3cDIgPD0g cF9vcmlnKSAvKiBCb3RoIGRlc3RpbmF0aW9ucyBnbyBiYWNrd2FyZCEgICovCiAJICAgICAgewpk aWZmIC0tZ2l0IGEvc3JjL3RleHRjb252LmMgYi9zcmMvdGV4dGNvbnYuYwppbmRleCBlMDcwNzUy MmQ3ZS4uYzg1OTlmNzhhNTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXh0Y29udi5jCisrKyBiL3NyYy90 ZXh0Y29udi5jCkBAIC0zODMsOCArMzgzLDggQEAgdGV4dGNvbnZfcXVlcnkgKHN0cnVjdCBmcmFt ZSAqZiwgc3RydWN0IHRleHRjb252X2NhbGxiYWNrX3N0cnVjdCAqcXVlcnksCiAgIGlmIChlbmQg PCBwb3MpCiAgICAgewogICAgICAgZWFzc2VydCAoZW5kX2J5dGUgPCBwb3NfYnl0ZSk7Ci0gICAg ICBzd2FwIChwb3NfYnl0ZSwgZW5kX2J5dGUpOwotICAgICAgc3dhcCAocG9zLCBlbmQpOworICAg ICAgc3dhcCAocHRyZGlmZl90LCBwb3NfYnl0ZSwgZW5kX2J5dGUpOworICAgICAgc3dhcCAocHRy ZGlmZl90LCBwb3MsIGVuZCk7CiAgICAgfQogCiAgIC8qIFJldHVybiB0aGUgc3RyaW5nIGZpcnN0 LiAgKi8KQEAgLTE5MDMsNyArMTkwMyw3IEBAIGdldF9leHRyYWN0ZWRfdGV4dCAoc3RydWN0IGZy YW1lICpmLCBwdHJkaWZmX3QgbiwKIAogCSAgLyogU29ydCBzdGFydCBhbmQgZW5kLiAgKi8KIAkg IGlmIChzdGFydCA+IGVuZCkKLQkgICAgc3dhcCAoc3RhcnQsIGVuZCk7CisJICAgIHN3YXAgKHB0 cmRpZmZfdCwgc3RhcnQsIGVuZCk7CiAJfQogICAgICAgZWxzZQogCWdvdG8gZmluaXNoOwpAQCAt MjAwMiw3ICsyMDAyLDcgQEAgZ2V0X3N1cnJvdW5kaW5nX3RleHQgKHN0cnVjdCBmcmFtZSAqZiwg cHRyZGlmZl90IGxlZnQsCiAgIC8qIE5vdyBzb3J0IHN0YXJ0IGFuZCBlbmQuICAqLwogCiAgIGlm IChlbmQgPCBzdGFydCkKLSAgICBzd2FwIChzdGFydCwgZW5kKQorICAgIHN3YXAgKHB0cmRpZmZf dCwgc3RhcnQsIGVuZCkKIAogICAvKiBBbmQgc3VidHJhY3QgbGVmdCBhbmQgcmlnaHQuICAqLwog CmRpZmYgLS1naXQgYS9zcmMvdGV4dHByb3AuYyBiL3NyYy90ZXh0cHJvcC5jCmluZGV4IGVjOTQz NTIxOWVhLi4xMThhNTgzMWMxMCAxMDA2NDQKLS0tIGEvc3JjL3RleHRwcm9wLmMKKysrIGIvc3Jj L3RleHRwcm9wLmMKQEAgLTE0Miw3ICsxNDIsNyBAQCB2YWxpZGF0ZV9pbnRlcnZhbF9yYW5nZSAo TGlzcF9PYmplY3Qgb2JqZWN0LCBMaXNwX09iamVjdCAqYmVnaW4sCiAgICAgcmV0dXJuIE5VTEw7 CiAKICAgaWYgKFhGSVhOVU0gKCpiZWdpbikgPiBYRklYTlVNICgqZW5kKSkKLSAgICBzd2FwICgq YmVnaW4sICplbmQpOworICAgIHN3YXAgKExpc3BfT2JqZWN0LCAqYmVnaW4sICplbmQpOwogCiAg IGlmIChCVUZGRVJQIChvYmplY3QpKQogICAgIHsKQEAgLTIxOTYsNyArMjE5Niw3IEBAIHZlcmlm eV9pbnRlcnZhbF9tb2RpZmljYXRpb24gKHN0cnVjdCBidWZmZXIgKmJ1ZiwKICAgICByZXR1cm47 CiAKICAgaWYgKHN0YXJ0ID4gZW5kKQotICAgIHN3YXAgKHN0YXJ0LCBlbmQpOworICAgIHN3YXAg KHB0cmRpZmZfdCwgc3RhcnQsIGVuZCk7CiAKICAgLyogRm9yIGFuIGluc2VydCBvcGVyYXRpb24s IGNoZWNrIHRoZSB0d28gY2hhcnMgYXJvdW5kIHRoZSBwb3NpdGlvbi4gICovCiAgIGlmIChzdGFy dCA9PSBlbmQpCmRpZmYgLS1naXQgYS9zcmMvdzMydW5pc2NyaWJlLmMgYi9zcmMvdzMydW5pc2Ny aWJlLmMKaW5kZXggYzQxNzE1OWNmOWUuLjc5OGE5MGJmNTk0IDEwMDY0NAotLS0gYS9zcmMvdzMy dW5pc2NyaWJlLmMKKysrIGIvc3JjL3czMnVuaXNjcmliZS5jCkBAIC03NjgsNyArNzY4LDcgQEAg I2RlZmluZSBPVEZfSU5UMTZfVkFMKFRBQkxFLCBPRkZTRVQsIFBUUikJCSAgICAgXAogICAgIEJZ VEUgZGF0YVsyXTsJCQkJCSAgICAgXAogICAgIGlmIChHZXRGb250RGF0YSAoY29udGV4dCwgVEFC TEUsIE9GRlNFVCwgZGF0YSwgMikgIT0gMikgIFwKICAgICAgIGdvdG8gZm9udF90YWJsZV9lcnJv cjsJCQkJICAgICBcCi0gICAgc3dhcCAoZGF0YVswXSwgZGF0YVsxXSk7CQkJCSAgICAgXAorICAg IHN3YXAgKEJZVEUsIGRhdGFbMF0sIGRhdGFbMV0pOwkJCSAgICAgXAogICAgIG1lbWNweSAoUFRS LCBkYXRhLCAyKTsJCQkJICAgICBcCiAgIH0gd2hpbGUgKDApCiAKZGlmZiAtLWdpdCBhL3NyYy94 ZmFjZXMuYyBiL3NyYy94ZmFjZXMuYwppbmRleCBmNzllYjAyMmUxNS4uOTVhZTNiNGIxYmMgMTAw NjQ0Ci0tLSBhL3NyYy94ZmFjZXMuYworKysgYi9zcmMveGZhY2VzLmMKQEAgLTEzNTcsNyArMTM1 Nyw3IEBAIGxvYWRfZmFjZV9jb2xvcnMgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGZhY2UgKmZh Y2UsCiAKICAgLyogU3dhcCBjb2xvcnMgaWYgZmFjZSBpcyBpbnZlcnNlLXZpZGVvLiAgKi8KICAg aWYgKEVRIChhdHRyc1tMRkFDRV9JTlZFUlNFX0lOREVYXSwgUXQpKQotICAgIHN3YXAgKGZnLCBi Zyk7CisgICAgc3dhcCAoTGlzcF9PYmplY3QsIGZnLCBiZyk7CiAKICAgLyogQ2hlY2sgZm9yIHN1 cHBvcnQgZm9yIGZvcmVncm91bmQsIG5vdCBmb3IgYmFja2dyb3VuZCBiZWNhdXNlCiAgICAgIGZh Y2VfY29sb3Jfc3VwcG9ydGVkX3AgaXMgc21hcnQgZW5vdWdoIHRvIGtub3cgdGhhdCBncmF5cyBh cmUKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJtLmMKaW5kZXggMGI4M2IwNTU0 YjMuLjkyZTUxNTc3Y2VjIDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYworKysgYi9zcmMveHRlcm0u YwpAQCAtMTU3MSw4ICsxNTcxLDggQEAgI2RlZmluZSBTV0FQQ0FSRDMyKGwpCQkJCVwKICAgICBz dHJ1Y3QgeyB1bnNpZ25lZCB0IDogMzI7IH0gYml0MzI7CQlcCiAgICAgY2hhciAqdHAgPSAoY2hh ciAqKSAmYml0MzI7CQkJXAogICAgIGJpdDMyLnQgPSBsOwkJCQlcCi0gICAgc3dhcCAodHBbMF0s IHRwWzNdKTsJCQlcCi0gICAgc3dhcCAodHBbMV0sIHRwWzJdKTsJCQlcCisgICAgc3dhcCAoY2hh ciwgdHBbMF0sIHRwWzNdKTsJCQlcCisgICAgc3dhcCAoY2hhciwgdHBbMV0sIHRwWzJdKTsJCQlc CiAgICAgbCA9IGJpdDMyLnQ7CQkJCVwKICAgfQogCkBAIC0xNTgxLDcgKzE1ODEsNyBAQCAjZGVm aW5lIFNXQVBDQVJEMTYocykJCQkJXAogICAgIHN0cnVjdCB7IHVuc2lnbmVkIHQgOiAxNjsgfSBi aXQxNjsJCVwKICAgICBjaGFyICp0cCA9IChjaGFyICopICZiaXQxNjsJCQlcCiAgICAgYml0MTYu dCA9IHM7CQkJCVwKLSAgICBzd2FwICh0cFswXSwgdHBbMV0pOwkJCVwKKyAgICBzd2FwIChjaGFy LCB0cFswXSwgdHBbMV0pOwkJCVwKICAgICBzID0gYml0MTYudDsJCQkJXAogICB9CiAK --00000000000023f51a060e43107c--