From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Newsgroups: gmane.lisp.guile.bugs Subject: bug#28590: [PATCH 6/7] weak-table: 'rob_from_rich' accounts for disappeared entries. Date: Tue, 3 Oct 2017 13:43:51 +0200 Message-ID: <20171003114352.13984-7-ludo@gnu.org> References: <20171003114352.13984-1-ludo@gnu.org> NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1507031184 14027 195.159.176.226 (3 Oct 2017 11:46:24 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 3 Oct 2017 11:46:24 +0000 (UTC) Cc: Ludovic =?UTF-8?Q?Court=C3=A8s?= , 28590@debbugs.gnu.org To: wingo@igalia.com Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Tue Oct 03 13:46:13 2017 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dzLeP-00031a-Fu for guile-bugs@m.gmane.org; Tue, 03 Oct 2017 13:46:13 +0200 Original-Received: from localhost ([::1]:57955 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dzLeT-00031E-Q1 for guile-bugs@m.gmane.org; Tue, 03 Oct 2017 07:46:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dzLeI-00030P-1v for bug-guile@gnu.org; Tue, 03 Oct 2017 07:46:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dzLeG-0006d1-VV for bug-guile@gnu.org; Tue, 03 Oct 2017 07:46:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:36644) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dzLeG-0006cx-S3 for bug-guile@gnu.org; Tue, 03 Oct 2017 07:46:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dzLeG-0006lc-Ls; Tue, 03 Oct 2017 07:46:04 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Tue, 03 Oct 2017 11:46:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28590 X-GNU-PR-Package: guile X-GNU-PR-Keywords: Original-Received: via spool by 28590-submit@debbugs.gnu.org id=B28590.150703111525879 (code B ref 28590); Tue, 03 Oct 2017 11:46:04 +0000 Original-Received: (at 28590) by debbugs.gnu.org; 3 Oct 2017 11:45:15 +0000 Original-Received: from localhost ([127.0.0.1]:45316 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dzLdT-0006jJ-Ba for submit@debbugs.gnu.org; Tue, 03 Oct 2017 07:45:15 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:42658) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dzLdQ-0006hn-8e for 28590@debbugs.gnu.org; Tue, 03 Oct 2017 07:45:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dzLdF-0005rZ-Bp for 28590@debbugs.gnu.org; Tue, 03 Oct 2017 07:45:07 -0400 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:59156) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dzLcZ-0005DO-DN; Tue, 03 Oct 2017 07:44:19 -0400 Original-Received: from [193.50.110.164] (port=33316 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dzLcY-0000d1-Vr; Tue, 03 Oct 2017 07:44:19 -0400 X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171003114352.13984-1-ludo@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:8841 Archived-At: * libguile/weak-table.c (rob_from_rich): Leave the loop also if 'key' or 'value' is zero. Reset 'hash'. --- libguile/weak-table.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libguile/weak-table.c b/libguile/weak-table.c index 5c4b3d30a..24fff4e73 100644 --- a/libguile/weak-table.c +++ b/libguile/weak-table.c @@ -292,7 +292,11 @@ rob_from_rich (scm_t_weak_table *table, unsigned long k) empty = k; do empty = (empty + 1) % size; - while (table->entries[empty].hash); + while (table->entries[empty].hash + && table->entries[empty].key + && table->entries[empty].value); + + table->entries[empty].hash = 0; do { -- 2.14.2