From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id vetnHxtcX2pT5B8AWB0awg (envelope-from ) for ; Tue, 21 Jul 2026 07:46:35 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=eBMF3mX0; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=V1SfPVlX; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=eBMF3mX0; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=V1SfPVlX; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 6D94D1E099; Tue, 21 Jul 2026 07:46:35 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id ED1F61E099 for ; Tue, 21 Jul 2026 07:46:33 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0D04F4BA23F0 for ; Tue, 21 Jul 2026 11:46:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0D04F4BA23F0 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=eBMF3mX0; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=V1SfPVlX; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=eBMF3mX0; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=V1SfPVlX Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2a07:de40:b251:101:10:150:64:2]) by sourceware.org (Postfix) with ESMTPS id 7166E4BA2E17 for ; Tue, 21 Jul 2026 11:46:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7166E4BA2E17 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7166E4BA2E17 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:2 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1784634360; cv=none; b=ZrJjn29+Mj9rNEGjGZa5Z1JWBf+fzePEPBPlKuK0QxSEHXMr8CNlofkd/ZojPlW6NJ2BcxJEvvYWnR7FtEhkm5P3fiWD2O4Y8qL9Fo/D4acOcN3OGLgZNPFMUWgsCVYGeWO2cwDtRDBpc/d67IYYUvKoA4ZvZXezjTOnyqJa3QQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1784634360; c=relaxed/simple; bh=a8KjIDiqUpcUjo16Xe51wrtHxTFfUjRSeBYkd9ySyK8=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature: Message-ID:Date:MIME-Version:Subject:To:From; b=KOGsq7edm9et1S1oWWT9aciVTGub53NtRZR9DtJVqTrBowOe4drkfmFm0ANtehwJz6AFKXCJGHNkZcB/MR1N6zGMQNgZJDG87gT3xyXLG5/ky35lO9Zu3unMnYeixJ22T1E5dwQEKlGafUZ9Z+I9bBNRE42byyBZqFZ+xmOz+yA= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=eBMF3mX0; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=V1SfPVlX; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=eBMF3mX0; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=V1SfPVlX DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7166E4BA2E17 Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id C89513E09; Tue, 21 Jul 2026 11:45:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1784634358; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dSZXoC8eGHiPbkuGr6mhf4u7NW+tTn1jF8LVxviRlog=; b=eBMF3mX0AwTg4X3+C+NeWkvJKShfuuY8QI1DxFKuJogqAvleUel6ViadYxtXTTcMJpPqNM xCBwS3yiGOoNc1rkr3kpX4VR5PL/z3vul12hKQ5Znc/DEmz3hFGQtocVkILVASQ8CQ9VMy jG5BIdQwQAIa1lMsezxAubfRdLRFHxg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1784634358; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dSZXoC8eGHiPbkuGr6mhf4u7NW+tTn1jF8LVxviRlog=; b=V1SfPVlXgRNXX+Vyn8MFsXlx5BVQtzNnW5uCAjm4peKgRVHuxuSavgej0GQ9a3k6gVXnvJ iU5HgWRxBWZ4jdAQ== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1784634358; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dSZXoC8eGHiPbkuGr6mhf4u7NW+tTn1jF8LVxviRlog=; b=eBMF3mX0AwTg4X3+C+NeWkvJKShfuuY8QI1DxFKuJogqAvleUel6ViadYxtXTTcMJpPqNM xCBwS3yiGOoNc1rkr3kpX4VR5PL/z3vul12hKQ5Znc/DEmz3hFGQtocVkILVASQ8CQ9VMy jG5BIdQwQAIa1lMsezxAubfRdLRFHxg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1784634358; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dSZXoC8eGHiPbkuGr6mhf4u7NW+tTn1jF8LVxviRlog=; b=V1SfPVlXgRNXX+Vyn8MFsXlx5BVQtzNnW5uCAjm4peKgRVHuxuSavgej0GQ9a3k6gVXnvJ iU5HgWRxBWZ4jdAQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id B21B1779AA; Tue, 21 Jul 2026 11:45:58 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id /58UKvZbX2qDIwAAD6G6ig (envelope-from ); Tue, 21 Jul 2026 11:45:58 +0000 Content-Type: multipart/mixed; boundary="------------gA50m0mI8u17x1lougiF4Cyi" Message-ID: <464776ce-eadc-4ad9-8757-87e4457c7ce9@suse.de> Date: Tue, 21 Jul 2026 13:45:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 0/4] Python safety initial work To: Tom Tromey Cc: gdb-patches@sourceware.org References: <20260521-python-safety-initial-v3-0-d0679c36e499@tromey.com> <87qzmbdb6p.fsf@tromey.com> <87fr1e99yh.fsf@tromey.com> Content-Language: en-US From: Tom de Vries In-Reply-To: <87fr1e99yh.fsf@tromey.com> X-Spamd-Result: default: False [-3.13 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MIME_BASE64_TEXT_BOGUS(1.00)[]; NEURAL_HAM_LONG(-0.93)[-0.934]; NEURAL_HAM_SHORT(-0.20)[-0.992]; MIME_GOOD(-0.10)[multipart/mixed,text/plain,text/x-patch]; MIME_BASE64_TEXT(0.10)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FUZZY_RATELIMITED(0.00)[rspamd.com]; ARC_NA(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; MIME_TRACE(0.00)[0:+,1:+,2:+]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; RCVD_TLS_ALL(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; TO_DN_SOME(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; HAS_ATTACHMENT(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email, suse.de:mid, imap1.dmz-prg2.suse.org:helo] X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org This is a multi-part message in MIME format. --------------gA50m0mI8u17x1lougiF4Cyi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 7/19/26 7:16 PM, Tom Tromey wrote: >>>>>> "Tom" == Tom Tromey writes: > >>>>>> "Tom" == Tom Tromey writes: > Tom> I rewrote my earlier Python safety series to use methods a while back. > Tom> And while I like the result, I got bogged down converting things, so I > Tom> thought I'd send some initial work, with the idea that if this looks > Tom> good, other code can be transformed in pieces. > > Tom> Ping. > > Ping again - any thoughts on this? > > Tom I applied the series and tried to use it. I found this code: ... /* Note this returns a borrowed reference. */ PyObject *arg = PyTuple_GetItem (args, i); ... and decided to try to convert all PyTuple_GetItem calls. The result of that exercise is attached. I ended up also touching the wrapper function: ... static inline gdbpy_borrowed_ref<> gdbpy_tuple_get_item (gdbpy_borrowed_ref<> tuple, Py_ssize_t pos) { - PyObject *result = PyTuple_GetItem (tuple, pos); + gdbpy_opt_borrowed_ref<> result = PyTuple_GetItem (tuple, pos); if (result == nullptr) throw gdb_python_exception (); - return result; + return (PyObject *)result; } ... but perhaps you left that out intentionally? Anyway, having done this exercise, I like the idea of making borrowed refs explicit in a type. I haven't used the gdbpy_tuple_get_item wrapper, AFAICT it was not applicable. Acked-By: Tom de Vries Thanks, - Tom --------------gA50m0mI8u17x1lougiF4Cyi Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-python-Use-gdbpy_borrowed_ref-for-PyTuple_GetIte.patch" Content-Disposition: attachment; filename*0="0001-gdb-python-Use-gdbpy_borrowed_ref-for-PyTuple_GetIte.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjMTRkNjE5NjRlMTI4ODk1MWFiMmJmMDIwZDdkNzVkZTdiMzNhYWEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IFR1ZSwgMjEgSnVsIDIwMjYgMTI6NDQ6MTIgKzAyMDAKU3ViamVjdDogW1BBVENI XSBbZ2RiL3B5dGhvbl0gVXNlIGdkYnB5X2JvcnJvd2VkX3JlZiBmb3IgUHlUdXBsZV9HZXRJ dGVtCgpVc2UgZ2RicHlfYm9ycm93ZWRfcmVmIGFuZCBnZGJweV9vcHRfYm9ycm93ZWRfcmVm IGFzIHJldHVybiB0eXBlIG9mClB5VHVwbGVfR2V0SXRlbS4KLS0tCiBnZGIvcHl0aG9uL3B5 LWNvbG9yLmMgICAgfCAgMiArLQogZ2RiL3B5dGhvbi9weS1taS5jICAgICAgIHwgIDMgKy0t CiBnZGIvcHl0aG9uL3B5LXVud2luZC5jICAgfCAxMCArKysrKy0tLS0tCiBnZGIvcHl0aG9u L3B5LXZhbHVlLmMgICAgfCAgMiArLQogZ2RiL3B5dGhvbi9weS13cmFwcGVycy5oIHwgIDQg KystLQogNSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWNvbG9yLmMgYi9nZGIvcHl0aG9uL3B5 LWNvbG9yLmMKaW5kZXggMjlhNDI5NzdhZGMuLjYyMzYwMzMzZjhiIDEwMDY0NAotLS0gYS9n ZGIvcHl0aG9uL3B5LWNvbG9yLmMKKysrIGIvZ2RiL3B5dGhvbi9weS1jb2xvci5jCkBAIC0y MzEsNyArMjMxLDcgQEAgY29sb3JweV9pbml0IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3Qg KmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogCSAgdWludDhfdCByZ2JbM107CiAJICBmb3IgKGlu dCBpID0gMDsgaSA8IDM7ICsraSkKIAkgICAgewotCSAgICAgIFB5T2JqZWN0ICppdGVtID0g UHlUdXBsZV9HZXRJdGVtICh2YWx1ZV9vYmosIGkpOworCSAgICAgIGdkYnB5X2JvcnJvd2Vk X3JlZjw+IGl0ZW0gPSBQeVR1cGxlX0dldEl0ZW0gKHZhbHVlX29iaiwgaSk7CiAJICAgICAg aWYgKCFQeUxvbmdfQ2hlY2sgKGl0ZW0pKQogCQllcnJvciAoXygiSXRlbSAlZCBvZiBhbiBS R0IgdHVwbGUgbXVzdCBiZSBpbnRlZ2VyLiIpLCBpKTsKIAkgICAgICBsb25nIGl0ZW1fdmFs dWUgPSAtMTsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktbWkuYyBiL2dkYi9weXRob24v cHktbWkuYwppbmRleCA3M2RhZWZlY2IyMC4uNWYxNGNlZmIxMzQgMTAwNjQ0Ci0tLSBhL2dk Yi9weXRob24vcHktbWkuYworKysgYi9nZGIvcHl0aG9uL3B5LW1pLmMKQEAgLTE1Miw4ICsx NTIsNyBAQCBnZGJweV9leGVjdXRlX21pX2NvbW1hbmQgKFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogCiAgIGZvciAoUHlfc3NpemVfdCBpID0gMDsg aSA8IG5fYXJnczsgKytpKQogICAgIHsKLSAgICAgIC8qIE5vdGUgdGhpcyByZXR1cm5zIGEg Ym9ycm93ZWQgcmVmZXJlbmNlLiAgKi8KLSAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxl X0dldEl0ZW0gKGFyZ3MsIGkpOworICAgICAgZ2RicHlfb3B0X2JvcnJvd2VkX3JlZjw+IGFy ZyA9IFB5VHVwbGVfR2V0SXRlbSAoYXJncywgaSk7CiAgICAgICBpZiAoYXJnID09IG51bGxw dHIpCiAJcmV0dXJuIG51bGxwdHI7CiAgICAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxj aGFyPiBzdHIgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChhcmcpOwpkaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9weS11bndpbmQuYyBiL2dkYi9weXRob24vcHktdW53aW5kLmMK aW5kZXggMTNlY2VkNGNlY2IuLjI3OWVlOTIyZDRlIDEwMDY0NAotLS0gYS9nZGIvcHl0aG9u L3B5LXVud2luZC5jCisrKyBiL2dkYi9weXRob24vcHktdW53aW5kLmMKQEAgLTkxOCw4ICs5 MTgsOCBAQCBmcmFtZV91bndpbmRfcHl0aG9uOjpzbmlmZiAoY29uc3QgZnJhbWVfaW5mb19w dHIgJnRoaXNfZnJhbWUsCiAKICAgaWYgKHB5dXdfZGVidWcpCiAgICAgewotICAgICAgUHlP YmplY3QgKnB5b191bndpbmRlcl9uYW1lID0gUHlUdXBsZV9HZXRJdGVtIChweW9fZXhlY3V0 ZV9yZXQuZ2V0ICgpLCAxKTsKLSAgICAgIGdkYl9hc3NlcnQgKHB5b191bndpbmRlcl9uYW1l ICE9IG51bGxwdHIpOworICAgICAgZ2RicHlfYm9ycm93ZWRfcmVmPD4gcHlvX3Vud2luZGVy X25hbWUKKwk9IFB5VHVwbGVfR2V0SXRlbSAocHlvX2V4ZWN1dGVfcmV0LmdldCAoKSwgMSk7 CiAgICAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBuYW1lCiAJPSBweXRob25f c3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChweW9fdW53aW5kZXJfbmFtZSk7CiAKQEAgLTkzNSwx NSArOTM1LDE1IEBAIGZyYW1lX3Vud2luZF9weXRob246OnNuaWZmIChjb25zdCBmcmFtZV9p bmZvX3B0ciAmdGhpc19mcmFtZSwKICAgICB9CiAKICAgLyogUmVjZWl2ZWQgVW53aW5kSW5m bywgY2FjaGUgZGF0YS4gICovCi0gIFB5T2JqZWN0ICpweW9fdW53aW5kX2luZm8gPSBQeVR1 cGxlX0dldEl0ZW0gKHB5b19leGVjdXRlX3JldC5nZXQgKCksIDApOwotICBnZGJfYXNzZXJ0 IChweW9fdW53aW5kX2luZm8gIT0gbnVsbHB0cik7CisgIGdkYnB5X2JvcnJvd2VkX3JlZjw+ IHB5b191bndpbmRfaW5mbworICAgID0gUHlUdXBsZV9HZXRJdGVtIChweW9fZXhlY3V0ZV9y ZXQuZ2V0ICgpLCAwKTsKICAgaWYgKCFQeU9iamVjdF9UeXBlQ2hlY2sgKHB5b191bndpbmRf aW5mbywgJnVud2luZF9pbmZvX29iamVjdF90eXBlKSkKICAgICBlcnJvciAoXygiYW4gVW53 aW5kZXIgc2hvdWxkIHJldHVybiBnZGIuVW53aW5kSW5mbywgbm90ICVzLiIpLAogCSAgIGdk YnB5X3B5X29ial90cF9uYW1lIChweW9fdW53aW5kX2luZm8pLmNfc3RyICgpKTsKIAogICB7 CiAgICAgdW53aW5kX2luZm9fb2JqZWN0ICp1bndpbmRfaW5mbyA9Ci0gICAgICAodW53aW5k X2luZm9fb2JqZWN0ICopIHB5b191bndpbmRfaW5mbzsKKyAgICAgICh1bndpbmRfaW5mb19v YmplY3QgKikgKFB5T2JqZWN0ICopcHlvX3Vud2luZF9pbmZvOwogICAgIGludCByZWdfY291 bnQgPSB1bndpbmRfaW5mby0+c2F2ZWRfcmVncy0+c2l6ZSAoKTsKIAogICAgIGNhY2hlZF9m cmFtZQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5jIGIvZ2RiL3B5dGhvbi9w eS12YWx1ZS5jCmluZGV4IDViMzgxMTAzOTZlLi4wNTI1ZjRiOGJjOSAxMDA2NDQKLS0tIGEv Z2RiL3B5dGhvbi9weS12YWx1ZS5jCisrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYwpAQCAt MTIwOCw3ICsxMjA4LDcgQEAgdmFscHlfY2FsbCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0 ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMpCiAgICAgICB2YXJncyA9IFhBTExPQ0FWRUMg KHN0cnVjdCB2YWx1ZSAqLCBhcmdzX2NvdW50KTsKICAgICAgIGZvciAoaSA9IDA7IGkgPCBh cmdzX2NvdW50OyBpKyspCiAJewotCSAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dldEl0 ZW0gKGFyZ3MsIGkpOworCSAgZ2RicHlfb3B0X2JvcnJvd2VkX3JlZjw+IGl0ZW0gPSBQeVR1 cGxlX0dldEl0ZW0gKGFyZ3MsIGkpOwogCiAJICBpZiAoaXRlbSA9PSBOVUxMKQogCSAgICBy ZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktd3JhcHBlcnMuaCBiL2dk Yi9weXRob24vcHktd3JhcHBlcnMuaAppbmRleCA2YzJiNWU0ZDQxZS4uYmUwYTBlMzFlZjUg MTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHktd3JhcHBlcnMuaAorKysgYi9nZGIvcHl0aG9u L3B5LXdyYXBwZXJzLmgKQEAgLTI4NSwxMCArMjg1LDEwIEBAIGdkYnB5X3R1cGxlX25ldyAo UHlfc3NpemVfdCBsZW4pCiBzdGF0aWMgaW5saW5lIGdkYnB5X2JvcnJvd2VkX3JlZjw+CiBn ZGJweV90dXBsZV9nZXRfaXRlbSAoZ2RicHlfYm9ycm93ZWRfcmVmPD4gdHVwbGUsIFB5X3Nz aXplX3QgcG9zKQogewotICBQeU9iamVjdCAqcmVzdWx0ID0gUHlUdXBsZV9HZXRJdGVtICh0 dXBsZSwgcG9zKTsKKyAgZ2RicHlfb3B0X2JvcnJvd2VkX3JlZjw+IHJlc3VsdCA9IFB5VHVw bGVfR2V0SXRlbSAodHVwbGUsIHBvcyk7CiAgIGlmIChyZXN1bHQgPT0gbnVsbHB0cikKICAg ICB0aHJvdyBnZGJfcHl0aG9uX2V4Y2VwdGlvbiAoKTsKLSAgcmV0dXJuIHJlc3VsdDsKKyAg cmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKIH0KIAogLyogV3JhcHBlciBmb3IgUHlUdXBs ZV9TZXRJdGVtLiAgKi8KCmJhc2UtY29tbWl0OiA5MDM2OTc5ZmY4NGQzODcyMTEzMTU4MDFh MmIwNjExZjdiNzE2ZWEwCi0tIAoyLjUxLjAKCg== --------------gA50m0mI8u17x1lougiF4Cyi--