From MAILER-DAEMON Tue Jun 01 00:13:35 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BV0ec-0006BH-W2 for mharc-commit-classpath@gnu.org; Tue, 01 Jun 2004 00:13:35 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BV0ea-00069o-Tf for commit-classpath@gnu.org; Tue, 01 Jun 2004 00:13:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BV0eZ-000678-52 for commit-classpath@gnu.org; Tue, 01 Jun 2004 00:13:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BV0eZ-000671-2h for commit-classpath@gnu.org; Tue, 01 Jun 2004 00:13:31 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BV0eI-0002iu-UK for commit-classpath@gnu.org; Tue, 01 Jun 2004 00:13:15 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 140436245B for ; Tue, 1 Jun 2004 04:13:13 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 58729-10 for ; Tue, 1 Jun 2004 04:13:12 +0000 (GMT) Received: from reali.dnsalias.net (212-41-95-10.adsl.solnet.ch [212.41.95.10]) by mail01.solnet.ch (Postfix) with ESMTP id E45A562474 for ; Tue, 1 Jun 2004 04:13:11 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 033903221B; Tue, 1 Jun 2004 06:10:11 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040601041011.033903221B@reali.dnsalias.net> Date: Tue, 1 Jun 2004 06:10:11 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040601 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Jun 2004 04:13:33 -0000 From MAILER-DAEMON Tue Jun 01 13:02:12 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVCeS-0000DC-Sn for mharc-commit-classpath@gnu.org; Tue, 01 Jun 2004 13:02:12 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVCeS-0000D4-62 for commit-classpath@gnu.org; Tue, 01 Jun 2004 13:02:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVCeQ-0000Cs-Lt for commit-classpath@gnu.org; Tue, 01 Jun 2004 13:02:11 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVCeQ-0000Cp-JO for commit-classpath@gnu.org; Tue, 01 Jun 2004 13:02:10 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVCe8-0006Ae-RB for commit-classpath@gnu.org; Tue, 01 Jun 2004 13:01:52 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVCdt-0003RA-95 for commit-classpath@gnu.org; Tue, 01 Jun 2004 13:01:38 -0400 From: "Tom Quarendon" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:80 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9177 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705) X-Apparently-From: 193.195.78.165 X-Copy-To: Array Message-Id: Date: Tue, 01 Jun 2004 13:02:11 -0400 Subject: [bugs #9177] Can't call Charset.decode twice X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Jun 2004 17:02:12 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9177] Full Item Snapshot: URL: Project: classpath Submitted by: Tom Quarendon On: Tue 06/01/2004 at 17:01 Severity: 5 - Average Resolution: None Assigned to: None Status: Open Platform Version: None Summary: Can't call Charset.decode twice Original Submission: If you attempt to call Charset.decode twice, you get an error. Seems like the CharsetDecoder.decode(ByteBuffer) method should call reset() on itself having finished a decode operation, so that the next call to decode doesn't complain with an IllegalStateException. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Wed Jun 02 00:15:46 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVNAI-0004nC-IB for mharc-commit-classpath@gnu.org; Wed, 02 Jun 2004 00:15:46 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVNAH-0004mz-NR for commit-classpath@gnu.org; Wed, 02 Jun 2004 00:15:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVNAF-0004mR-QZ for commit-classpath@gnu.org; Wed, 02 Jun 2004 00:15:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVNAF-0004mO-Nu for commit-classpath@gnu.org; Wed, 02 Jun 2004 00:15:43 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVN9X-00057r-SZ for commit-classpath@gnu.org; Wed, 02 Jun 2004 00:15:00 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 7F44B62408 for ; Wed, 2 Jun 2004 04:14:58 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01462-02 for ; Wed, 2 Jun 2004 04:14:57 +0000 (GMT) Received: from reali.dnsalias.net (212-41-95-10.adsl.solnet.ch [212.41.95.10]) by mail01.solnet.ch (Postfix) with ESMTP id 61858623F0 for ; Wed, 2 Jun 2004 04:14:57 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id EA7193450E; Wed, 2 Jun 2004 06:11:56 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040602041156.EA7193450E@reali.dnsalias.net> Date: Wed, 2 Jun 2004 06:11:56 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040602 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Jun 2004 04:15:46 -0000 From MAILER-DAEMON Wed Jun 02 18:27:26 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVeCk-0002PN-Cr for mharc-commit-classpath@gnu.org; Wed, 02 Jun 2004 18:27:26 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVeCi-0002PH-1g for commit-classpath@gnu.org; Wed, 02 Jun 2004 18:27:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVeCg-0002P5-BO for commit-classpath@gnu.org; Wed, 02 Jun 2004 18:27:23 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVeCg-0002P2-7z for commit-classpath@gnu.org; Wed, 02 Jun 2004 18:27:22 -0400 Received: from [219.160.177.9] (helo=asao.gcd.org) by monty-python.gnu.org with smtp (Exim 4.34) id 1BVeBw-0007aI-3M for commit-classpath@gnu.org; Wed, 02 Jun 2004 18:26:38 -0400 Received: (qmail 7644 invoked by uid 10); 3 Jun 2004 07:26:31 +0900 Received: (qmail 12434 invoked by uid 1000); 2 Jun 2004 22:26:24 -0000 Message-ID: <20040602222624.12427.qmail@maczuka.gcd.org> From: Ito Kazumitsu To: commit-classpath@gnu.org In-reply-to: Your message of "Wed, 02 Jun 2004 20:21:10 +0200" References: <20040601144803.1138.qmail@maczuka.gcd.org> <1086119375.1106.15.camel@localhost> User-Agent: EMH/1.10.0 SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.2 (i386-unknown-freebsd4.7) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: text/plain; charset=US-ASCII Date: Thu, 03 Jun 2004 07:26:21 +0900 Sender: kaz@maczuka.gcd.org Subject: java.io.File#toURI() X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Jun 2004 22:27:24 -0000 Hi, I originally posted this to the general discussion list. But I should have sent it here. ChangeLog entry: 2004-06-02 Ito Kazumitsu * java/io/File.java (toURI): Use new URI(scheme, userInfo, host, port, path, query, fragment). --- java/io/File.java.orig Tue Jun 1 22:52:28 2004 +++ java/io/File.java Thu Jun 3 07:08:16 2004 @@ -781,7 +781,9 @@ try { - return new URI("file", "", abspath.replace(separatorChar, '/')); + return new URI("file", null, null, -1, + abspath.replace(separatorChar, '/'), + null, null); } catch (URISyntaxException use) { From MAILER-DAEMON Thu Jun 03 00:08:44 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVjX1-0003e1-Te for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 00:08:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVjX0-0003dv-JD for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:08:42 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVjWz-0003dj-37 for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:08:42 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVjWy-0003dg-W4 for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:08:41 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVjWI-0001dQ-IS for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:07:58 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 12FDB62405 for ; Thu, 3 Jun 2004 04:07:58 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24491-08 for ; Thu, 3 Jun 2004 04:07:57 +0000 (GMT) Received: from reali.dnsalias.net (212-41-64-252.adsl.solnet.ch [212.41.64.252]) by mail01.solnet.ch (Postfix) with ESMTP id 008F362419 for ; Thu, 3 Jun 2004 04:07:57 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 7659BCC72F; Thu, 3 Jun 2004 06:04:56 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040603040456.7659BCC72F@reali.dnsalias.net> Date: Thu, 3 Jun 2004 06:04:56 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040603 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 04:08:42 -0000 From MAILER-DAEMON Thu Jun 03 00:25:38 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVjnN-0000Wo-Ve for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 00:25:38 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVjnM-0000W9-5O for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:25:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVjnL-0000Vp-Hr for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:25:35 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVjnL-0000Vm-DH for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:25:35 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVjmu-0005fR-Pw for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:25:10 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVjmg-00063n-9Z for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:24:54 -0400 From: "Casey Marshall" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3115 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5; No time for love, Dr. Jones) Gecko/20030715 X-Apparently-From: 24.6.46.122 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 00:25:35 -0400 Subject: [patch #3115] Various fixes to security classes X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 04:25:36 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3115] Full Item Snapshot: URL: Project: classpath Submitted by: Casey Marshall On: Thu 06/03/2004 at 04:24 Category: None Priority: 2 Resolution: None Assigned to: None Originator Email: Status: Open Summary: Various fixes to security classes Original Submission: This patch fixes various buglets in some java.security classes, and java.util.PropertyPermissionCollection. File Attachments ------------------- ------------------------------------------------------- Date: Thu 06/03/2004 at 04:24 Name: security1.patch Size: 11KB By: rsdio security1.patch http://savannah.gnu.org/patch/download.php?item_id=3115&item_file_id=3337 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 00:28:06 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVjpm-0001rf-4a for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 00:28:06 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVjpi-0001lx-Ns for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:28:02 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVjpg-0001lL-9E for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:28:02 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVjpg-0001kx-6U for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:28:00 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVjoU-00066z-HT for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:26:46 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVjoC-00068f-2d for commit-classpath@gnu.org; Thu, 03 Jun 2004 00:26:31 -0400 From: "Casey Marshall" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3115 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5; No time for love, Dr. Jones) Gecko/20030715 X-Apparently-From: 24.6.46.122 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 00:28:00 -0400 Subject: [patch #3115] Various fixes to security classes X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 04:28:03 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3115] Full Item Snapshot: URL: Project: classpath Submitted by: Casey Marshall On: Thu 06/03/2004 at 04:24 Category: None Priority: 2 Resolution: None Assigned to: None Originator Email: Status: Open Summary: Various fixes to security classes Original Submission: This patch fixes various buglets in some java.security classes, and java.util.PropertyPermissionCollection. File Attachments ------------------- ------------------------------------------------------- Date: Thu 06/03/2004 at 04:26 Name: security-ChangeLog Size: 797KB By: rsdio ChangeLog http://savannah.gnu.org/patch/download.php?item_id=3115&item_file_id=3338 ------------------------------------------------------- Date: Thu 06/03/2004 at 04:24 Name: security1.patch Size: 11KB By: rsdio security1.patch http://savannah.gnu.org/patch/download.php?item_id=3115&item_file_id=3337 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 02:10:40 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVlR1-0007wE-HD for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 02:10:40 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVlR0-0007vt-0k for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:10:38 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVlQz-0007va-EC for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:10:37 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVlQz-0007vX-6Y for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:10:37 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVlQ0-0004Hs-P2 for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:09:39 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVlPm-0003rn-C1 for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:09:22 -0400 From: "Casey Marshall" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3116 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5; No time for love, Dr. Jones) Gecko/20030715 X-Apparently-From: 24.6.46.122 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 02:10:37 -0400 Subject: [patch #3116] Implement AccessController.getContext X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 06:10:38 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3116] Full Item Snapshot: URL: Project: classpath Submitted by: Casey Marshall On: Thu 06/03/2004 at 06:09 Category: None Priority: 2 Resolution: None Assigned to: None Originator Email: Status: Open Summary: Implement AccessController.getContext Original Submission: This patch implements java.security.AccessController.getContext, by defering the getContext call to a new class, VMAccessController. Most of the logic is already implemented, leaving the only method for a VM to implement getStack, which returns the current Thread's call stack as a pair of lists: classes and method names. VMs can possibly take advantage of the design of VMAccessController, including: - Using pushContext and popContext more effectively. - Modifying getContext for the semantics of that VM's stack idiosyncrasies. Also included is a simple domain combiner that produces the intersection of two sets of protection domains, and an implementation of Policy that parses plain-text description files, similar to those used by Sun's JDK. (comments and critiques welcome) File Attachments ------------------- ------------------------------------------------------- Date: Thu 06/03/2004 at 06:09 Name: security2.patch Size: 40KB By: rsdio security2.patch http://savannah.gnu.org/patch/download.php?item_id=3116&item_file_id=3339 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 02:23:32 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVldU-0002Ep-Lj for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 02:23:32 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVldR-0002C1-HD for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:23:29 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVldP-0002Aj-1v for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:23:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVldO-0002AI-KN for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:23:26 -0400 Received: from [212.6.122.105] (helo=mail0.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVlcz-0007Q0-58 for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:23:03 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail0.ewetel.de (8.12.1/8.12.9) with ESMTP id i536Mkkv014777 for ; Thu, 3 Jun 2004 08:22:47 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVlgO-0002cy-00 for ; Thu, 03 Jun 2004 08:26:32 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 08:23:32 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_kPsvAhksSwpPGt4" Message-Id: <200406030823.32658.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: javax.swing - remove of cvs tags X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 06:23:30 -0000 --Boundary-00=_kPsvAhksSwpPGt4 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch from Olga Rodimina to remove some=20 CVS tags from *.java files in Swing. Michael 2004-06-03 Olga Rodimina * javax/swing/JCheckBoxMenuItem.java: Removed CVS tags. * javax/swing/JMenu.java: Likewise. * javax/swing/JMenuBar.java: Likewise. * javax/swing/JMenuItem.java: Likewise. * javax/swing/JPopupMenu.java: Likewise. * javax/swing/JRadioButtonMenuItem.java: Likewise. * javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java: Likewise. * javax/swing/plaf/basic/BasicMenuBarUI.java: Likewise. * javax/swing/plaf/basic/BasicMenuItemUI.java: Likewise. * javax/swing/plaf/basic/BasicMenuUI.java: Likewise. * javax/swing/plaf/basic/BasicPopupMenuUI.java: Likewise. * javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java: Likewise. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAvsPkWSOgCCdjSDsRAt2oAJwNRfS1tUtvsxjDt8pdAmlRm23oIQCfT0gm 3XWxYG8iglcw637Tig9UKQA=3D =3DSq4P =2D----END PGP SIGNATURE----- --Boundary-00=_kPsvAhksSwpPGt4 Content-Type: text/x-diff; charset="iso-8859-15"; name="swing.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="swing.diff" Index: javax/swing/JCheckBoxMenuItem.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JCheckBoxMenuItem.java,v retrieving revision 1.5 diff -u -b -B -r1.5 JCheckBoxMenuItem.java --- javax/swing/JCheckBoxMenuItem.java 31 May 2004 21:11:48 -0000 1.5 +++ javax/swing/JCheckBoxMenuItem.java 3 Jun 2004 06:15:12 -0000 @@ -46,9 +46,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.5 $ */ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, Accessible @@ -217,9 +214,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.5 $ */ protected class AccessibleJCheckBoxMenuItem extends AccessibleJMenuItem { Index: javax/swing/JMenu.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JMenu.java,v retrieving revision 1.4 diff -u -b -B -r1.4 JMenu.java --- javax/swing/JMenu.java 31 May 2004 21:11:50 -0000 1.4 +++ javax/swing/JMenu.java 3 Jun 2004 06:15:12 -0000 @@ -60,9 +60,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ public class JMenu extends JMenuItem implements Accessible, MenuElement { @@ -683,9 +680,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ protected class AccessibleJMenu extends AccessibleJMenuItem implements AccessibleSelection @@ -811,9 +805,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ protected class WinListener extends WindowAdapter implements Serializable { Index: javax/swing/JMenuBar.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JMenuBar.java,v retrieving revision 1.5 diff -u -b -B -r1.5 JMenuBar.java --- javax/swing/JMenuBar.java 31 May 2004 21:11:50 -0000 1.5 +++ javax/swing/JMenuBar.java 3 Jun 2004 06:15:12 -0000 @@ -67,9 +67,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.5 $ */ public class JMenuBar extends JComponent implements Accessible, MenuElement { Index: javax/swing/JMenuItem.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JMenuItem.java,v retrieving revision 1.5 diff -u -b -B -r1.5 JMenuItem.java --- javax/swing/JMenuItem.java 31 May 2004 21:11:50 -0000 1.5 +++ javax/swing/JMenuItem.java 3 Jun 2004 06:15:12 -0000 @@ -62,9 +62,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.5 $ */ public class JMenuItem extends AbstractButton implements Accessible, MenuElement @@ -586,9 +583,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.5 $ */ protected class AccessibleJMenuItem extends AccessibleAbstractButton implements ChangeListener Index: javax/swing/JPopupMenu.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JPopupMenu.java,v retrieving revision 1.4 diff -u -b -B -r1.4 JPopupMenu.java --- javax/swing/JPopupMenu.java 31 May 2004 21:11:50 -0000 1.4 +++ javax/swing/JPopupMenu.java 3 Jun 2004 06:15:12 -0000 @@ -68,9 +68,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ public class JPopupMenu extends JComponent implements Accessible, MenuElement { @@ -798,9 +795,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ private interface Popup { @@ -822,9 +816,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ private class LightWeightPopup extends JPanel implements Popup { @@ -868,9 +859,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ private class MediumWeightPopup extends Panel implements Popup { @@ -915,9 +903,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ private class HeavyWeightPopup extends JWindow implements Popup { @@ -956,9 +941,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ public static class Separator extends JSeparator { @@ -982,9 +964,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.4 $ */ protected class AccessibleJPopupMenu extends AccessibleJComponent { Index: javax/swing/JRadioButtonMenuItem.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/JRadioButtonMenuItem.java,v retrieving revision 1.5 diff -u -b -B -r1.5 JRadioButtonMenuItem.java --- javax/swing/JRadioButtonMenuItem.java 31 May 2004 21:11:50 -0000 1.5 +++ javax/swing/JRadioButtonMenuItem.java 3 Jun 2004 06:15:12 -0000 @@ -46,9 +46,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.5 $ */ public class JRadioButtonMenuItem extends JMenuItem implements Accessible { @@ -195,9 +192,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.5 $ */ protected class AccessibleJRadioButtonMenuItem extends AccessibleJMenuItem { Index: javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java,v retrieving revision 1.3 diff -u -b -B -r1.3 BasicCheckBoxMenuItemUI.java --- javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java 31 May 2004 21:12:05 -0000 1.3 +++ javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java 3 Jun 2004 06:15:12 -0000 @@ -49,9 +49,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.3 $ */ public class BasicCheckBoxMenuItemUI extends BasicMenuItemUI { Index: javax/swing/plaf/basic/BasicMenuBarUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicMenuBarUI.java,v retrieving revision 1.1 diff -u -b -B -r1.1 BasicMenuBarUI.java --- javax/swing/plaf/basic/BasicMenuBarUI.java 31 May 2004 21:12:10 -0000 1.1 +++ javax/swing/plaf/basic/BasicMenuBarUI.java 3 Jun 2004 06:15:12 -0000 @@ -76,9 +76,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.1 $ */ public class BasicMenuBarUI extends MenuBarUI { Index: javax/swing/plaf/basic/BasicMenuItemUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicMenuItemUI.java,v retrieving revision 1.3 diff -u -b -B -r1.3 BasicMenuItemUI.java --- javax/swing/plaf/basic/BasicMenuItemUI.java 31 May 2004 21:12:06 -0000 1.3 +++ javax/swing/plaf/basic/BasicMenuItemUI.java 3 Jun 2004 06:15:12 -0000 @@ -76,9 +76,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.3 $ */ public class BasicMenuItemUI extends MenuItemUI { @@ -724,9 +721,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.3 $ */ protected class MouseInputHandler implements MouseInputListener { @@ -821,9 +815,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.3 $ */ protected class MenuDragMouseHandler implements MenuDragMouseListener { @@ -866,9 +857,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.3 $ */ protected class MenuKeyHandler implements MenuKeyListener { @@ -902,9 +890,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.3 $ */ protected class PropertyChangeHandler implements PropertyChangeListener { Index: javax/swing/plaf/basic/BasicMenuUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicMenuUI.java,v retrieving revision 1.1 diff -u -b -B -r1.1 BasicMenuUI.java --- javax/swing/plaf/basic/BasicMenuUI.java 31 May 2004 21:12:10 -0000 1.1 +++ javax/swing/plaf/basic/BasicMenuUI.java 3 Jun 2004 06:15:12 -0000 @@ -72,9 +72,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.1 $ */ public class BasicMenuUI extends BasicMenuItemUI { @@ -273,9 +270,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.1 $ */ protected class MouseInputHandler implements MouseInputListener { Index: javax/swing/plaf/basic/BasicPopupMenuUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicPopupMenuUI.java,v retrieving revision 1.1 diff -u -b -B -r1.1 BasicPopupMenuUI.java --- javax/swing/plaf/basic/BasicPopupMenuUI.java 31 May 2004 21:12:11 -0000 1.1 +++ javax/swing/plaf/basic/BasicPopupMenuUI.java 3 Jun 2004 06:15:12 -0000 @@ -89,9 +89,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.1 $ */ public class BasicPopupMenuUI extends PopupMenuUI { @@ -254,9 +251,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.1 $ */ protected class PopupMenuHandler implements PopupMenuListener { @@ -290,9 +284,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.1 $ */ protected class MouseInputHandler implements MouseInputListener { Index: javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java,v retrieving revision 1.3 diff -u -b -B -r1.3 BasicRadioButtonMenuItemUI.java --- javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java 31 May 2004 21:12:07 -0000 1.3 +++ javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java 3 Jun 2004 06:15:12 -0000 @@ -50,9 +50,6 @@ /** * DOCUMENT ME! - * - * @author $author$ - * @version $Revision: 1.3 $ */ public class BasicRadioButtonMenuItemUI extends BasicMenuItemUI { --Boundary-00=_kPsvAhksSwpPGt4-- From MAILER-DAEMON Thu Jun 03 02:35:03 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVlod-0006kg-Pu for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 02:35:03 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVlob-0006kP-Pt for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:35:01 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVlob-0006k6-04 for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:35:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVloa-0006k1-Lc for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:35:00 -0400 Received: from [212.6.122.126] (helo=mail3.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVlnc-00016n-Jl for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:34:01 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail3.ewetel.de (8.12.1/8.12.9) with ESMTP id i536Xwxu005614 for ; Thu, 3 Jun 2004 08:33:59 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVlrF-0004qo-00 for ; Thu, 03 Jun 2004 08:37:45 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 08:34:44 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_EasvAHjhcd6KgGc" Message-Id: <200406030834.44938.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: java.security enhancements X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 06:35:02 -0000 --Boundary-00=_EasvAHjhcd6KgGc Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch from Casey Marshall. Michael 2004-06-03 Casey Marshall * java/security/AccessControlContext.java (protectionDomain): mark final. (combiner): likewise. ((ProtectionDomain[])): use HashSet to uniquify domains. ((ProtectionDomain[],AccessControlContext,DomainCombiner)): new constructor. (checkPermission): only succeed if `perm' is implied by all protection domains. (equal): do unordered comparison. * java/security/ProtectionDomain.java ((CodeSource,PermissionCollection)): set `staticBinding' to `true'. * java/security/SecureClassLoader.java (defineClass): make protection domain dynamically bound. (getPermissions): call `getCurrentPolicy' to avoid permission check. * java/util/PropertyPermissionCollection.java (implies): avoid infinite loop. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAvsaEWSOgCCdjSDsRAqVYAKCCfwq05NGwRcjPywX4v5DVat3bsACgj9nL JSu/202xBkW+XBPIQ9vp7PY=3D =3DQGmV =2D----END PGP SIGNATURE----- --Boundary-00=_EasvAHjhcd6KgGc Content-Type: text/x-diff; charset="iso-8859-15"; name="security.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="security.diff" Index: java/security/AccessControlContext.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/AccessControlContext.java,v retrieving revision 1.5 diff -u -b -B -r1.5 AccessControlContext.java --- java/security/AccessControlContext.java 22 Jan 2002 22:27:00 -0000 1.5 +++ java/security/AccessControlContext.java 3 Jun 2004 06:25:26 -0000 @@ -1,5 +1,5 @@ /* AccessControlContext.java --- Access Control Context Class - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -37,6 +37,8 @@ package java.security; +import java.util.HashSet; + /** AccessControlContext makes system resource access decsion based on permission rights. @@ -53,8 +55,8 @@ */ public final class AccessControlContext { - private ProtectionDomain protectionDomain[]; - private DomainCombiner combiner; + private final ProtectionDomain[] protectionDomains; + private final DomainCombiner combiner; /** Construct a new AccessControlContext with the specified @@ -65,29 +67,12 @@ */ public AccessControlContext(ProtectionDomain[]context) { - int i, j, k, count = context.length, count2 = 0; - for (i = 0, j = 0; i < count; i++) - { - for (k = 0; k < i; k++) - if (context[k] == protectionDomain[i]) - break; - if (k != i) //it means previous loop did not complete - continue; - - count2++; - } - - protectionDomain = new ProtectionDomain[count2]; - for (i = 0, j = 0; i < count2; i++) - { - for (k = 0; k < i; k++) - if (context[k] == protectionDomain[i]) - break; - if (k != i) //it means previous loop did not complete - continue; - - protectionDomain[j++] = context[i]; - } + HashSet domains = new HashSet (context.length); + for (int i = 0; i < context.length; i++) + domains.add (context[i]); + protectionDomains = (ProtectionDomain[]) + domains.toArray (new ProtectionDomain[domains.size()]); + combiner = null; } /** @@ -101,7 +86,17 @@ public AccessControlContext(AccessControlContext acc, DomainCombiner combiner) { - this(acc.protectionDomain); + // XXX check permission to call this. + AccessControlContext acc2 = AccessController.getContext(); + protectionDomains = combiner.combine (acc2.protectionDomains, + acc.protectionDomains); + this.combiner = combiner; + } + + AccessControlContext (ProtectionDomain[] domains, AccessControlContext acc, + DomainCombiner combiner) + { + protectionDomains = combiner.combine (domains, acc.protectionDomains); this.combiner = combiner; } @@ -125,11 +120,9 @@ */ public void checkPermission(Permission perm) throws AccessControlException { - for (int i = 0; i < protectionDomain.length; i++) - if (protectionDomain[i].implies(perm) == true) - return; - - throw new AccessControlException("Permission not granted"); + for (int i = 0; i < protectionDomains.length; i++) + if (!protectionDomains[i].implies(perm)) + throw new AccessControlException ("permission not granted"); } /** @@ -151,9 +144,17 @@ if (acc.protectionDomain.length != protectionDomain.length) return false; - for (int i = 0; i < protectionDomain.length; i++) - if (acc.protectionDomain[i] != protectionDomain[i]) + int i, j; + for (i = 0; i < protectionDomains.length; i++) + { + for (j = 0; j < acc.protectionDomains.length; j++) + { + if (acc.protectionDomains[j].equals (protectionDomains[i])) + break; + } + if (j == acc.protectionDomains.length) return false; + } return true; } return false; Index: java/security/ProtectionDomain.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/ProtectionDomain.java,v retrieving revision 1.10 diff -u -b -B -r1.10 ProtectionDomain.java --- java/security/ProtectionDomain.java 10 Mar 2003 17:17:39 -0000 1.10 +++ java/security/ProtectionDomain.java 3 Jun 2004 06:25:26 -0000 @@ -83,7 +83,7 @@ */ public ProtectionDomain(CodeSource codesource, PermissionCollection permissions) { - this(codesource, permissions, null, null, false); + this(codesource, permissions, null, null, true); } /** Index: java/security/SecureClassLoader.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/SecureClassLoader.java,v retrieving revision 1.9 diff -u -b -B -r1.9 SecureClassLoader.java --- java/security/SecureClassLoader.java 30 Apr 2003 06:47:24 -0000 1.9 +++ java/security/SecureClassLoader.java 3 Jun 2004 06:25:26 -0000 @@ -84,7 +84,7 @@ if (cs != null) { ProtectionDomain protectionDomain - = new ProtectionDomain(cs, getPermissions(cs)); + = new ProtectionDomain(cs, getPermissions(cs), this, null); return super.defineClass(name, b, off, len, protectionDomain); } else @@ -103,7 +103,7 @@ */ protected PermissionCollection getPermissions(CodeSource cs) { - Policy policy = Policy.getPolicy(); + Policy policy = Policy.getCurrentPolicy(); return policy.getPermissions(cs); } } Index: java/util/PropertyPermissionCollection.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/PropertyPermissionCollection.java,v retrieving revision 1.3 diff -u -b -B -r1.3 PropertyPermissionCollection.java --- java/util/PropertyPermissionCollection.java 30 Apr 2002 22:08:47 -0000 1.3 +++ java/util/PropertyPermissionCollection.java 3 Jun 2004 06:25:26 -0000 @@ -145,7 +145,7 @@ return true; } - prefixLength = name.lastIndexOf('.', prefixLength); + prefixLength = name.lastIndexOf('.', prefixLength - 1); if (prefixLength < 0) return false; name = name.substring(0, prefixLength + 1) + '*'; --Boundary-00=_EasvAHjhcd6KgGc-- From MAILER-DAEMON Thu Jun 03 02:36:30 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVlq1-00074g-U6 for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 02:36:29 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVlq0-00074b-OA for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:36:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVlq0-00074E-37 for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:36:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVlpz-00074B-Vg for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:36:28 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVlpb-0001mm-1w for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:36:03 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVlpN-0005QV-8L for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:35:49 -0400 From: "Michael Koch" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3115 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Galeon/1.3.14 (Debian package 1.3.14a-1) X-Apparently-From: 80.228.94.249 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 02:36:28 -0400 Subject: [patch #3115] Various fixes to security classes X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 06:36:29 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3115] Latest Modifications: Changes by: Michael Koch 'Date: Thu 06/03/04 at 06:35 (GMT) What | Removed | Added --------------------------------------------------------------------------- Resolution | None | Fixed Status | Open | Closed ------------------ Additional Follow-up Comments ---------------------------- I commited the code changes to classpath CVS. I left the javadoc and indention changes out to reduce the patch and make it more lean and readable. I will commit a patch to change the javadocs all over soon. /**************************************************************************/ [patch #3115] Full Item Snapshot: URL: Project: classpath Submitted by: Casey Marshall On: Thu 06/03/04 at 04:24 Category: None Priority: 2 Resolution: Fixed Assigned to: None Originator Email: Status: Closed Summary: Various fixes to security classes Original Submission: This patch fixes various buglets in some java.security classes, and java.util.PropertyPermissionCollection. Follow-up Comments ------------------ ------------------------------------------------------- Date: Thu 06/03/04 at 06:35 By: mkoch I commited the code changes to classpath CVS. I left the javadoc and indention changes out to reduce the patch and make it more lean and readable. I will commit a patch to change the javadocs all over soon. File Attachments ------------------- ------------------------------------------------------- Date: Thu 06/03/04 at 04:26 Name: security-ChangeLog Size: 797KB By: rsdio ChangeLog http://savannah.gnu.org/patch/download.php?item_id=3115&item_file_id=3338 ------------------------------------------------------- Date: Thu 06/03/04 at 04:24 Name: security1.patch Size: 11KB By: rsdio security1.patch http://savannah.gnu.org/patch/download.php?item_id=3115&item_file_id=3337 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 02:45:33 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVlyn-0000sr-G4 for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 02:45:33 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVlyl-0000s1-TW for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:45:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVlyl-0000rp-5R for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:45:31 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVlyl-0000rm-1u for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:45:31 -0400 Received: from [212.6.122.126] (helo=mail3.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVly4-0004Bu-7B for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:44:49 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail3.ewetel.de (8.12.1/8.12.9) with ESMTP id i536ijxu010004 for ; Thu, 3 Jun 2004 08:44:45 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVm1f-0004rM-00 for ; Thu, 03 Jun 2004 08:48:31 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 08:45:31 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_LksvAMva471U3Lb" Message-Id: <200406030845.31717.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: javadoc fixes X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 06:45:32 -0000 --Boundary-00=_LksvAMva471U3Lb Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch to rework javadocs in some classes. Michael 2004-06-03 Michael Koch * java/security/AccessControlContext.java, java/security/ProtectionDomain.java, java/security/SecureClassLoader.java, java/util/PropertyPermissionCollection.java: Fixed javadocs all over. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAvskLWSOgCCdjSDsRAs6VAJ9uW77MMDzQpCKpc5cea+A2qQojUQCePqkZ T9yZT2GwmNG0G6KuCVIHA9k=3D =3DqP9b =2D----END PGP SIGNATURE----- --Boundary-00=_LksvAMva471U3Lb Content-Type: text/x-diff; charset="iso-8859-15"; name="javadoc.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="javadoc.diff" Index: java/security/AccessControlContext.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/AccessControlContext.java,v retrieving revision 1.6 diff -u -b -B -r1.6 AccessControlContext.java --- java/security/AccessControlContext.java 3 Jun 2004 06:28:26 -0000 1.6 +++ java/security/AccessControlContext.java 3 Jun 2004 06:42:02 -0000 @@ -40,18 +40,18 @@ import java.util.HashSet; /** - AccessControlContext makes system resource access decsion - based on permission rights. - - It is used for a specific context and has only one method - checkPermission. It is similar to AccessController except - that it makes decsions based on the current context instead - of the the current thread. - - It is created by call AccessController.getContext method. - - @author Mark Benvenuto - @since JDK 1.2 + * AccessControlContext makes system resource access decsion + * based on permission rights. + * + * It is used for a specific context and has only one method + * checkPermission. It is similar to AccessController except + * that it makes decsions based on the current context instead + * of the the current thread. + * + * It is created by call AccessController.getContext method. + * + * @author Mark Benvenuto + * @since 1.2 */ public final class AccessControlContext { @@ -59,11 +59,11 @@ private final DomainCombiner combiner; /** - Construct a new AccessControlContext with the specified - ProtectionDomains. context must not be - null and duplicates will be removed. - - @param context The ProtectionDomains to use + * Construct a new AccessControlContext with the specified + * ProtectionDomains. context must not be + * null and duplicates will be removed. + * + * @param context The ProtectionDomains to use */ public AccessControlContext(ProtectionDomain[]context) { @@ -76,12 +76,10 @@ } /** - Construct a new AccessControlContext with the specified - ProtectionDomains and DomainCombiner - - @param context The ProtectionDomains to use - - @since JDK 1.3 + * Construct a new AccessControlContext with the specified + * ProtectionDomains and DomainCombiner + * + * @since 1.3 */ public AccessControlContext(AccessControlContext acc, DomainCombiner combiner) @@ -101,9 +99,9 @@ } /** - Returns the Domain Combiner associated with the AccessControlContext - - @returns the DomainCombiner + * Returns the Domain Combiner associated with the AccessControlContext + * + * @return the DomainCombiner */ public DomainCombiner getDomainCombiner() { @@ -111,12 +109,12 @@ } /** - Determines whether or not the specific permission is granted - depending on the context it is within. - - @param perm a permission to check - - @throws AccessControlException if the permssion is not permitted + * Determines whether or not the specific permission is granted + * depending on the context it is within. + * + * @param perm a permission to check + * + * @throws AccessControlException if the permssion is not permitted */ public void checkPermission(Permission perm) throws AccessControlException { @@ -126,14 +124,14 @@ } /** - Checks if two AccessControlContexts are equal. - - It first checks if obj is an AccessControlContext class, and - then checks if each ProtectionDomain matches. - - @param obj The object to compare this class to - - @return true if equal, false otherwise + * Checks if two AccessControlContexts are equal. + * + * It first checks if obj is an AccessControlContext class, and + * then checks if each ProtectionDomain matches. + * + * @param obj The object to compare this class to + * + * @return true if equal, false otherwise */ public boolean equals(Object obj) { @@ -161,9 +159,9 @@ } /** - Computes a hash code of this class - - @return a hash code representing this class + * Computes a hash code of this class + * + * @return a hash code representing this class */ public int hashCode() { Index: java/security/ProtectionDomain.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/ProtectionDomain.java,v retrieving revision 1.11 diff -u -b -B -r1.11 ProtectionDomain.java --- java/security/ProtectionDomain.java 3 Jun 2004 06:28:28 -0000 1.11 +++ java/security/ProtectionDomain.java 3 Jun 2004 06:42:02 -0000 @@ -1,5 +1,5 @@ /* ProtectionDomain.java -- A security domain - Copyright (C) 1998, 2003, Free Software Foundation, Inc. + Copyright (C) 1998, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. Index: java/security/SecureClassLoader.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/SecureClassLoader.java,v retrieving revision 1.10 diff -u -b -B -r1.10 SecureClassLoader.java --- java/security/SecureClassLoader.java 3 Jun 2004 06:28:28 -0000 1.10 +++ java/security/SecureClassLoader.java 3 Jun 2004 06:42:02 -0000 @@ -1,5 +1,5 @@ /* SecureClassLoader.java --- A Secure Class Loader - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,13 +38,13 @@ package java.security; /** - A Secure Class Loader for loading classes with additional - support for specifying code source and permissions when - they are retrieved by the system policy handler. - - @since JDK 1.2 - - @author Mark Benvenuto + * A Secure Class Loader for loading classes with additional + * support for specifying code source and permissions when + * they are retrieved by the system policy handler. + * + * @since 1.2 + * + * @author Mark Benvenuto */ public class SecureClassLoader extends ClassLoader { @@ -64,18 +64,18 @@ } /** - Creates a class using an array of bytes and a - CodeSource. - - @param name the name to give the class. null if unknown. - @param b the data representing the classfile, in classfile format. - @param off the offset into the data where the classfile starts. - @param len the length of the classfile data in the array. - @param cs the CodeSource for the class or null when unknown. - - @return the class that was defined and optional CodeSource. - - @exception ClassFormatError if the byte array is not in proper classfile format. + * Creates a class using an array of bytes and a + * CodeSource. + * + * @param name the name to give the class. null if unknown. + * @param b the data representing the classfile, in classfile format. + * @param off the offset into the data where the classfile starts. + * @param len the length of the classfile data in the array. + * @param cs the CodeSource for the class or null when unknown. + * + * @return the class that was defined and optional CodeSource. + * + * @exception ClassFormatError if the byte array is not in proper classfile format. */ protected final Class defineClass(String name, byte[] b, int off, int len, CodeSource cs) @@ -92,14 +92,13 @@ } /** - Returns a PermissionCollection for the specified CodeSource. - The default implementation invokes - java.security.Policy.getPermissions. - - This method is called by defineClass that takes a CodeSource - arguement to build a proper ProtectionDomain for the class - being defined. - + * Returns a PermissionCollection for the specified CodeSource. + * The default implementation invokes + * java.security.Policy.getPermissions. + * + * This method is called by defineClass that takes a CodeSource + * arguement to build a proper ProtectionDomain for the class + * being defined. */ protected PermissionCollection getPermissions(CodeSource cs) { Index: java/util/PropertyPermissionCollection.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/PropertyPermissionCollection.java,v retrieving revision 1.4 diff -u -b -B -r1.4 PropertyPermissionCollection.java --- java/util/PropertyPermissionCollection.java 3 Jun 2004 06:28:28 -0000 1.4 +++ java/util/PropertyPermissionCollection.java 3 Jun 2004 06:42:03 -0000 @@ -1,5 +1,5 @@ /* PropertyPermissionCollection.java -- a collection of PropertyPermissions - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -103,10 +103,12 @@ /** * Returns true if this collection implies the given permission. This even * returns true for this case: - *

-

collection.add(new PropertyPermission("a.*", "read"));
-collection.add(new PropertyPermission("a.b.*", "write"));
-collection.implies(new PropertyPermission("a.b.c", "read,write"));
+ * + *
+   * collection.add(new PropertyPermission("a.*", "read"));
+   * collection.add(new PropertyPermission("a.b.*", "write"));
+   * collection.implies(new PropertyPermission("a.b.c", "read,write"));
+   * 
* * @param permission the permission to check * @return true if it is implied by this --Boundary-00=_LksvAMva471U3Lb-- From MAILER-DAEMON Thu Jun 03 02:58:02 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVmAs-0004kC-9h for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 02:58:02 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVmAr-0004k7-JY for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:58:01 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVmAr-0004jv-3j for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:58:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVmAr-0004js-17 for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:58:01 -0400 Received: from [199.232.41.8] (helo=mx20.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVmAK-00076G-Ek for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:57:28 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by mx20.gnu.org with esmtp (Exim 4.34) id 1BVlSf-0007Fx-Tg for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:12:28 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVlRO-0003we-OK for commit-classpath@gnu.org; Thu, 03 Jun 2004 02:11:03 -0400 From: "Casey Marshall" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3116 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5; No time for love, Dr. Jones) Gecko/20030715 X-Apparently-From: 24.6.46.122 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 02:58:01 -0400 Subject: [patch #3116] Implement AccessController.getContext X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 06:58:01 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3116] Full Item Snapshot: URL: Project: classpath Submitted by: Casey Marshall On: Thu 06/03/2004 at 06:09 Category: None Priority: 2 Resolution: None Assigned to: None Originator Email: Status: Open Summary: Implement AccessController.getContext Original Submission: This patch implements java.security.AccessController.getContext, by defering the getContext call to a new class, VMAccessController. Most of the logic is already implemented, leaving the only method for a VM to implement getStack, which returns the current Thread's call stack as a pair of lists: classes and method names. VMs can possibly take advantage of the design of VMAccessController, including: - Using pushContext and popContext more effectively. - Modifying getContext for the semantics of that VM's stack idiosyncrasies. Also included is a simple domain combiner that produces the intersection of two sets of protection domains, and an implementation of Policy that parses plain-text description files, similar to those used by Sun's JDK. (comments and critiques welcome) File Attachments ------------------- ------------------------------------------------------- Date: Thu 06/03/2004 at 06:11 Name: security2-ChangeLog Size: 753KB By: rsdio ChangeLog http://savannah.gnu.org/patch/download.php?item_id=3116&item_file_id=3340 ------------------------------------------------------- Date: Thu 06/03/2004 at 06:09 Name: security2.patch Size: 40KB By: rsdio security2.patch http://savannah.gnu.org/patch/download.php?item_id=3116&item_file_id=3339 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 05:20:11 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVoOR-00007X-BB for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 05:20:11 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVoOP-0008WE-6r for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:20:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVoON-0008V0-NK for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:20:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVoON-0008Us-HV for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:20:07 -0400 Received: from [212.6.122.105] (helo=mail0.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVoNk-0001gE-0W for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:19:32 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail0.ewetel.de (8.12.1/8.12.9) with ESMTP id i539JJkv010765 for ; Thu, 3 Jun 2004 11:19:19 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVoRG-0005aM-00 for ; Thu, 03 Jun 2004 11:23:06 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 11:20:05 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_F1uvAEn1qMBh7m6" Message-Id: <200406031120.05539.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: AccessController implementation X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 09:20:09 -0000 --Boundary-00=_F1uvAEn1qMBh7m6 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch from Casey Marshall to implement=20 java.securtiy.AccessController. This allows use to really use=20 SecurityManagers with Classpath derived JVMs. Michael 2004-06-03 Casey Marshall * java/security/AccessController.java (doPrivileged(PrivilegedAction,AccessControlContext)): call VMAccessController.pushContext and popContext. (doPrivileged(PrivilegedExceptionAction,AccessControlContext)): likewise. (getContext): call VMAccessController.getContext. * java/security/Makefile.am (EXTRA_DIST): add IntersectingDomainCombiner.java. * gnu/java/security/Makefile.am (EXTRA_DIST): add PolicyFile.java * vm/reference/java/Makefile.am (SUBDIRS): add security. * java/security/IntersectingDomainCombiner.java: new file. * gnu/java/security/PolicyFile.java: new file. * vm/reference/java/security/VMAccessController.java: new file. * vm/reference/java/security/Makefile.am: new file 2004-06-03 Michael Koch * configure.ac: Added vm/runtime/java/security/Makefile to output files. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAvu1FWSOgCCdjSDsRAnVUAJ9BlC4dE5aYnMyBbld1q334dQPz1wCgn5Mc GQR9fXQcdVJFZ1jw4btjvqQ=3D =3DRqrQ =2D----END PGP SIGNATURE----- --Boundary-00=_F1uvAEn1qMBh7m6 Content-Type: text/x-diff; charset="iso-8859-15"; name="access.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="access.diff" Index: gnu/java/security/PolicyFile.java =================================================================== RCS file: gnu/java/security/PolicyFile.java diff -N gnu/java/security/PolicyFile.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gnu/java/security/PolicyFile.java 3 Jun 2004 09:10:37 -0000 @@ -0,0 +1,665 @@ +/* PolicyFile.java -- policy file reader. + Copyright (C) 2004 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package gnu.java.security; + +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StreamTokenizer; +import java.lang.reflect.Constructor; +import java.net.MalformedURLException; +import java.net.URL; +import java.security.AccessController; +import java.security.CodeSource; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.Permission; +import java.security.PermissionCollection; +import java.security.Permissions; +import java.security.Policy; +import java.security.Principal; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.security.Security; +import java.security.UnresolvedPermission; +import java.security.cert.Certificate; +import java.security.cert.X509Certificate; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; + +/** + * An implementation of a {@link java.security.Policy} object whose + * permissions are specified by a policy file. + * + *

The approximate syntax of policy files is:

+ * + *
+ * policyFile ::= keystoreOrGrantEntries ;
+ *
+ * keystoreOrGrantEntries ::= keystoreOrGrantEntry |
+ *                            keystoreOrGrantEntries keystoreOrGrantEntry |
+ *                            EMPTY ;
+ *
+ * keystoreOrGrantEntry ::= keystoreEntry | grantEntry ;
+ *
+ * keystoreEntry ::= "keystore" keystoreUrl ';' |
+ *                   "keystore" keystoreUrl ',' keystoreAlgorithm ';' ;
+ *
+ * keystoreUrl ::= URL ;
+ * keystoreAlgorithm ::= STRING ;
+ *
+ * grantEntry ::= "grant" domainParameters '{' permissions '}' ';'
+ *
+ * domainParameters ::= domainParameter |
+ *                      domainParameter ',' domainParameters ;
+ *
+ * domainParameter ::= "signedBy" signerNames |
+ *                     "codeBase" codeBaseUrl |
+ *                     "principal" principalClassName principalName |
+ *                     "principal" principalName ;
+ *
+ * signerNames ::= quotedString ;
+ * codeBaseUrl ::= URL ;
+ * principalClassName ::= STRING ;
+ * principalName ::= quotedString ;
+ *
+ * quotedString ::= quoteChar STRING quoteChar ;
+ * quoteChar ::= '"' | '\'';
+ *
+ * permissions ::= permission | permissions permission ;
+ *
+ * permission ::= "permission" permissionClassName permissionTarget permissionAction |
+ *                "permission" permissionClassName permissionTarget |
+ *                "permission" permissionClassName;
+ * 
+ * + *

Comments are either form of Java comments. Keystore entries only + * affect subsequent grant entries, so if a grant entry preceeds a + * keystore entry, that grant entry is not affected by that keystore + * entry. Certian instances of ${property-name} will be + * replaced with System.getProperty("property-name") in + * quoted strings.

+ * + *

This class will load the following files when created or + * refreshed, in order:

+ * + *
    + *
  1. The file ${java.home}/lib/security/java.policy.
  2. + *
  3. All URLs specified by security properties + * "policy.file.n", for increasing n + * starting from 1. The sequence stops at the first undefined + * property, so you must set "policy.file.1" if you also + * set "policy.file.2", and so on.
  4. + *
  5. The URL specified by the property + * "java.security.policy".
  6. + *
+ * + * @author Casey Marshall (csm@gnu.org) + * @see java.security.Policy + */ +public final class PolicyFile extends Policy +{ + + // Constants and fields. + // ------------------------------------------------------------------------- + + private static final boolean DEBUG = true; + private static void debug(String msg) + { + System.err.print(">> PolicyFile: "); + System.err.println(msg); + } + + private static void debug(Throwable t) + { + System.err.println(">> PolicyFile"); + t.printStackTrace(System.err); + } + + private static final String DEFAULT_POLICY = System.getProperty("java.home") + + System.getProperty("file.separator") + "lib" + + System.getProperty("file.separator") + "security" + + System.getProperty("file.separator") + "java.policy"; + + private final Map cs2pc; + + // Constructors. + // ------------------------------------------------------------------------- + + public PolicyFile() + { + cs2pc = new HashMap(); + refresh(); + } + + // Instance methods. + // ------------------------------------------------------------------------- + + public PermissionCollection getPermissions(CodeSource codeSource) + { + Permissions perms = new Permissions(); + for (Iterator it = cs2pc.entrySet().iterator(); it.hasNext(); ) + { + Map.Entry e = (Map.Entry) it.next(); + CodeSource cs = (CodeSource) e.getKey(); + if (cs.implies(codeSource)) + { + if (DEBUG) debug(cs+" -> "+codeSource); + PermissionCollection pc = (PermissionCollection) e.getValue(); + for (Enumeration ee = pc.elements(); ee.hasMoreElements(); ) + { + perms.add((Permission) ee.nextElement()); + } + } + else + if (DEBUG) debug(cs+" !-> "+codeSource); + } + if (DEBUG) debug ("returning permissions " + perms + " for " + codeSource); + return perms; + } + + public void refresh() + { + cs2pc.clear(); + List policyFiles = new LinkedList(); + try + { + policyFiles.add(new File(DEFAULT_POLICY).toURL()); + if (DEBUG) debug ("defualt policy is " + DEFAULT_POLICY); + policyFiles.addAll((List) AccessController.doPrivileged( + new PrivilegedExceptionAction() + { + public Object run() throws Exception + { + LinkedList l = new LinkedList(); + for (int i = 1; ; i++) + { + String s = Security.getProperty("policy.file."+i); + if (DEBUG) debug("policy.file."+i+"="+s); + if (s == null) + break; + l.add(new URL(s)); + } + String s = System.getProperty("java.security.policy"); + if (DEBUG) debug("java.security.policy="+s); + if (s != null) + l.add(new URL(s)); + return l; + } + })); + } + catch (PrivilegedActionException pae) + { + if (DEBUG) debug(pae); + } + catch (MalformedURLException mue) + { + if (DEBUG) debug(mue); + } + for (Iterator it = policyFiles.iterator(); it.hasNext(); ) + { + try + { + URL url = (URL) it.next(); + parse(url); + } + catch (IOException ioe) + { + if (DEBUG) debug(ioe); + } + } + } + + public String toString() + { + return super.toString() + " [ " + cs2pc.toString() + " ]"; + } + + // Own methods. + // ------------------------------------------------------------------------- + + private static final int STATE_BEGIN = 0; + private static final int STATE_GRANT = 1; + private static final int STATE_PERMS = 2; + + /** + * Parse a policy file, incorporating the permission definitions + * described therein. + * + * @param url The URL of the policy file to read. + * @throws IOException if an I/O error occurs, or if the policy file + * cannot be parsed. + */ + private void parse(final URL url) throws IOException + { + if (DEBUG) debug ("reading policy file from " + url); + final StreamTokenizer in = new StreamTokenizer(new InputStreamReader(url.openStream())); + in.resetSyntax(); + in.slashSlashComments(true); + in.slashStarComments(true); + in.wordChars('A', 'Z'); + in.wordChars('a', 'z'); + in.wordChars('0', '9'); + in.wordChars('.', '.'); + in.wordChars('_', '_'); + in.wordChars('$', '$'); + in.whitespaceChars(' ', ' '); + in.whitespaceChars('\t', '\t'); + in.whitespaceChars('\f', '\f'); + in.whitespaceChars('\n', '\n'); + in.whitespaceChars('\r', '\r'); + in.quoteChar('\''); + in.quoteChar('"'); + + int tok; + int state = STATE_BEGIN; + List keystores = new LinkedList(); + URL currentBase = null; + List currentCerts = new LinkedList(); + Permissions currentPerms = new Permissions(); + while ((tok = in.nextToken()) != StreamTokenizer.TT_EOF) + { + switch (tok) + { + case '{': + if (state != STATE_GRANT) + error(url, in, "spurious '{'"); + state = STATE_PERMS; + tok = in.nextToken(); + break; + case '}': + if (state != STATE_PERMS) + error(url, in, "spurious '}'"); + state = STATE_BEGIN; + currentPerms.setReadOnly(); + Certificate[] c = null; + if (!currentCerts.isEmpty()) + c = (Certificate[]) currentCerts.toArray(new Certificate[currentCerts.size()]); + cs2pc.put(new CodeSource(currentBase, c), currentPerms); + currentCerts.clear(); + currentPerms = new Permissions(); + currentBase = null; + tok = in.nextToken(); + if (tok != ';') + in.pushBack(); + continue; + } + if (tok != StreamTokenizer.TT_WORD) + { + error(url, in, "expecting word token"); + } + + // keystore "" [',' ""] ';' + if (in.sval.equalsIgnoreCase("keystore")) + { + String alg = KeyStore.getDefaultType(); + tok = in.nextToken(); + if (tok != '"' && tok != '\'') + error(url, in, "expecting key store URL"); + String store = in.sval; + tok = in.nextToken(); + if (tok == ',') + { + tok = in.nextToken(); + if (tok != '"' && tok != '\'') + error(url, in, "expecting key store type"); + alg = in.sval; + tok = in.nextToken(); + } + if (tok != ';') + error(url, in, "expecting semicolon"); + try + { + KeyStore keystore = KeyStore.getInstance(alg); + keystore.load(new URL(url, store).openStream(), null); + keystores.add(keystore); + } + catch (Exception x) + { + error(url, in, x.toString()); + } + } + else if (in.sval.equalsIgnoreCase("grant")) + { + if (state != STATE_BEGIN) + error(url, in, "extraneous grant keyword"); + state = STATE_GRANT; + } + else if (in.sval.equalsIgnoreCase("signedBy")) + { + if (state != STATE_GRANT && state != STATE_PERMS) + error(url, in, "spurious 'signedBy'"); + if (keystores.isEmpty()) + error(url, in, "'signedBy' with no keystores"); + tok = in.nextToken(); + if (tok != '"' && tok != '\'') + error(url, in, "expecting signedBy name"); + StringTokenizer st = new StringTokenizer(in.sval, ","); + while (st.hasMoreTokens()) + { + String alias = st.nextToken(); + for (Iterator it = keystores.iterator(); it.hasNext(); ) + { + KeyStore keystore = (KeyStore) it.next(); + try + { + if (keystore.isCertificateEntry(alias)) + currentCerts.add(keystore.getCertificate(alias)); + } + catch (KeyStoreException kse) + { + error(url, in, kse.toString()); + } + } + } + tok = in.nextToken(); + if (tok != ',') + { + if (state != STATE_GRANT) + error(url, in, "spurious ','"); + in.pushBack(); + } + } + else if (in.sval.equalsIgnoreCase("codeBase")) + { + if (state != STATE_GRANT) + error(url, in, "spurious 'codeBase'"); + tok = in.nextToken(); + if (tok != '"' && tok != '\'') + error(url, in, "expecting code base URL"); + String base = expand(in.sval); + if (File.separatorChar != '/') + base = base.replace(File.separatorChar, '/'); + try + { + currentBase = new URL(base); + } + catch (MalformedURLException mue) + { + error(url, in, mue.toString()); + } + tok = in.nextToken(); + if (tok != ',') + in.pushBack(); + } + else if (in.sval.equalsIgnoreCase("principal")) + { + if (state != STATE_GRANT) + error(url, in, "spurious 'principal'"); + tok = in.nextToken(); + if (tok == StreamTokenizer.TT_WORD) + { + tok = in.nextToken(); + if (tok != '"' && tok != '\'') + error(url, in, "expecting principal name"); + String name = in.sval; + Principal p = null; + try + { + Class pclass = Class.forName(in.sval); + Constructor c = + pclass.getConstructor(new Class[] { String.class }); + p = (Principal) c.newInstance(new Object[] { name }); + } + catch (Exception x) + { + error(url, in, x.toString()); + } + for (Iterator it = keystores.iterator(); it.hasNext(); ) + { + KeyStore ks = (KeyStore) it.next(); + try + { + for (Enumeration e = ks.aliases(); e.hasMoreElements(); ) + { + String alias = (String) e.nextElement(); + if (ks.isCertificateEntry(alias)) + { + Certificate cert = ks.getCertificate(alias); + if (!(cert instanceof X509Certificate)) + continue; + if (p.equals(((X509Certificate) cert).getSubjectDN()) || + p.equals(((X509Certificate) cert).getSubjectX500Principal())) + currentCerts.add(cert); + } + } + } + catch (KeyStoreException kse) + { + error(url, in, kse.toString()); + } + } + } + else if (tok == '"' || tok == '\'') + { + String alias = in.sval; + for (Iterator it = keystores.iterator(); it.hasNext(); ) + { + KeyStore ks = (KeyStore) it.next(); + try + { + if (ks.isCertificateEntry(alias)) + currentCerts.add(ks.getCertificate(alias)); + } + catch (KeyStoreException kse) + { + error(url, in, kse.toString()); + } + } + } + else + error(url, in, "expecting principal"); + tok = in.nextToken(); + if (tok != ',') + in.pushBack(); + } + else if (in.sval.equalsIgnoreCase("permission")) + { + if (state != STATE_PERMS) + error(url, in, "spurious 'permission'"); + tok = in.nextToken(); + if (tok != StreamTokenizer.TT_WORD) + error(url, in, "expecting permission class name"); + String className = in.sval; + Class clazz = null; + try + { + clazz = Class.forName(className); + } + catch (ClassNotFoundException cnfe) + { + } + tok = in.nextToken(); + if (tok == ';') + { + if (clazz == null) + { + currentPerms.add(new UnresolvedPermission(className, + null, null, (Certificate[]) currentCerts.toArray(new Certificate[0]))); + continue; + } + try + { + currentPerms.add((Permission) clazz.newInstance()); + } + catch (Exception x) + { + error(url, in, x.toString()); + } + continue; + } + if (tok != '"' && tok != '\'') + error(url, in, "expecting permission target"); + String target = expand(in.sval); + tok = in.nextToken(); + if (tok == ';') + { + if (clazz == null) + { + currentPerms.add(new UnresolvedPermission(className, + target, null, (Certificate[]) currentCerts.toArray(new Certificate[0]))); + continue; + } + try + { + Constructor c = + clazz.getConstructor(new Class[] { String.class }); + currentPerms.add((Permission) c.newInstance( + new Object[] { target })); + } + catch (Exception x) + { + error(url, in, x.toString()); + } + continue; + } + if (tok != ',') + error(url, in, "expecting ','"); + tok = in.nextToken(); + if (tok == StreamTokenizer.TT_WORD) + { + if (!in.sval.equalsIgnoreCase("signedBy")) + error(url, in, "expecting 'signedBy'"); + try + { + Constructor c = + clazz.getConstructor(new Class[] { String.class }); + currentPerms.add((Permission) c.newInstance( + new Object[] { target })); + } + catch (Exception x) + { + error(url, in, x.toString()); + } + in.pushBack(); + continue; + } + if (tok != '"' && tok != '\'') + error(url, in, "expecting permission action"); + String action = in.sval; + if (clazz == null) + { + currentPerms.add(new UnresolvedPermission(className, + target, action, (Certificate[]) currentCerts.toArray(new Certificate[0]))); + continue; + } + else + { + try + { + Constructor c = clazz.getConstructor( + new Class[] { String.class, String.class }); + currentPerms.add((Permission) c.newInstance( + new Object[] { target, action })); + } + catch (Exception x) + { + error(url, in, x.toString()); + } + } + tok = in.nextToken(); + if (tok != ';' && tok != ',') + error(url, in, "expecting ';' or ','"); + } + } + } + + /** + * Expand all instances of "${property-name}" into + * System.getProperty("property-name"). + */ + private static String expand(final String s) + { + final StringBuffer result = new StringBuffer(); + final StringBuffer prop = new StringBuffer(); + int state = 0; + for (int i = 0; i < s.length(); i++) + { + switch (state) + { + case 0: + if (s.charAt(i) == '$') + state = 1; + else + result.append(s.charAt(i)); + break; + case 1: + if (s.charAt(i) == '{') + state = 2; + else + { + state = 0; + result.append('$').append(s.charAt(i)); + } + break; + case 2: + if (s.charAt(i) == '}') + { + String p = prop.toString(); + if (p.equals("/")) + p = "file.separator"; + p = System.getProperty(p); + if (p == null) + p = ""; + result.append(p); + prop.setLength(0); + state = 0; + } + else + prop.append(s.charAt(i)); + break; + } + } + if (state != 0) + result.append('$').append('{').append(prop); + return result.toString(); + } + + /** + * I miss macros. + */ + private static void error(URL base, StreamTokenizer in, String msg) + throws IOException + { + throw new IOException(base+":"+in.lineno()+": "+msg); + } +} Index: gnu/java/security/Makefile.am =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/security/Makefile.am,v retrieving revision 1.6 diff -u -b -B -r1.6 Makefile.am --- gnu/java/security/Makefile.am 23 Apr 2003 23:02:38 -0000 1.6 +++ gnu/java/security/Makefile.am 3 Jun 2004 09:10:37 -0000 @@ -4,5 +4,6 @@ EXTRA_DIST = \ Engine.java \ -OID.java +OID.java \ +PolicyFile.java Index: java/security/IntersectingDomainCombiner.java =================================================================== RCS file: java/security/IntersectingDomainCombiner.java diff -N java/security/IntersectingDomainCombiner.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ java/security/IntersectingDomainCombiner.java 3 Jun 2004 09:10:37 -0000 @@ -0,0 +1,82 @@ +/* IntersectingDomainCombiner.java -- + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.security; + +import java.util.HashSet; + +/** + * A trivial implementation of {@link DomainCombiner} that produces the + * intersection of the supplied {@link ProtectionDomain} objects. + */ +final class IntersectingDomainCombiner implements DomainCombiner +{ + + // Contstant. + // ------------------------------------------------------------------------- + + static final IntersectingDomainCombiner SINGLETON = new IntersectingDomainCombiner(); + + // Constructor. + // ------------------------------------------------------------------------- + + private IntersectingDomainCombiner() + { + } + + // Methods. + // ------------------------------------------------------------------------- + + public ProtectionDomain[] combine (ProtectionDomain[] currentDomains, + ProtectionDomain[] assignedDomains) + { + HashSet newDomains = new HashSet (); + for (int i = 0; i < currentDomains.length; i++) + { + if (currentDomains[i] == null) + continue; + for (int j = 0; j < assignedDomains.length; j++) + { + if (currentDomains[i].equals (assignedDomains[j])) + newDomains.add (currentDomains[i]); + } + } + return (ProtectionDomain[]) + newDomains.toArray(new ProtectionDomain[newDomains.size()]); + } +} Index: java/security/Makefile.am =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/Makefile.am,v retrieving revision 1.8 diff -u -b -B -r1.8 Makefile.am --- java/security/Makefile.am 6 May 2002 21:10:53 -0000 1.8 +++ java/security/Makefile.am 3 Jun 2004 09:10:37 -0000 @@ -26,6 +26,7 @@ Guard.java \ Identity.java \ IdentityScope.java \ +IntersectingDomainCombiner.java \ InvalidAlgorithmParameterException.java \ InvalidKeyException.java \ InvalidParameterException.java \ Index: java/security/AccessController.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/AccessController.java,v retrieving revision 1.7 diff -u -b -B -r1.7 AccessController.java --- java/security/AccessController.java 20 Apr 2004 19:18:15 -0000 1.7 +++ java/security/AccessController.java 3 Jun 2004 09:10:38 -0000 @@ -115,8 +115,16 @@ public static Object doPrivileged(PrivilegedAction action, AccessControlContext context) { + VMAccessController.pushContext (context, action.getClass()); + try + { return action.run(); } + finally + { + VMAccessController.popContext (action.getClass()); + } + } /** * Calls the run() method of the given action with as @@ -170,6 +178,7 @@ AccessControlContext context) throws PrivilegedActionException { + VMAccessController.pushContext (context, action.getClass()); try { @@ -179,19 +188,28 @@ { throw new PrivilegedActionException(e); } + finally + { + VMAccessController.popContext (action.getClass()); + } } /** * Returns the complete access control context of the current thread. - *

- * XXX - Should this include all the protection domains in the call chain - * or only the domains till the last doPrivileged() call? - *

- * XXX - needs native support. Currently returns an empty context. + * The returned object encompasses all {@link ProtectionDomain} objects + * for all classes in the current call stack, or the set of protection + * domains until the last call to {@link + * #doPrivileged(java.security.PrivilegedAction)}. + * + *

Additionally, if a call was made to {@link + * #doPrivileged(java.security.PrivilegedAction,java.security.AccessControlContext)} + * that supplied an {@link AccessControlContext}, then that context + * will be intersected with the calculated one. + * + * @return The context. */ public static AccessControlContext getContext() { - // For now just return an new empty context - return new AccessControlContext(new ProtectionDomain[0]); + return VMAccessController.getContext(); } } Index: vm/reference/java/security/VMAccessController.java =================================================================== RCS file: vm/reference/java/security/VMAccessController.java diff -N vm/reference/java/security/VMAccessController.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ vm/reference/java/security/VMAccessController.java 3 Jun 2004 09:10:38 -0000 @@ -0,0 +1,236 @@ +/* VMAccessController.java -- VM-specific access controller methods. + Copyright (C) 2004 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.security; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +final class VMAccessController +{ + + // Fields. + // ------------------------------------------------------------------------- + + /** + * A mapping between pairs (thread, classname) to access + * control contexts. The thread and classname are the thread + * and classname current as of the last call to doPrivileged with + * an AccessControlContext argument. + */ + private static final Map contexts = Collections.synchronizedMap(new HashMap()); + + private static final ThreadLocal inGetContext = new ThreadLocal(); + + private final static AccessControlContext DEFAULT_CONTEXT; + static + { + CodeSource source = new CodeSource(null, null); + Permissions permissions = new Permissions(); + permissions.add(new AllPermission()); + ProtectionDomain[] domain = new ProtectionDomain[] { + new ProtectionDomain(source, permissions) + }; + DEFAULT_CONTEXT = new AccessControlContext(domain); + } + + private static final boolean DEBUG = false; + private static void debug (String msg) + { + System.err.print (">>> VMAccessController: "); + System.err.println (msg); + } + + // Constructors. + // ------------------------------------------------------------------------- + + private VMAccessController() { } + + // Class methods. + // ------------------------------------------------------------------------- + + /** + * Relate a class (which should be an instance of {@link PrivilegedAction} + * with an access control context. This method is used by {@link + * AccessController#doPrivileged(java.security.PrivilegedAction,java.security.AccessControlContext)} + * to set up the context that will be returned by {@link #getContext()}. + * This method relates the class to the current thread, so contexts + * pushed from one thread will not be available to another. + * + * @param acc The access control context. + * @param clazz The class that implements {@link PrivilegedAction}. + */ + static void pushContext (AccessControlContext acc, Class clazz) + { + ArrayList pair = new ArrayList (2); + pair.add (Thread.currentThread()); + pair.add (clazz); + if (DEBUG) debug ("pushing " + pair); + contexts.put (pair, acc); + } + + /** + * Removes the relation of a class to an {@link AccessControlContext}. + * This method is used by {@link AccessController} when exiting from a + * call to {@link + * AccessController#doPrivileged(java.security.PrivilegedAction,java.security.AccessControlContext)}. + * + * @param clazz The class that implements {@link PrivilegedAction}. + */ + static void popContext (Class clazz) + { + ArrayList pair = new ArrayList (2); + pair.add (Thread.currentThread()); + pair.add (clazz); + if (DEBUG) debug ("popping " + pair); + contexts.remove (pair); + } + + /** + * Examine the method stack of the currently running thread, and create + * an {@link AccessControlContext} filled in with the appropriate {@link + * ProtectionDomain} objects given this stack. + * + * @return The context. + */ + static AccessControlContext getContext() + { + // If we are already in getContext, but called a method that needs + // a permission check, return the all-permissive context so methods + // called from here succeed. + // + // XXX is this necessary? We should verify if there are any calls in + // the stack below this method that require permission checks. + Boolean inCall = (Boolean) inGetContext.get(); + if (inCall != null && inCall.booleanValue()) + { + if (DEBUG) debug ("already in getContext"); + return DEFAULT_CONTEXT; + } + + Object[][] stack = getStack(); + Class[] classes = (Class[]) stack[0]; + String[] methods = (String[]) stack[1]; + + inGetContext.set (Boolean.TRUE); + + if (DEBUG) debug (">>> got trace of length " + classes.length); + + HashSet domains = new HashSet(); + HashSet seenDomains = new HashSet(); + AccessControlContext context = null; + + // We walk down the stack, adding each ProtectionDomain for each + // class in the call stack. If we reach a call to doPrivileged, + // we don't add any more stack frames. We skip the first three stack + // frames, since they comprise the calls to getStack, getContext, + // and AccessController.getContext. + for (int i = 3; i < classes.length; i++) + { + Class clazz = classes[i]; + String method = methods[i]; + + if (DEBUG) debug (">>> checking " + clazz + "." + method); + + if (DEBUG) debug (">>> loader = " + clazz.getClassLoader()); + + if (clazz.equals (AccessController.class) + && method.equals ("doPrivileged")) + { + // If there was a call to doPrivileged with a supplied context, + // return that context. + List pair = new ArrayList(2); + pair.add (Thread.currentThread()); + pair.add (classes[i-1]); + if (contexts.containsKey (pair)) + context = (AccessControlContext) contexts.get (pair); + break; + } + + ProtectionDomain domain = clazz.getProtectionDomain(); + + if (domain == null) + continue; + if (seenDomains.contains (domain)) + continue; + seenDomains.add (domain); + + // Create a static snapshot of this domain, which may change over time + // if the current policy changes. + domains.add (new ProtectionDomain (domain.getCodeSource(), + domain.getPermissions())); + } + + if (DEBUG) debug ("created domains: " + domains); + + ProtectionDomain[] result = (ProtectionDomain[]) + domains.toArray (new ProtectionDomain[domains.size()]); + + // Intersect the derived protection domain with the context supplied + // to doPrivileged. + if (context != null) + context = new AccessControlContext (result, context, + IntersectingDomainCombiner.SINGLETON); + // No context was supplied. Return the derived one. + else + context = new AccessControlContext (result); + + inGetContext.set (Boolean.FALSE); + return context; + } + + /** + * Returns a snapshot of the current call stack as a pair of arrays: + * the first an array of classes in the call stack, the second an array + * of strings containing the method names in the call stack. The two + * arrays match up, meaning that method i is declared in class + * i. The arrays are clean; it will only contain Java methods, + * and no element of the list should be null. + * + *

XXX note: this interface (VMAccessController) would possibly be + * cleaner if we had a method similar to this, but returned an array + * of java.lang.reflect.Method objects. Then, instead of having this + * much logic in this class, we put everything in AccessController, + * and simply have this single getStack method for a VM to implement. + */ + private static native Object[][] getStack(); +} Index: vm/reference/java/security/Makefile.am =================================================================== RCS file: vm/reference/java/security/Makefile.am diff -N vm/reference/java/security/Makefile.am --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ vm/reference/java/security/Makefile.am 3 Jun 2004 09:10:38 -0000 @@ -0,0 +1,5 @@ +# used by automake to generate Makefile.in + + +EXTRA_DIST = \ +VMAccessController.java Index: vm/reference/java/Makefile.am =================================================================== RCS file: /cvsroot/classpath/classpath/vm/reference/java/Makefile.am,v retrieving revision 1.2 diff -u -b -B -r1.2 Makefile.am --- vm/reference/java/Makefile.am 17 Jan 2003 16:45:28 -0000 1.2 +++ vm/reference/java/Makefile.am 3 Jun 2004 09:10:38 -0000 @@ -1,3 +1,3 @@ # used by automake to generate Makefile.in -SUBDIRS = lang io +SUBDIRS = lang io security Index: configure.ac =================================================================== RCS file: /cvsroot/classpath/classpath/configure.ac,v retrieving revision 1.29 diff -u -b -B -r1.29 configure.ac --- configure.ac 28 May 2004 10:25:30 -0000 1.29 +++ configure.ac 3 Jun 2004 09:10:38 -0000 @@ -447,6 +447,7 @@ vm/reference/java/lang/Makefile vm/reference/java/lang/reflect/Makefile vm/reference/java/io/Makefile +vm/reference/java/security/Makefile lib/Makefile lib/gen-classlist.sh]) AC_CONFIG_COMMANDS([gen-classlist],[chmod 755 lib/gen-classlist.sh]) --Boundary-00=_F1uvAEn1qMBh7m6-- From MAILER-DAEMON Thu Jun 03 05:21:21 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVoPY-0000XC-SS for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 05:21:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVoPW-0000WV-BT for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:21:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVoPT-0000VP-WB for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:21:16 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVoPT-0000VF-Q5 for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:21:15 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVoOy-00026g-8I for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:20:50 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVoOj-0007Rj-9J for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:20:29 -0400 From: "Michael Koch" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3116 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Galeon/1.3.14 (Debian package 1.3.14a-1) X-Apparently-From: 80.228.94.249 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 05:21:16 -0400 Subject: [patch #3116] Implement AccessController.getContext X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 09:21:19 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3116] Latest Modifications: Changes by: Michael Koch 'Date: Thu 06/03/04 at 09:20 (GMT) What | Removed | Added --------------------------------------------------------------------------- Resolution | None | Fixed Status | Open | Closed ------------------ Additional Follow-up Comments ---------------------------- Commited the CVS. I added a fix to configure.ac to add the new output file vm/runtime/java/security/Makefile to make it work correctly. /**************************************************************************/ [patch #3116] Full Item Snapshot: URL: Project: classpath Submitted by: Casey Marshall On: Thu 06/03/04 at 06:09 Category: None Priority: 2 Resolution: Fixed Assigned to: None Originator Email: Status: Closed Summary: Implement AccessController.getContext Original Submission: This patch implements java.security.AccessController.getContext, by defering the getContext call to a new class, VMAccessController. Most of the logic is already implemented, leaving the only method for a VM to implement getStack, which returns the current Thread's call stack as a pair of lists: classes and method names. VMs can possibly take advantage of the design of VMAccessController, including: - Using pushContext and popContext more effectively. - Modifying getContext for the semantics of that VM's stack idiosyncrasies. Also included is a simple domain combiner that produces the intersection of two sets of protection domains, and an implementation of Policy that parses plain-text description files, similar to those used by Sun's JDK. (comments and critiques welcome) Follow-up Comments ------------------ ------------------------------------------------------- Date: Thu 06/03/04 at 09:20 By: mkoch Commited the CVS. I added a fix to configure.ac to add the new output file vm/runtime/java/security/Makefile to make it work correctly. File Attachments ------------------- ------------------------------------------------------- Date: Thu 06/03/04 at 06:11 Name: security2-ChangeLog Size: 753KB By: rsdio ChangeLog http://savannah.gnu.org/patch/download.php?item_id=3116&item_file_id=3340 ------------------------------------------------------- Date: Thu 06/03/04 at 06:09 Name: security2.patch Size: 40KB By: rsdio security2.patch http://savannah.gnu.org/patch/download.php?item_id=3116&item_file_id=3339 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 05:32:13 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVoa4-0002MU-S5 for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 05:32:12 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVoa4-0002MP-8b for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:32:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVoa3-0002MD-PM for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:32:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVoa3-0002MA-NN for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:32:11 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVoZW-00056x-Ob for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:31:48 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVoZJ-0007wp-Gh for commit-classpath@gnu.org; Thu, 03 Jun 2004 05:31:25 -0400 From: "Michael Koch" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 2788 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Galeon/1.3.14 (Debian package 1.3.14a-1) X-Apparently-From: 80.228.94.249 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 05:32:12 -0400 Subject: [patch #2788] Patches to implement security checking X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 09:32:12 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #2788] Latest Modifications: Changes by: Michael Koch 'Date: Thu 06/03/04 at 09:31 (GMT) ------------------ Additional Follow-up Comments ---------------------------- Can you please update this patch to the current situation ? Are the parts to java.lang.SecurityManager still needed/wanted ? The rest may be in already by our other two patches it seems to me. /**************************************************************************/ [patch #2788] Full Item Snapshot: URL: Project: classpath Submitted by: Stephen Crawley On: Thu 03/11/04 at 13:56 Category: None Priority: 7 - High Resolution: None Assigned to: mkoch Originator Email: Status: Open Summary: Patches to implement security checking Original Submission: These patches and new files replace dummy methods in java.lang.Security, etc with code that implements security checking. The changes simply reinstate commented out code, and add a couple of new native calls that can be dummy implemented in a VM in an obvious way. A changelog entry follows: java/lang/SecurityManager.java (getSecurityContext) : enable code that was previously commented out (checkPermission(Permission)) : ditto (checkPermission(Permission, Object)) : ditto (checkRead) : ditto (checkConnect) : ditto java/security/AccessControlContext.java (AccessControlContext) : fix NullPointerException bug and tidy up minor inefficiencies java/security/AccessController.java (getContext) : implement getContext() as call to VMAccessController.getProtectionDomains() vm/reference/java/Makefile.am : add the security subdir vm/reference/java/lang/VMClassLoader.java : (defineClass) change the overload with the ProtectionDomain argument into a native method. (Previously the arg was ignored.) vm/reference/java/security/Makefile.am : new file vm/reference/java/security/VMAccessController.java : new file Follow-up Comments ------------------ ------------------------------------------------------- Date: Thu 06/03/04 at 09:31 By: mkoch Can you please update this patch to the current situation ? Are the parts to java.lang.SecurityManager still needed/wanted ? The rest may be in already by our other two patches it seems to me. File Attachments ------------------- ------------------------------------------------------- Date: Thu 03/11/04 at 13:59 Name: VMAccessController.java Size: 2KB By: crawley new file vm/reference/java/security/VMAccessController.java http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2904 ------------------------------------------------------- Date: Thu 03/11/04 at 13:58 Name: Makefile.am Size: 83KB By: crawley new file vm/reference/java/security/Makefile.am http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2903 ------------------------------------------------------- Date: Thu 03/11/04 at 13:56 Name: diffs Size: 10KB By: crawley The patches http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2902 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 06:15:39 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVpG7-0002aj-LX for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 06:15:39 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVpG5-0002aS-IZ for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:15:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVpG4-0002a9-U8 for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:15:37 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVpG4-0002a6-Qb for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:15:36 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVpFa-0006zB-7o for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:15:06 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVpFM-00021D-Lv for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:14:52 -0400 From: "Dalibor Topic" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9170 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Apparently-From: 139.19.20.93 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 06:15:37 -0400 Subject: [bugs #9170] gcj fails to compile classpath X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 10:15:37 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9170] Latest Modifications: Changes by: Dalibor Topic 'Date: Thu 06/03/2004 at 10:14 (GMT) ------------------ Additional Follow-up Comments ---------------------------- I've tried to build with gcj-3.2 and I'm getting the same problem: make[1]: Entering directory `/tmp/topic/classpath-0.09/lib' top_builddir=.. /bin/sh ./gen-classlist.sh standard /usr/bin/gcj-3.2 --bootclasspath '' -classpath ..:../external/jaxp/source:../vm/current:.: -C -d . @classes ../java/awt/font/TextAttribute.java:44: Superclass `AttributedCharacterIterator.Attribute' of class `java.awt.font.TextAttribute' not found. public final class TextAttribute extends AttributedCharacterIterator.Attribute ^ ../java/awt/im/InputSubset.java:49: Superclass `Character.Subset' of class `java.awt.im.InputSubset' not found. public final class InputSubset extends Character.Subset ^ 2 errors bash-2.05a$ gcj-3.2 --version gcj-3.2 (GCC) 3.2.1 20021020 (Debian prerelease) So I'd assume the reporter uses 3.2.x. /**************************************************************************/ [bugs #9170] Full Item Snapshot: URL: Project: classpath Submitted by: 0 On: Sun 05/30/2004 at 23:42 Severity: 5 - Average Resolution: None Assigned to: mkoch Status: In Process Platform Version: Red Hat 9.x Summary: gcj fails to compile classpath Original Submission: Follow the instructions to download and configure classpath. [bmann@light4 classpath-0.09]$ ./configure --enable-jni [bmann@light4 classpath-0.09]$ gmake Making all in lib gmake[1]: Entering directory `/home/bmann/wrk/java/classpath-0.09/lib' top_builddir=.. /bin/sh ./gen-classlist.sh standard /usr/bin/gcj --bootclasspath '' -classpath ..:../external/jaxp/source:../vm/current:.: -C -d . @classes ../java/awt/font/TextAttribute.java:44: Superclass `AttributedCharacterIterator.Attribute' of class `java.awt.font.TextAttribute' not found. public final class TextAttribute extends AttributedCharacterIterator.Attribute ^ ../java/awt/im/InputSubset.java:49: Superclass `Character.Subset' of class `java.awt.im.InputSubset' not found. public final class InputSubset extends Character.Subset ^ 2 errors gmake[1]: *** [compile-classes] Error 1 gmake[1]: Leaving directory `/home/bmann/wrk/java/classpath-0.09/lib' gmake: *** [all-recursive] Error 1 Follow-up Comments ------------------ ------------------------------------------------------- Date: Thu 06/03/2004 at 10:14 By: robilad I've tried to build with gcj-3.2 and I'm getting the same problem: make[1]: Entering directory `/tmp/topic/classpath-0.09/lib' top_builddir=.. /bin/sh ./gen-classlist.sh standard /usr/bin/gcj-3.2 --bootclasspath '' -classpath ..:../external/jaxp/source:../vm/current:.: -C -d . @classes ../java/awt/font/TextAttribute.java:44: Superclass `AttributedCharacterIterator.Attribute' of class `java.awt.font.TextAttribute' not found. public final class TextAttribute extends AttributedCharacterIterator.Attribute ^ ../java/awt/im/InputSubset.java:49: Superclass `Character.Subset' of class `java.awt.im.InputSubset' not found. public final class InputSubset extends Character.Subset ^ 2 errors bash-2.05a$ gcj-3.2 --version gcj-3.2 (GCC) 3.2.1 20021020 (Debian prerelease) So I'd assume the reporter uses 3.2.x. ------------------------------------------------------- Date: Mon 05/31/2004 at 00:06 By: mkoch What version of GCJ is this ? I suppose its 3.2.x. You need at least GCJ version 3.3 or you can use jikes to compile the java part of GNU classpath. Please report back which version of GCJ do you use. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 06:31:13 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVpVB-0006G9-Qt for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 06:31:13 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVpVA-0006G4-I2 for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:31:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVpV7-0006Fq-RH for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:31:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVpV7-0006Fn-3D for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:31:09 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BVpUj-00028j-Ht for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:30:46 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BVpTX-0003GO-Sq for commit-classpath@gnu.org; Thu, 03 Jun 2004 06:29:32 -0400 From: "Michael Koch" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9170 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Galeon/1.3.14 (Debian package 1.3.14a-1) X-Apparently-From: 80.228.94.249 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 06:31:12 -0400 Subject: [bugs #9170] gcj fails to compile classpath X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 10:31:12 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9170] Latest Modifications: Changes by: Michael Koch 'Date: Thu 06/03/04 at 10:29 (GMT) What | Removed | Added --------------------------------------------------------------------------- Resolution | None | Fixed Status | In Process | Closed ------------------ Additional Follow-up Comments ---------------------------- Okay, this confirmed my assumption. I'm closing this now. The real bug was that 0.09 release doest check for gcj >= 3.3. It checks for gcj >= 3.1 which is wrong. This was fixed shortly after release and will be in next release, 0.10. /**************************************************************************/ [bugs #9170] Full Item Snapshot: URL: Project: classpath Submitted by: 0 On: Sun 05/30/04 at 23:42 Severity: 5 - Average Resolution: Fixed Assigned to: mkoch Status: Closed Platform Version: Red Hat 9.x Summary: gcj fails to compile classpath Original Submission: Follow the instructions to download and configure classpath. [bmann@light4 classpath-0.09]$ ./configure --enable-jni [bmann@light4 classpath-0.09]$ gmake Making all in lib gmake[1]: Entering directory `/home/bmann/wrk/java/classpath-0.09/lib' top_builddir=.. /bin/sh ./gen-classlist.sh standard /usr/bin/gcj --bootclasspath '' -classpath ..:../external/jaxp/source:../vm/current:.: -C -d . @classes ../java/awt/font/TextAttribute.java:44: Superclass `AttributedCharacterIterator.Attribute' of class `java.awt.font.TextAttribute' not found. public final class TextAttribute extends AttributedCharacterIterator.Attribute ^ ../java/awt/im/InputSubset.java:49: Superclass `Character.Subset' of class `java.awt.im.InputSubset' not found. public final class InputSubset extends Character.Subset ^ 2 errors gmake[1]: *** [compile-classes] Error 1 gmake[1]: Leaving directory `/home/bmann/wrk/java/classpath-0.09/lib' gmake: *** [all-recursive] Error 1 Follow-up Comments ------------------ ------------------------------------------------------- Date: Thu 06/03/04 at 10:29 By: mkoch Okay, this confirmed my assumption. I'm closing this now. The real bug was that 0.09 release doest check for gcj >= 3.3. It checks for gcj >= 3.1 which is wrong. This was fixed shortly after release and will be in next release, 0.10. ------------------------------------------------------- Date: Thu 06/03/04 at 10:14 By: robilad I've tried to build with gcj-3.2 and I'm getting the same problem: make[1]: Entering directory `/tmp/topic/classpath-0.09/lib' top_builddir=.. /bin/sh ./gen-classlist.sh standard /usr/bin/gcj-3.2 --bootclasspath '' -classpath ..:../external/jaxp/source:../vm/current:.: -C -d . @classes ../java/awt/font/TextAttribute.java:44: Superclass `AttributedCharacterIterator.Attribute' of class `java.awt.font.TextAttribute' not found. public final class TextAttribute extends AttributedCharacterIterator.Attribute ^ ../java/awt/im/InputSubset.java:49: Superclass `Character.Subset' of class `java.awt.im.InputSubset' not found. public final class InputSubset extends Character.Subset ^ 2 errors bash-2.05a$ gcj-3.2 --version gcj-3.2 (GCC) 3.2.1 20021020 (Debian prerelease) So I'd assume the reporter uses 3.2.x. ------------------------------------------------------- Date: Mon 05/31/04 at 00:06 By: mkoch What version of GCJ is this ? I suppose its 3.2.x. You need at least GCJ version 3.3 or you can use jikes to compile the java part of GNU classpath. Please report back which version of GCJ do you use. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 09:24:39 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVsD1-0001qY-B2 for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 09:24:39 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVsCz-0001qG-HD for commit-classpath@gnu.org; Thu, 03 Jun 2004 09:24:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVsCx-0001px-Vj for commit-classpath@gnu.org; Thu, 03 Jun 2004 09:24:37 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVsCx-0001pu-SI for commit-classpath@gnu.org; Thu, 03 Jun 2004 09:24:35 -0400 Received: from [212.6.122.126] (helo=mail3.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVsBo-0002VU-9U for commit-classpath@gnu.org; Thu, 03 Jun 2004 09:23:24 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail3.ewetel.de (8.12.1/8.12.9) with ESMTP id i53DNMxu015563 for ; Thu, 3 Jun 2004 15:23:22 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVsFR-00066d-00 for ; Thu, 03 Jun 2004 15:27:09 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 15:24:07 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_3ZyvA2mYeRT23hY" Message-Id: <200406031524.07457.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: compile fix for java/security/AccessControlContext.java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 13:24:37 -0000 --Boundary-00=_3ZyvA2mYeRT23hY Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch to fix a compile problem I=20 introduced while importing Casey's latest patch. Michael 2004-06-03 Michael Koch * java/security/AccessControlContext.java (equals): Renamed protectionDomain to protectionDomains. (hashCode): Likewise. * vm/reference/java/security/.cvsignore: New file. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAvyZ3WSOgCCdjSDsRApqxAJ9vBW9smhacf8hjEqrFlvSCs04fcQCgh6XI b1rSFJtMnluqwBU32X9XA5s=3D =3DWVau =2D----END PGP SIGNATURE----- --Boundary-00=_3ZyvA2mYeRT23hY Content-Type: text/x-diff; charset="iso-8859-15"; name="sec.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="sec.diff" Index: java/security/AccessControlContext.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/security/AccessControlContext.java,v retrieving revision 1.7 diff -u -b -B -r1.7 AccessControlContext.java --- java/security/AccessControlContext.java 3 Jun 2004 06:43:11 -0000 1.7 +++ java/security/AccessControlContext.java 3 Jun 2004 13:18:59 -0000 @@ -139,7 +139,7 @@ { AccessControlContext acc = (AccessControlContext) obj; - if (acc.protectionDomain.length != protectionDomain.length) + if (acc.protectionDomains.length != protectionDomains.length) return false; int i, j; @@ -166,8 +166,8 @@ public int hashCode() { int h = 0; - for (int i = 0; i < protectionDomain.length; i++) - h ^= protectionDomain[i].hashCode(); + for (int i = 0; i < protectionDomains.length; i++) + h ^= protectionDomains[i].hashCode(); return h; } Index: vm/reference/java/security/.cvsignore =================================================================== RCS file: vm/reference/java/security/.cvsignore diff -N vm/reference/java/security/.cvsignore --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ vm/reference/java/security/.cvsignore 3 Jun 2004 13:18:59 -0000 @@ -0,0 +1,2 @@ +Makefile +Makefile.in --Boundary-00=_3ZyvA2mYeRT23hY-- From MAILER-DAEMON Thu Jun 03 09:33:45 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVsLp-00053I-QJ for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 09:33:45 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVsLo-00053C-Mz for commit-classpath@gnu.org; Thu, 03 Jun 2004 09:33:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVsLn-00052x-G0 for commit-classpath@gnu.org; Thu, 03 Jun 2004 09:33:44 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVsLn-00052r-89 for commit-classpath@gnu.org; Thu, 03 Jun 2004 09:33:43 -0400 Received: from [212.6.122.115] (helo=mail1.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVsL9-0004xN-7m for commit-classpath@gnu.org; Thu, 03 Jun 2004 09:33:03 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail1.ewetel.de (8.12.1/8.12.9) with ESMTP id i53DX0Ta005804 for ; Thu, 3 Jun 2004 15:33:01 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVsOm-00067D-00 for ; Thu, 03 Jun 2004 15:36:48 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 15:33:47 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_7iyvAQrENK6Grli" Message-Id: <200406031533.47064.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: gtk peer X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 13:33:44 -0000 --Boundary-00=_7iyvAQrENK6Grli Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch to merge the fixes for=20 GtkComponentPeer.requestFocus() done in libgcj to classpath. This reverts a patch done by Mark Wiellaard partially. Michael 2004-06-03 Michael Koch * gnu/java/awt/peer/gtk/GtkComponentPeer.java (requestFocus): Call gtkWidgetFocus() and post focus event. (gtkRequestFocus): Removed. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c (Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkRequestFocus): Renamed to ... (Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetRequestFocus): New method. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c (Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_setupAccelGroup): Merged comment with libgcj's version. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAvyi7WSOgCCdjSDsRAkL5AKCHvdn5bAHNqfcKdW1aPHapJ7duQwCglJOn 9fLkFhNzbXJZ7T98EmtFyCo=3D =3DAMyf =2D----END PGP SIGNATURE----- --Boundary-00=_7iyvAQrENK6Grli Content-Type: text/x-diff; charset="iso-8859-15"; name="gtk.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="gtk.diff" Index: gnu/java/awt/peer/gtk/GtkComponentPeer.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java,v retrieving revision 1.63 diff -u -b -B -r1.63 GtkComponentPeer.java --- gnu/java/awt/peer/gtk/GtkComponentPeer.java 31 May 2004 21:11:40 -0000 1.63 +++ gnu/java/awt/peer/gtk/GtkComponentPeer.java 3 Jun 2004 13:28:02 -0000 @@ -353,13 +353,9 @@ public void requestFocus () { - gtkRequestFocus(); + gtkWidgetRequestFocus(); + postFocusEvent(FocusEvent.FOCUS_GAINED, false); } - - // Called from requestFocus, we don't want to make requestFocus itself - // native since several JNI header generators have difficulties with - // overridden and/or miranda methods. (Bug in gcjh < 3.5.) - native private void gtkRequestFocus (); public void reshape (int x, int y, int width, int height) { Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,v retrieving revision 1.29 diff -u -b -B -r1.29 gnu_java_awt_peer_gtk_GtkComponentPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c 31 May 2004 21:12:12 -0000 1.29 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c 3 Jun 2004 13:28:02 -0000 @@ -472,7 +472,7 @@ } JNIEXPORT void JNICALL -Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkRequestFocus +Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetRequestFocus (JNIEnv *env, jobject obj) { void *ptr; Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c,v retrieving revision 1.10 diff -u -b -B -r1.10 gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c 28 May 2004 17:28:06 -0000 1.10 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c 3 Jun 2004 13:28:02 -0000 @@ -91,8 +91,7 @@ gdk_threads_enter (); menu = GTK_MENU (GTK_MENU_ITEM (ptr1)->submenu); gtk_menu_set_accel_group (menu, gtk_accel_group_new ()); - /* FIXME: _gtk_accel_group_attach is a GTK-private function, so - we'll need a different approach here: */ + /* FIXME: update this to use GTK-2.4 GtkActions. */ #if 0 _gtk_accel_group_attach (gtk_menu_get_accel_group (menu), G_OBJECT (gtk_widget_get_toplevel (ptr2))); --Boundary-00=_7iyvAQrENK6Grli-- From MAILER-DAEMON Thu Jun 03 10:07:27 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVssR-0004VQ-5v for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 10:07:27 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVssQ-0004VL-Li for commit-classpath@gnu.org; Thu, 03 Jun 2004 10:07:26 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVssO-0004V6-Ub for commit-classpath@gnu.org; Thu, 03 Jun 2004 10:07:26 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVssO-0004V3-S3 for commit-classpath@gnu.org; Thu, 03 Jun 2004 10:07:24 -0400 Received: from [212.6.122.141] (helo=mail4.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVsri-00050x-0H for commit-classpath@gnu.org; Thu, 03 Jun 2004 10:06:42 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail4.ewetel.de (8.12.1/8.12.9) with ESMTP id i53E6ePL007968 for ; Thu, 3 Jun 2004 16:06:40 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVsvM-0006ET-00 for ; Thu, 03 Jun 2004 16:10:28 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 16:07:26 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_eCzvAG41FXGrPNq" Message-Id: <200406031607.26414.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: gnu.java.lang.MainThread X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 14:07:26 -0000 --Boundary-00=_eCzvAG41FXGrPNq Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch to reformat coding style in=20 gnu.java.lang.MainThread. This will make it easier to merge this with=20 libgcj. Michael 2004-06-03 Michael Koch * gnu/java/lang/MainThread.java: Reformated to match our coding=20 style. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD4DBQFAvzCeWSOgCCdjSDsRAj4IAJY37z1mhqmfq4N8Rg/TBGZwf//bAJ9cwK29 xr1vbm3OI9wAGIzZ4J9E6A=3D=3D =3DFb8A =2D----END PGP SIGNATURE----- --Boundary-00=_eCzvAG41FXGrPNq Content-Type: text/x-diff; charset="iso-8859-15"; name="main.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="main.diff" Index: gnu/java/lang/MainThread.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/lang/MainThread.java,v retrieving revision 1.4 diff -u -b -B -r1.4 MainThread.java --- gnu/java/lang/MainThread.java 22 Jan 2002 22:26:57 -0000 1.4 +++ gnu/java/lang/MainThread.java 3 Jun 2004 13:56:50 -0000 @@ -1,5 +1,6 @@ /* gnu.java.lang.MainThread - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -41,16 +42,20 @@ import java.lang.reflect.*; /** - ** MainThread is a Thread which uses the main() method of some class. - ** - ** @author John Keiser - ** @version 1.1.0, Aug 11 1998 - **/ -public class MainThread { + * MainThread is a Thread which uses the main() method of some class. + * + * @author John Keiser + * @author Tom Tromey (tromey@redhat.com) + */ +public class MainThread +{ + // Private data. String[] args; Method mainMethod; - public MainThread(String classname, String[] args) throws ClassNotFoundException, NoSuchMethodException { + public MainThread(String classname, String[] args) + throws ClassNotFoundException, NoSuchMethodException + { Class found = Class.forName(classname); Class[] argTypes = new Class[1]; argTypes[0] = args.getClass(); @@ -58,11 +63,19 @@ this.args = args; } - public void run() { - try { + public void run() + { + try + { mainMethod.invoke(null,args); - } catch(IllegalAccessException e) { - } catch(InvocationTargetException e) { + } + catch(IllegalAccessException e) + { + // Ignore. + } + catch(InvocationTargetException e) + { + // Ignore. } } } --Boundary-00=_eCzvAG41FXGrPNq-- From MAILER-DAEMON Thu Jun 03 11:30:34 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVuAs-0006oz-AO for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 11:30:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVuAr-0006oU-Hk for commit-classpath@gnu.org; Thu, 03 Jun 2004 11:30:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVuAp-0006mi-K0 for commit-classpath@gnu.org; Thu, 03 Jun 2004 11:30:33 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVuAp-0006mZ-Fv for commit-classpath@gnu.org; Thu, 03 Jun 2004 11:30:31 -0400 Received: from [212.6.122.151] (helo=mail5.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVuAJ-0008Pj-RZ for commit-classpath@gnu.org; Thu, 03 Jun 2004 11:30:00 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail5.ewetel.de (8.12.1/8.12.9) with ESMTP id i53FTwuQ029603 for ; Thu, 3 Jun 2004 17:29:58 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVuDy-0006OE-00 for ; Thu, 03 Jun 2004 17:33:46 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 17:30:43 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_jQ0vAs3IV0+Qp0e" Message-Id: <200406031730.43856.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: doc/hacking.texinfo X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 15:30:33 -0000 --Boundary-00=_jQ0vAs3IV0+Qp0e Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch to fix a path in the hacking guide. Michael 2004-06-03 Michael Koch * doc/hacking.texinfo: Fixed path to jnilink.h =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAv0QjWSOgCCdjSDsRAl+EAJ9PSBwT93NFJ7h5BRzERJrc9IdxRwCcDBMJ tvYp6QFwKUxkjOOFTMS0fq0=3D =3D4aW4 =2D----END PGP SIGNATURE----- --Boundary-00=_jQ0vAs3IV0+Qp0e Content-Type: text/x-diff; charset="iso-8859-15"; name="info.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="info.diff" Index: doc/hacking.texinfo =================================================================== RCS file: /cvsroot/classpath/classpath/doc/hacking.texinfo,v retrieving revision 1.26 diff -u -b -B -r1.26 hacking.texinfo --- doc/hacking.texinfo 30 Apr 2004 12:32:16 -0000 1.26 +++ doc/hacking.texinfo 3 Jun 2004 15:24:32 -0000 @@ -1013,7 +1013,7 @@ method call from Java to C. Cache methodIDs and fieldIDs wherever you can. String lookups are -expensive. The best way to do this is to use the native/lib/jnilink.h +expensive. The best way to do this is to use the native/jni/classpath/jnilink.h library. It will ensure that jmethodIDs are always valid, even if the class is unloaded at some point. In 1.1, jnilink simply caches a NewGlobalRef() to the method's underlying class; however, when 1.2 comes --Boundary-00=_jQ0vAs3IV0+Qp0e-- From MAILER-DAEMON Thu Jun 03 11:57:11 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVuad-0004uV-DA for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 11:57:11 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVuab-0004uI-8e for commit-classpath@gnu.org; Thu, 03 Jun 2004 11:57:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVuaZ-0004u2-PD for commit-classpath@gnu.org; Thu, 03 Jun 2004 11:57:09 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVuaZ-0004ty-LU for commit-classpath@gnu.org; Thu, 03 Jun 2004 11:57:07 -0400 Received: from [212.6.122.115] (helo=mail1.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVuZs-0006dT-4N for commit-classpath@gnu.org; Thu, 03 Jun 2004 11:56:24 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail1.ewetel.de (8.12.1/8.12.9) with ESMTP id i53FuMTa018177 for ; Thu, 3 Jun 2004 17:56:23 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVudX-0006PK-00 for ; Thu, 03 Jun 2004 18:00:11 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 17:57:08 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_Up0vAeEMcPxcXHh" Message-Id: <200406031757.08287.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: includes update X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 15:57:09 -0000 --Boundary-00=_Up0vAeEMcPxcXHh Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch to update=20 include/gnu_java_awt_peer_gtk_GtkComponentPeer.h which changed during=20 last update to gnu.java.awt.peer.gtk.GtkComponentPeer. 2004-06-03 Michael Koch * include/gnu_java_awt_peer_gtk_GtkComponentPeer.h: Regenerated. =2D -- Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAv0pUWSOgCCdjSDsRAjqMAJ92LnBauIl+yUWNPFV1ieQjJzYjywCaA9NM 7QuCZhBfeSxhwMskaUN3m9o=3D =3Da3Nf =2D----END PGP SIGNATURE----- --Boundary-00=_Up0vAeEMcPxcXHh Content-Type: text/x-diff; charset="iso-8859-15"; name="jni.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="jni.diff" Index: include/gnu_java_awt_peer_gtk_GtkComponentPeer.h =================================================================== RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkComponentPeer.h,v retrieving revision 1.11 diff -u -b -B -r1.11 gnu_java_awt_peer_gtk_GtkComponentPeer.h --- include/gnu_java_awt_peer_gtk_GtkComponentPeer.h 31 May 2004 21:11:43 -0000 1.11 +++ include/gnu_java_awt_peer_gtk_GtkComponentPeer.h 3 Jun 2004 15:50:40 -0000 @@ -29,7 +29,6 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_removeExposeFilter (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectJObject (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (JNIEnv *env, jobject); -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkRequestFocus (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_setNativeBounds (JNIEnv *env, jobject, jint, jint, jint, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Ljava_lang_String_2 (JNIEnv *env, jobject, jstring, jstring); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Z (JNIEnv *env, jobject, jstring, jboolean); --Boundary-00=_Up0vAeEMcPxcXHh-- From MAILER-DAEMON Thu Jun 03 12:15:31 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVusN-00028F-F0 for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 12:15:31 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVusL-00026b-E6 for commit-classpath@gnu.org; Thu, 03 Jun 2004 12:15:29 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVusJ-00024x-HT for commit-classpath@gnu.org; Thu, 03 Jun 2004 12:15:27 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVusJ-00024e-9e for commit-classpath@gnu.org; Thu, 03 Jun 2004 12:15:27 -0400 Received: from [212.6.122.151] (helo=mail5.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVurl-00031T-6D for commit-classpath@gnu.org; Thu, 03 Jun 2004 12:14:53 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail5.ewetel.de (8.12.1/8.12.9) with ESMTP id i53GEpuQ001607 for ; Thu, 3 Jun 2004 18:14:51 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BVuvP-0006WQ-00 for ; Thu, 03 Jun 2004 18:18:39 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Thu, 3 Jun 2004 18:15:36 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_o60vAbE7YoFLhWV" Message-Id: <200406031815.37009.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: java.io.ObjectInputStream X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 16:15:30 -0000 --Boundary-00=_o60vAbE7YoFLhWV Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch to fix java.io.ObjectInputStream=20 reading of fields. This was found by jikes' warnings. ;-) Michael 2004-06-03 Michael Koch * java/io/ObjectInputStream.java (readFields): Use long datatype when shifting byte values more then 24 bits left. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAv06oWSOgCCdjSDsRAvH+AKCekK/w4X6U7Ixi0rfIoPSupztLhgCdFW/6 M/E2v2z229qDDHbcLHbANQM=3D =3DO/W+ =2D----END PGP SIGNATURE----- --Boundary-00=_o60vAbE7YoFLhWV Content-Type: text/x-diff; charset="iso-8859-15"; name="io.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="io.diff" Index: java/io/ObjectInputStream.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/io/ObjectInputStream.java,v retrieving revision 1.40 diff -u -b -B -r1.40 ObjectInputStream.java --- java/io/ObjectInputStream.java 8 Apr 2004 21:22:48 -0000 1.40 +++ java/io/ObjectInputStream.java 3 Jun 2004 16:04:43 -0000 @@ -1303,10 +1303,10 @@ int off = field.getOffset(); - return (long)(((prim_field_data[off++] & 0xFF) << 56) - | ((prim_field_data[off++] & 0xFF) << 48) - | ((prim_field_data[off++] & 0xFF) << 40) - | ((prim_field_data[off++] & 0xFF) << 32) + return (long)(((prim_field_data[off++] & 0xFFL) << 56) + | ((prim_field_data[off++] & 0xFFL) << 48) + | ((prim_field_data[off++] & 0xFFL) << 40) + | ((prim_field_data[off++] & 0xFFL) << 32) | ((prim_field_data[off++] & 0xFF) << 24) | ((prim_field_data[off++] & 0xFF) << 16) | ((prim_field_data[off++] & 0xFF) << 8) @@ -1340,10 +1340,10 @@ int off = field.getOffset(); return Double.longBitsToDouble - ( (long) (((prim_field_data[off++] & 0xFF) << 56) - | ((prim_field_data[off++] & 0xFF) << 48) - | ((prim_field_data[off++] & 0xFF) << 40) - | ((prim_field_data[off++] & 0xFF) << 32) + ( (long) (((prim_field_data[off++] & 0xFFL) << 56) + | ((prim_field_data[off++] & 0xFFL) << 48) + | ((prim_field_data[off++] & 0xFFL) << 40) + | ((prim_field_data[off++] & 0xFFL) << 32) | ((prim_field_data[off++] & 0xFF) << 24) | ((prim_field_data[off++] & 0xFF) << 16) | ((prim_field_data[off++] & 0xFF) << 8) --Boundary-00=_o60vAbE7YoFLhWV-- From MAILER-DAEMON Thu Jun 03 17:13:18 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVzWY-0005u6-8U for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 17:13:18 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVzWW-0005tz-OF for commit-classpath@gnu.org; Thu, 03 Jun 2004 17:13:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVzWU-0005ti-WF for commit-classpath@gnu.org; Thu, 03 Jun 2004 17:13:16 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVzWU-0005tY-Rf for commit-classpath@gnu.org; Thu, 03 Jun 2004 17:13:14 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVzVh-00035t-Ir for commit-classpath@gnu.org; Thu, 03 Jun 2004 17:12:25 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id BBF4462474; Thu, 3 Jun 2004 21:12:23 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 38189-09; Thu, 3 Jun 2004 21:12:22 +0000 (GMT) Received: from reali.dnsalias.net (212-41-91-223.adsl.solnet.ch [212.41.91.223]) by mail01.solnet.ch (Postfix) with ESMTP id C44EA62254; Thu, 3 Jun 2004 21:12:21 +0000 (GMT) Received: from mc-reali (reali.dnsalias.net [192.168.1.2]) by reali.dnsalias.net (Postfix) with ESMTP id 070BEB9F78; Thu, 3 Jun 2004 23:09:19 +0200 (CEST) Date: Thu, 03 Jun 2004 23:13:28 +0200 From: Patrik Reali To: Mark Wielaard Message-ID: <6863058.1086304408@[192.168.1.4]> In-Reply-To: <1085522757.26452.82.camel@elsschot.wildebeest.org> References: <1085332306.20362.26.camel@elsschot.wildebeest.org> <2955379.1085522382@[192.168.1.4]> <1085522757.26452.82.camel@elsschot.wildebeest.org> X-Mailer: Mulberry/3.1.0 (Win32) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Virus-Scanned: by SolNet mail01.solnet.ch Cc: commit-classpath@gnu.org Subject: Re: FYI: Updated archive and cvs links on homepage X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 21:13:16 -0000 Hi Mark, thank you for the proposal, it seems to work fine. For some reason, I have tried a similar code without success.... Maybe I'm just starting to turn senile. :-( I will commit it right away. -Patrik -------------------------------- Patrik Reali http://www.reali.ch/~patrik/ --On Mittwoch, 26. Mai 2004 00:05 +0200 Mark Wielaard wrote: > +all : $(WML_OBJS) subdirs > + > %.texinfo : > cp ../$(notdir $(@)) docs > > -%.html: %.wml include/macros.wml include/layout.wml > +# home and news html includes newsitems.txt so we list that here > explicitly +home.html: home.wml include/macros.wml include/layout.wml > newsitems.txt + $(WML) -o $@ $< > +news.html: news.wml include/macros.wml include/layout.wml newsitems.txt > $(WML) -o $@ $< > > -all : $(WML_OBJS) subdirs > +%.html: %.wml include/macros.wml include/layout.wml > + $(WML) -o $@ $< > From MAILER-DAEMON Thu Jun 03 17:33:04 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BVzpg-0002W3-Bk for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 17:33:04 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BVzpf-0002Vx-La for commit-classpath@gnu.org; Thu, 03 Jun 2004 17:33:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BVzpf-0002Vl-4R for commit-classpath@gnu.org; Thu, 03 Jun 2004 17:33:03 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BVzpe-0002Vi-WA for commit-classpath@gnu.org; Thu, 03 Jun 2004 17:33:03 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BVzos-0006MQ-8e for commit-classpath@gnu.org; Thu, 03 Jun 2004 17:32:14 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 7088362472 for ; Thu, 3 Jun 2004 21:32:13 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 39260-10 for ; Thu, 3 Jun 2004 21:32:12 +0000 (GMT) Received: from reali.dnsalias.net (212-41-91-223.adsl.solnet.ch [212.41.91.223]) by mail01.solnet.ch (Postfix) with ESMTP id 3579562467 for ; Thu, 3 Jun 2004 21:32:12 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 500) id 9ADC8B9F78; Thu, 3 Jun 2004 23:29:10 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040603212910.9ADC8B9F78@reali.dnsalias.net> Date: Thu, 3 Jun 2004 23:29:10 +0200 (CEST) From: reali@acm.org (Patrik Reali) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: doc/www.gnu.org/Makefile X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 21:33:03 -0000 2004-06-03 Patrik Reali * doc/www.gnu.org/Makefile: dependency to newsitems.txt added Index: doc/www.gnu.org/Makefile =================================================================== RCS file: /cvsroot/classpath/classpath/doc/www.gnu.org/Makefile,v retrieving revision 1.15 diff -u -r1.15 Makefile --- doc/www.gnu.org/Makefile 15 Mar 2004 21:54:14 -0000 1.15 +++ doc/www.gnu.org/Makefile 3 Jun 2004 21:25:29 -0000 @@ -10,13 +10,19 @@ WML_SRC = $(wildcard *.wml) WML_OBJS = $(patsubst %.wml,%.html,$(WML_SRC)) +all : $(WML_OBJS) subdirs + %.texinfo : cp ../$(notdir $(@)) docs -%.html: %.wml include/macros.wml include/layout.wml +# home and news html includes newsitems.txt so we list that here explicitly +home.html: home.wml include/macros.wml include/layout.wml newsitems.txt + $(WML) -o $@ $< +news.html: news.wml include/macros.wml include/layout.wml newsitems.txt $(WML) -o $@ $< -all : $(WML_OBJS) subdirs +%.html: %.wml include/macros.wml include/layout.wml + $(WML) -o $@ $< .PHONY : clean clean : From MAILER-DAEMON Thu Jun 03 18:03:05 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BW0Ij-000068-4F for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:05 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BW0Ih-0008Vm-LM for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BW0Ig-0008Us-6Q for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:03 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BW0Ig-0008Up-4A for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:02 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BW0Hy-0003P7-GI for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:02:18 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BW0Hk-0000BB-PQ for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:02:05 -0400 From: "Patrik Reali" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:80 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: task X-Savannah-Artifact-ID: 3125 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322) X-Apparently-From: 212.41.91.223 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 18:03:03 -0400 Subject: [task #3125] Add newsitem.txt dependency into Makefile X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 22:03:03 -0000 This mail is an automated notification from the task tracker of the project: classpath. /**************************************************************************/ [task #3125] Latest Modifications: Changes by: Patrik Reali 'Date: Thu 06/03/2004 at 22:02 (GMT) What | Removed | Added --------------------------------------------------------------------------- Resolution | None | Fixed Percent Complete | 0% | None Status | Open | Closed /**************************************************************************/ [task #3125] Full Item Snapshot: URL: Project: classpath Submitted by: Patrik Reali On: Mon 03/01/2004 at 19:47 Category: documentation Should Start On: Mon 03/01/2004 at 00:00 Should be Finished on: Thu 04/01/2004 at 00:00 Priority: 3 - Low Resolution: Fixed Assigned to: patrik_reali Percent Complete: None Status: Closed Effort: 0.00 Summary: Add newsitem.txt dependency into Makefile Original Submission: Add dependency to newsitem.txt into doc/www.gnu.org/Makefile For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 03 18:03:37 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BW0JF-00009u-B6 for mharc-commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:37 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BW0JC-00009d-50 for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BW0JA-00009Q-Nr for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:33 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BW0JA-00009N-IZ for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:32 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BW0Ig-0003dO-8C for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:03:02 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BW0IT-0000F1-9P for commit-classpath@gnu.org; Thu, 03 Jun 2004 18:02:49 -0400 From: "Patrik Reali" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:80 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: task X-Savannah-Artifact-ID: 3126 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322) X-Apparently-From: 212.41.91.223 X-Copy-To: Array Message-Id: Date: Thu, 03 Jun 2004 18:03:33 -0400 Subject: [task #3126] Create news page X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 22:03:34 -0000 This mail is an automated notification from the task tracker of the project: classpath. /**************************************************************************/ [task #3126] Latest Modifications: Changes by: Patrik Reali 'Date: Thu 06/03/2004 at 22:02 (GMT) What | Removed | Added --------------------------------------------------------------------------- Resolution | None | Fixed Percent Complete | 0% | None Status | Open | Closed /**************************************************************************/ [task #3126] Full Item Snapshot: URL: Project: classpath Submitted by: Patrik Reali On: Mon 03/01/2004 at 19:49 Category: documentation Should Start On: Mon 03/01/2004 at 00:00 Should be Finished on: Thu 04/01/2004 at 00:00 Priority: 5 - Normal Resolution: Fixed Assigned to: patrik_reali Percent Complete: None Status: Closed Effort: 0.00 Summary: Create news page Original Submission: Create a news page based on newsitem.txt containing all items, leave only first 10 on home. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Fri Jun 04 00:11:50 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BW63a-0007JI-PB for mharc-commit-classpath@gnu.org; Fri, 04 Jun 2004 00:11:50 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BW63X-0007Gh-9Z for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:11:47 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BW63N-0007Ch-NQ for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:11:38 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BW63M-0007C5-R1 for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:11:36 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BW62h-0006nQ-Hb for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:10:55 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 08BE26244F for ; Fri, 4 Jun 2004 04:10:55 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 49820-06 for ; Fri, 4 Jun 2004 04:10:54 +0000 (GMT) Received: from reali.dnsalias.net (212-41-91-223.adsl.solnet.ch [212.41.91.223]) by mail01.solnet.ch (Postfix) with ESMTP id DFFB36242B for ; Fri, 4 Jun 2004 04:10:53 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 0E60ECF849; Fri, 4 Jun 2004 06:07:50 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040604040750.0E60ECF849@reali.dnsalias.net> Date: Fri, 4 Jun 2004 06:07:50 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040604 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2004 04:11:48 -0000 From MAILER-DAEMON Fri Jun 04 00:14:33 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BW66D-0007jQ-9u for mharc-commit-classpath@gnu.org; Fri, 04 Jun 2004 00:14:33 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BW66B-0007jI-N2 for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:14:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BW66A-0007it-Gv for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:14:30 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BW66A-0007iq-Dq for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:14:30 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BW65d-0007IR-VB for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:13:58 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BW65N-0003pt-Uf for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:13:42 -0400 From: "Casey Marshall" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 2788 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5; No time for love, Dr. Jones) Gecko/20030715 X-Apparently-From: 24.6.46.122 X-Copy-To: Array Message-Id: Date: Fri, 04 Jun 2004 00:14:30 -0400 Subject: [patch #2788] Patches to implement security checking X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2004 04:14:32 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #2788] Latest Modifications: Changes by: Casey Marshall 'Date: Fri 06/04/2004 at 04:13 (US/Pacific) ------------------ Additional Follow-up Comments ---------------------------- Attached diff against java/lang/SecurityManager.java. The other changes obviated by patch #3115 and patch #3116. /**************************************************************************/ [patch #2788] Full Item Snapshot: URL: Project: classpath Submitted by: Stephen Crawley On: Thu 03/11/2004 at 13:56 Category: None Priority: 7 - High Resolution: None Assigned to: mkoch Originator Email: Status: Open Summary: Patches to implement security checking Original Submission: These patches and new files replace dummy methods in java.lang.Security, etc with code that implements security checking. The changes simply reinstate commented out code, and add a couple of new native calls that can be dummy implemented in a VM in an obvious way. A changelog entry follows: java/lang/SecurityManager.java (getSecurityContext) : enable code that was previously commented out (checkPermission(Permission)) : ditto (checkPermission(Permission, Object)) : ditto (checkRead) : ditto (checkConnect) : ditto java/security/AccessControlContext.java (AccessControlContext) : fix NullPointerException bug and tidy up minor inefficiencies java/security/AccessController.java (getContext) : implement getContext() as call to VMAccessController.getProtectionDomains() vm/reference/java/Makefile.am : add the security subdir vm/reference/java/lang/VMClassLoader.java : (defineClass) change the overload with the ProtectionDomain argument into a native method. (Previously the arg was ignored.) vm/reference/java/security/Makefile.am : new file vm/reference/java/security/VMAccessController.java : new file Follow-up Comments ------------------ ------------------------------------------------------- Date: Fri 06/04/2004 at 04:13 By: rsdio Attached diff against java/lang/SecurityManager.java. The other changes obviated by patch #3115 and patch #3116. ------------------------------------------------------- Date: Thu 06/03/2004 at 09:31 By: mkoch Can you please update this patch to the current situation ? Are the parts to java.lang.SecurityManager still needed/wanted ? The rest may be in already by our other two patches it seems to me. File Attachments ------------------- ------------------------------------------------------- Date: Fri 06/04/2004 at 04:13 Name: security3.patch Size: 3KB By: rsdio http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=3341 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:59 Name: VMAccessController.java Size: 2KB By: crawley new file vm/reference/java/security/VMAccessController.java http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2904 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:58 Name: Makefile.am Size: 83KB By: crawley new file vm/reference/java/security/Makefile.am http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2903 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:56 Name: diffs Size: 10KB By: crawley The patches http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2902 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Fri Jun 04 00:24:17 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BW6Fd-0001cP-Gm for mharc-commit-classpath@gnu.org; Fri, 04 Jun 2004 00:24:17 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BW6Fb-0001c5-Ua for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:24:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BW6Fb-0001bl-79 for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:24:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BW6Fb-0001bb-4O for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:24:15 -0400 Received: from [199.232.41.8] (helo=mx20.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BW6Et-0000Xe-HA for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:23:31 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by mx20.gnu.org with esmtp (Exim 4.34) id 1BW68J-0005mu-4v for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:16:43 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BW685-00046u-8R for commit-classpath@gnu.org; Fri, 04 Jun 2004 00:16:29 -0400 From: "Casey Marshall" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 2788 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5; No time for love, Dr. Jones) Gecko/20030715 X-Apparently-From: 24.6.46.122 X-Copy-To: Array Message-Id: Date: Fri, 04 Jun 2004 00:24:15 -0400 Subject: [patch #2788] Patches to implement security checking X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2004 04:24:16 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #2788] Full Item Snapshot: URL: Project: classpath Submitted by: Stephen Crawley On: Thu 03/11/2004 at 13:56 Category: None Priority: 7 - High Resolution: None Assigned to: mkoch Originator Email: Status: Open Summary: Patches to implement security checking Original Submission: These patches and new files replace dummy methods in java.lang.Security, etc with code that implements security checking. The changes simply reinstate commented out code, and add a couple of new native calls that can be dummy implemented in a VM in an obvious way. A changelog entry follows: java/lang/SecurityManager.java (getSecurityContext) : enable code that was previously commented out (checkPermission(Permission)) : ditto (checkPermission(Permission, Object)) : ditto (checkRead) : ditto (checkConnect) : ditto java/security/AccessControlContext.java (AccessControlContext) : fix NullPointerException bug and tidy up minor inefficiencies java/security/AccessController.java (getContext) : implement getContext() as call to VMAccessController.getProtectionDomains() vm/reference/java/Makefile.am : add the security subdir vm/reference/java/lang/VMClassLoader.java : (defineClass) change the overload with the ProtectionDomain argument into a native method. (Previously the arg was ignored.) vm/reference/java/security/Makefile.am : new file vm/reference/java/security/VMAccessController.java : new file Follow-up Comments ------------------ ------------------------------------------------------- Date: Fri 06/04/2004 at 04:13 By: rsdio Attached diff against java/lang/SecurityManager.java. The other changes obviated by patch #3115 and patch #3116. ------------------------------------------------------- Date: Thu 06/03/2004 at 09:31 By: mkoch Can you please update this patch to the current situation ? Are the parts to java.lang.SecurityManager still needed/wanted ? The rest may be in already by our other two patches it seems to me. File Attachments ------------------- ------------------------------------------------------- Date: Fri 06/04/2004 at 04:16 Name: security3-ChangeLog Size: 290KB By: rsdio changelog for security3.patch http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=3342 ------------------------------------------------------- Date: Fri 06/04/2004 at 04:13 Name: security3.patch Size: 3KB By: rsdio http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=3341 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:59 Name: VMAccessController.java Size: 2KB By: crawley new file vm/reference/java/security/VMAccessController.java http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2904 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:58 Name: Makefile.am Size: 83KB By: crawley new file vm/reference/java/security/Makefile.am http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2903 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:56 Name: diffs Size: 10KB By: crawley The patches http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2902 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Fri Jun 04 02:21:41 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BW85F-0007LK-0e for mharc-commit-classpath@gnu.org; Fri, 04 Jun 2004 02:21:41 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BW85D-0007LE-Fj for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:21:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BW85B-0007Kq-Lz for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:21:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BW85B-0007Kn-JO for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:21:37 -0400 Received: from [212.6.122.126] (helo=mail3.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BW84f-00013G-V9 for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:21:06 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-249.ewetel.net [80.228.94.249]) by mail3.ewetel.de (8.12.1/8.12.9) with ESMTP id i546L3xu001947 for ; Fri, 4 Jun 2004 08:21:04 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BW88N-0008Lx-00 for ; Fri, 04 Jun 2004 08:24:55 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Fri, 4 Jun 2004 08:21:44 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_4TBwApVNjyXCj/z" Message-Id: <200406040821.53250.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: java.lang.SecurityManager X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2004 06:21:39 -0000 --Boundary-00=_4TBwApVNjyXCj/z Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch by Casy Marshall. It implements the=20 missing pieces of java.lang.SecurityManager. Michael 2004-06-04 Casey Marshall * java/lang/SecurityManager.java (getSecurityContext): return `AccessController.getContext'. (checkPermission(Permission)): use AccessController. (checkPermission(Permission,Object)): likewise. (checkRead): likewise. (checkConnect): likewise. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAwBUAWSOgCCdjSDsRAkXkAJ0bLSr6GDRV++1DfE3QdCW7U24nKgCfdurk shG81W/ALPAxD2vkBnu6DwM=3D =3DuYrt =2D----END PGP SIGNATURE----- --Boundary-00=_4TBwApVNjyXCj/z Content-Type: text/x-diff; charset="iso-8859-15"; name="sec.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="sec.diff" Index: java/lang/SecurityManager.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/lang/SecurityManager.java,v retrieving revision 1.19 diff -u -b -B -r1.19 SecurityManager.java --- java/lang/SecurityManager.java 20 Apr 2004 20:19:30 -0000 1.19 +++ java/lang/SecurityManager.java 4 Jun 2004 06:14:04 -0000 @@ -45,6 +45,8 @@ import java.lang.reflect.Member; import java.net.InetAddress; import java.net.SocketPermission; +import java.security.AccessControlContext; +import java.security.AccessController; import java.security.AllPermission; import java.security.Permission; import java.security.Security; @@ -307,8 +309,7 @@ */ public Object getSecurityContext() { - // XXX Should be: return AccessController.getContext(); - return new SecurityContext(getClassContext()); + return AccessController.getContext(); } /** @@ -323,8 +324,7 @@ */ public void checkPermission(Permission perm) { - // XXX Should be: AccessController.checkPermission(perm); - throw new SecurityException("Operation not allowed"); + AccessController.checkPermission(perm); } /** @@ -345,11 +345,9 @@ */ public void checkPermission(Permission perm, Object context) { - // XXX Should be: - // if (! (context instanceof AccessControlContext)) - // throw new SecurityException("Missing context"); - // ((AccessControlContext) context).checkPermission(perm); - throw new SecurityException("Operation not allowed"); + if (! (context instanceof AccessControlContext)) + throw new SecurityException("Missing context"); + ((AccessControlContext) context).checkPermission(perm); } /** @@ -548,12 +546,10 @@ */ public void checkRead(String filename, Object context) { - // XXX Should be: - // if (! (context instanceof AccessControlContext)) - // throw new SecurityException("Missing context"); - // AccessControlContext ac = (AccessControlContext) context; - // ac.checkPermission(new FilePermission(filename, "read")); - throw new SecurityException("Cannot read files via file names."); + if (! (context instanceof AccessControlContext)) + throw new SecurityException("Missing context"); + AccessControlContext ac = (AccessControlContext) context; + ac.checkPermission(new FilePermission(filename, "read")); } /** @@ -667,17 +663,15 @@ */ public void checkConnect(String host, int port, Object context) { - // XXX Should be: - // if (! (context instanceof AccessControlContext)) - // throw new SecurityException("Missing context"); - // AccessControlContext ac = (AccessControlContext) context; - // if (port == -1) - // ac.checkPermission(new SocketPermission(host, "resolve")); - // else - // // Use the toString() hack to do the null check. - // ac.checkPermission(new SocketPermission(host.toString + ":" +port, - // "connect")); - throw new SecurityException("Cannot make network connections."); + if (! (context instanceof AccessControlContext)) + throw new SecurityException("Missing context"); + AccessControlContext ac = (AccessControlContext) context; + if (port == -1) + ac.checkPermission(new SocketPermission(host, "resolve")); + else + // Use the toString() hack to do the null check. + ac.checkPermission(new SocketPermission(host.toString() + ":" + port, + "connect")); } /** --Boundary-00=_4TBwApVNjyXCj/z-- From MAILER-DAEMON Fri Jun 04 02:22:07 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BW85f-0007VK-Hs for mharc-commit-classpath@gnu.org; Fri, 04 Jun 2004 02:22:07 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BW85d-0007Ut-Bh for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:22:05 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BW85c-0007Uh-RD for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:22:05 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BW85c-0007Ue-OC for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:22:04 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BW858-0001A4-Mg for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:21:34 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BW84t-0003CV-BE for commit-classpath@gnu.org; Fri, 04 Jun 2004 02:21:19 -0400 From: "Michael Koch" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 2788 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Galeon/1.3.14 (Debian package 1.3.14a-1) X-Apparently-From: 80.228.94.249 X-Copy-To: Array Message-Id: Date: Fri, 04 Jun 2004 02:22:05 -0400 Subject: [patch #2788] Patches to implement security checking X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2004 06:22:05 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #2788] Latest Modifications: Changes by: Michael Koch 'Date: Fri 06/04/2004 at 06:21 (GMT) What | Removed | Added --------------------------------------------------------------------------- Resolution | None | Fixed Status | Open | Closed ------------------ Additional Follow-up Comments ---------------------------- Commited to CVS. Thanks for your contributions. /**************************************************************************/ [patch #2788] Full Item Snapshot: URL: Project: classpath Submitted by: Stephen Crawley On: Thu 03/11/2004 at 13:56 Category: None Priority: 7 - High Resolution: Fixed Assigned to: mkoch Originator Email: Status: Closed Summary: Patches to implement security checking Original Submission: These patches and new files replace dummy methods in java.lang.Security, etc with code that implements security checking. The changes simply reinstate commented out code, and add a couple of new native calls that can be dummy implemented in a VM in an obvious way. A changelog entry follows: java/lang/SecurityManager.java (getSecurityContext) : enable code that was previously commented out (checkPermission(Permission)) : ditto (checkPermission(Permission, Object)) : ditto (checkRead) : ditto (checkConnect) : ditto java/security/AccessControlContext.java (AccessControlContext) : fix NullPointerException bug and tidy up minor inefficiencies java/security/AccessController.java (getContext) : implement getContext() as call to VMAccessController.getProtectionDomains() vm/reference/java/Makefile.am : add the security subdir vm/reference/java/lang/VMClassLoader.java : (defineClass) change the overload with the ProtectionDomain argument into a native method. (Previously the arg was ignored.) vm/reference/java/security/Makefile.am : new file vm/reference/java/security/VMAccessController.java : new file Follow-up Comments ------------------ ------------------------------------------------------- Date: Fri 06/04/2004 at 06:21 By: mkoch Commited to CVS. Thanks for your contributions. ------------------------------------------------------- Date: Fri 06/04/2004 at 04:13 By: rsdio Attached diff against java/lang/SecurityManager.java. The other changes obviated by patch #3115 and patch #3116. ------------------------------------------------------- Date: Thu 06/03/2004 at 09:31 By: mkoch Can you please update this patch to the current situation ? Are the parts to java.lang.SecurityManager still needed/wanted ? The rest may be in already by our other two patches it seems to me. File Attachments ------------------- ------------------------------------------------------- Date: Fri 06/04/2004 at 04:16 Name: security3-ChangeLog Size: 290KB By: rsdio changelog for security3.patch http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=3342 ------------------------------------------------------- Date: Fri 06/04/2004 at 04:13 Name: security3.patch Size: 3KB By: rsdio http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=3341 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:59 Name: VMAccessController.java Size: 2KB By: crawley new file vm/reference/java/security/VMAccessController.java http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2904 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:58 Name: Makefile.am Size: 83KB By: crawley new file vm/reference/java/security/Makefile.am http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2903 ------------------------------------------------------- Date: Thu 03/11/2004 at 13:56 Name: diffs Size: 10KB By: crawley The patches http://savannah.gnu.org/patch/download.php?item_id=2788&item_file_id=2902 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Fri Jun 04 14:50:23 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BWJln-0003NU-5G for mharc-commit-classpath@gnu.org; Fri, 04 Jun 2004 14:50:23 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BWJlk-0003NO-Sf for commit-classpath@gnu.org; Fri, 04 Jun 2004 14:50:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BWJli-0003N3-Tg for commit-classpath@gnu.org; Fri, 04 Jun 2004 14:50:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BWJli-0003Mt-R2 for commit-classpath@gnu.org; Fri, 04 Jun 2004 14:50:18 -0400 Received: from [213.228.0.169] (helo=postfix3-2.free.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BWJkx-00084c-RZ for commit-classpath@gnu.org; Fri, 04 Jun 2004 14:49:32 -0400 Received: from kaffe.org (cachan-3-82-66-125-112.fbx.proxad.net [82.66.125.112]) by postfix3-2.free.fr (Postfix) with ESMTP id CCB47C283 for ; Fri, 4 Jun 2004 20:49:28 +0200 (CEST) Message-ID: <40C0C438.1010204@kaffe.org> Date: Fri, 04 Jun 2004 20:49:28 +0200 From: Guilhem Lavaux User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040115 X-Accept-Language: en-us, en MIME-Version: 1.0 To: commit-classpath@gnu.org X-Enigmail-Version: 0.83.3.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: multipart/mixed; boundary="------------030404000100030605080908" Subject: java.text.RuleBasedCollator X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2004 18:50:21 -0000 This is a multi-part message in MIME format. --------------030404000100030605080908 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi, As suggested by gcj developers, I have updated the RuleBasedCollator to use ArrayList instead of Vector. The attached patch has just been commited to the CVS. Cheers, Guilhem. ChangeLog entry: 2004-06-04 Guilhem Lavaux * java/text/RuleBasedCollator.java (mergeRules): Use ArrayList instead of Vector. (subParseString): likewise. (parseString): likewise. (buildCollationVector): likewise. (getCollationKey): likewise. --------------030404000100030605080908 Content-Type: text/plain; name="text_patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="text_patch" Index: java/text/RuleBasedCollator.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/text/RuleBasedCollator.java,v retrieving revision 1.25 diff -u -r1.25 RuleBasedCollator.java --- java/text/RuleBasedCollator.java 30 May 2004 16:34:23 -0000 1.25 +++ java/text/RuleBasedCollator.java 3 Jun 2004 18:46:26 -0000 @@ -39,7 +39,7 @@ import java.util.Enumeration; import java.util.HashMap; -import java.util.Vector; +import java.util.ArrayList; /* Written using "Java Class Libraries", 2nd edition, plus online * API docs for JDK 1.2 from http://www.javasoft.com. @@ -180,7 +180,7 @@ * collation elements. It contains an instruction which specifies the new * state of the generator. The sequence of instruction should not contain * RESET (it is used by - * {@link #mergeRules(int,java.lang.String,java.util.Vector,java.util.Vector)}) + * {@link #mergeRules(int,java.lang.String,java.util.ArrayList,java.util.ArrayList)}) * as a temporary state while merging two sets of instructions. */ final static class CollationSorter @@ -304,10 +304,9 @@ * @param patch Rules to be merged into the repository. * @throws ParseException if it is impossible to find an anchor point for the new rules. */ - private void mergeRules(int offset, String starter, Vector main, Vector patch) + private void mergeRules(int offset, String starter, ArrayList main, ArrayList patch) throws ParseException { - Enumeration elements = main.elements(); int insertion_point = -1; int max_length = 0; @@ -323,11 +322,11 @@ while (j < main.size()) { - CollationSorter rule1 = (CollationSorter) patch.elementAt(i); - CollationSorter rule2 = (CollationSorter) main.elementAt(j); + CollationSorter rule1 = (CollationSorter) patch.get(i); + CollationSorter rule2 = (CollationSorter) main.get(j); if (rule1.textElement.equals(rule2.textElement)) - main.removeElementAt(j); + main.remove(j); else j++; } @@ -336,7 +335,7 @@ // Find the insertion point... O(N) for (int i = 0; i < main.size(); i++) { - CollationSorter sorter = (CollationSorter) main.elementAt(i); + CollationSorter sorter = (CollationSorter) main.get(i); int length = findPrefixLength(starter, sorter.textElement); if (length > max_length) @@ -362,24 +361,24 @@ * sequence. The rest of the subsequence must be appended * to the end of the sequence. */ - CollationSorter sorter = (CollationSorter) patch.elementAt(0); + CollationSorter sorter = (CollationSorter) patch.get(0); CollationSorter expansionPrefix = - (CollationSorter) main.elementAt(insertion_point-1); + (CollationSorter) main.get(insertion_point-1); sorter.expansionOrdering = starter.substring(max_length); // Skip the first good prefix element - main.insertElementAt(sorter, insertion_point); + main.add(insertion_point, sorter); /* * This is a new set of rules. Append to the list. */ - patch.removeElementAt(0); + patch.remove(0); insertion_point++; } // Now insert all elements of patch at the insertion point. for (int i = 0; i < patch.size(); i++) - main.insertElementAt(patch.elementAt(i), i+insertion_point); + main.add(i+insertion_point, patch.get(i)); } /** @@ -397,7 +396,7 @@ * @throws ParseException if something turned wrong during the parsing. To get details * decode the message. */ - private int subParseString(boolean stop_on_reset, Vector v, + private int subParseString(boolean stop_on_reset, ArrayList v, int base_offset, String rules) throws ParseException { @@ -506,7 +505,7 @@ * indicated by the text element. */ String subrules = rules.substring(i); - Vector sorted_rules = new Vector(); + ArrayList sorted_rules = new ArrayList(); int idx; // Parse the subrules but do not iterate through all @@ -591,10 +590,10 @@ * @throws ParseException if something turned wrong during the parsing. To get details * decode the message. */ - private Vector parseString(String rules) + private ArrayList parseString(String rules) throws ParseException { - Vector v = new Vector(); + ArrayList v = new ArrayList(); // result of the first subParseString is not absolute (may be -1 or a // positive integer). But we do not care. @@ -607,10 +606,10 @@ * This method uses the sorting instructions built by {@link #parseString} * to build collation elements which can be directly used to sort strings. * - * @param parsedElements Parsed instructions stored in a Vector. + * @param parsedElements Parsed instructions stored in a ArrayList. * @throws ParseException if the order of the instructions are not valid. */ - private void buildCollationVector(Vector parsedElements) + private void buildCollationVector(ArrayList parsedElements) throws ParseException { int primary_seq = 0; @@ -622,13 +621,13 @@ final boolean DECREASING = false; final boolean INCREASING = true; boolean secondaryType = INCREASING; - Vector v = new Vector(); + ArrayList v = new ArrayList(); // elts is completely sorted. element_loop: for (int i = 0; i < parsedElements.size(); i++) { - CollationSorter elt = (CollationSorter) parsedElements.elementAt(i); + CollationSorter elt = (CollationSorter) parsedElements.get(i); boolean ignoreChar = false; switch (elt.comparisonType) @@ -947,7 +946,7 @@ public CollationKey getCollationKey(String source) { CollationElementIterator cei = getCollationElementIterator(source); - Vector vect = new Vector(25); + ArrayList vect = new ArrayList(); int ord = cei.next(); cei.reset(); //set to start of string --------------030404000100030605080908-- From MAILER-DAEMON Fri Jun 04 16:59:22 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BWLmc-0007D5-Dp for mharc-commit-classpath@gnu.org; Fri, 04 Jun 2004 16:59:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BWLma-0007D0-S5 for commit-classpath@gnu.org; Fri, 04 Jun 2004 16:59:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BWLma-0007Cn-05 for commit-classpath@gnu.org; Fri, 04 Jun 2004 16:59:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BWLmZ-0007Ck-SY for commit-classpath@gnu.org; Fri, 04 Jun 2004 16:59:19 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BWLly-0004or-7N for commit-classpath@gnu.org; Fri, 04 Jun 2004 16:58:42 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i54Kwex68250 for ; Fri, 4 Jun 2004 16:58:41 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i54Kweq70722; Fri, 4 Jun 2004 16:58:40 -0400 Message-ID: <40C0E280.9@watson.ibm.com> Date: Fri, 04 Jun 2004 16:58:40 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------000404010300000006060203" Subject: hacking.texinfo change committed X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2004 20:59:21 -0000 This is a multi-part message in MIME format. --------------000404010300000006060203 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit This is nearly identical to the proposed patch I posted here on May 26: 2004-06-04 Steven Augart * doc/hacking.texinfo: Formatting fixes. (Utility Classes) New TeXinfo node. --------------000404010300000006060203 Content-Type: text/plain; name="hacking-2.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="hacking-2.patch" SW5kZXg6IGRvYy9oYWNraW5nLnRleGluZm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 c3Jvb3QvY2xhc3NwYXRoL2NsYXNzcGF0aC9kb2MvaGFja2luZy50ZXhpbmZvLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjI3CmRpZmYgLUkqLmNsYXNzIC11IC1yMS4yNyBoYWNraW5nLnRl eGluZm8KLS0tIGRvYy9oYWNraW5nLnRleGluZm8JMyBKdW4gMjAwNCAxNToyNToyNSAtMDAw MAkxLjI3CisrKyBkb2MvaGFja2luZy50ZXhpbmZvCTQgSnVuIDIwMDQgMjA6NTE6NDMgLTAw MDAKQEAgLTExLDcgKzExLDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBpbXBvcnRhbnQgaW5m b3JtYXRpb24geW91IHdpbGwgbmVlZCB0byBrbm93IGlmIHlvdQogYXJlIGdvaW5nIHRvIGhh Y2sgb24gdGhlIEdOVSBDbGFzc3BhdGggcHJvamVjdCBjb2RlLgogCi1Db3B5cmlnaHQgKEMp IDE5OTgsMTk5OSwyMDAwLDIwMDEsMjAwMiwyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAxOTk4LDE5OTksMjAwMCwyMDAxLDIwMDIs MjAwMywyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBAaWZub3RwbGFp bnRleHQKIEBkaXJjYXRlZ29yeSBHTlUgTGlicmFyaWVzCkBAIC04OCw2ICs4OCw3IEBACiBQ cm9ncmFtbWluZyBHb2FscwogCiAqIFBvcnRhYmlsaXR5OjogICAgICAgICAgICAgICAgIFdy aXRpbmcgUG9ydGFibGUgU29mdHdhcmUgICAgICAgICAgICAgICAgCisqIFV0aWxpdHkgQ2xh c3Nlczo6ICAgICAgICAgICAgIFJldXNpbmcgU29mdHdhcmUKICogUm9idXN0bmVzczo6ICAg ICAgICAgICAgICAgICAgV3JpdGluZyBSb2J1c3QgU29mdHdhcmUgICAgICAgICAgICAgICAK ICogSmF2YSBFZmZpY2llbmN5OjogICAgICAgICAgICAgV3JpdGluZyBFZmZpY2llbnQgSmF2 YSAgICAgICAgICAgIAogKiBOYXRpdmUgRWZmaWNpZW5jeTo6ICAgICAgICAgICBXcml0aW5n IEVmZmljaWVudCBKTkkgICAgICAgICAgCkBAIC0xNDAsMTAgKzE0MSwxMCBAQAogCiBAaXRl bWl6ZSBAYnVsbGV0CiBAaXRlbQotQGJ7TmV2ZXIgdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMg cmVmZXIgdG8gcHJvcHJpZXRhcnkgY29kZSB3aGlsZQorQHN0cm9uZ3tOZXZlciB1bmRlciBh bnkgY2lyY3Vtc3RhbmNlcyByZWZlciB0byBwcm9wcmlldGFyeSBjb2RlIHdoaWxlCiB3b3Jr aW5nIG9uIEdOVSBDbGFzc3BhdGgufSAgSXQgaXMgYmVzdCBpZiB5b3UgaGF2ZSBuZXZlciBs b29rZWQgYXQKIGFsdGVybmF0aXZlIHByb3ByaWV0YXJ5IGNvcmUgbGlicmFyeSBjb2RlIGF0 IGFsbC4gIFRvIHJlZHVjZQotdGVtcHRhdGlvbiwgaXQgd291bGQgYmUgYmVzdCBpZiB5b3Ug ZGVsZXRlZCB0aGUgQHNhbXB7c3JjLnppcH0gZmlsZQordGVtcHRhdGlvbiwgaXQgd291bGQg YmUgYmVzdCBpZiB5b3UgZGVsZXRlZCB0aGUgQGZpbGV7c3JjLnppcH0gZmlsZQogZnJvbSB5 b3VyIHByb3ByaWV0YXJ5IEpESyBkaXN0cmlidXRpb24gKG5vdGUgdGhhdCByZWNlbnQgdmVy c2lvbnMgb2YKIEdOVSBDbGFzc3BhdGggYW5kIHRoZSBjb21waWxlcnMgYW5kIGVudmlyb25t ZW50cyBidWlsZCBvbiBpdCBhcmUKIG1hdHVyZSBlbm91Z2ggdG8gbm90IG5lZWQgYW55IHBy b3ByaWV0YXJ5IGltcGxlbWVudGF0aW9uIGF0IGFsbCB3aGVuCkBAIC0xNTcsNyArMTU4LDcg QEAKIHNvbWVkYXkgaW4gY291cnQuICBQbGVhc2UgZG9uJ3QgbGV0IHRoYXQgaGFwcGVuLgog CiBAaXRlbQotQGJ7TmV2ZXIgZGVjb21waWxlIHByb3ByaWV0YXJ5IGNsYXNzIGxpYnJhcnkg aW1wbGVtZW50YXRpb25zLn0gIFdoaWxlCitAc3Ryb25ne05ldmVyIGRlY29tcGlsZSBwcm9w cmlldGFyeSBjbGFzcyBsaWJyYXJ5IGltcGxlbWVudGF0aW9ucy59ICBXaGlsZQogdGhlIHdv cmRpbmcgb2YgdGhlIGxpY2Vuc2UgaW4gU3VuJ3MgSmF2YSAyIHJlbGVhc2VzIGhhcyBjaGFu Z2VkLCBpdCBpcwogbm90IGFjY2VwdGFibGUsIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLCBm b3IgYSBwZXJzb24gd29ya2luZyBvbgogR05VIENsYXNzcGF0aCB0byBkZWNvbXBpbGUgU3Vu J3MgY2xhc3MgbGlicmFyaWVzLiAgQWxsb3dpbmcgdGhlIHVzZSBvZgpAQCAtMjU2LDcgKzI1 Nyw3IEBACiBCU0RzLgogCiBAaXRlbQotT3RoZXIgVU5JWC1saWtlIG9wZXJhdGluZyBzeXN0 ZW1zLgorT3RoZXIgVW5peC1saWtlIG9wZXJhdGluZyBzeXN0ZW1zLgogCiBAaXRlbQogUGxh dGZvcm1zIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIEphdmEgc3VwcG9ydCBhdCBhbGwuCkBA IC0zODksNyArMzkwLDcgQEAKIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMuCiAKIEBpdGVt IG00Ci1UaGUgZnJlZSBHTlUgcmVwbGFjZW1lbnQgZm9yIHRoZSBzdGFuZGFyZCBVTklYIG1h Y3JvIHByb2Nlc3Nvci4KK1RoZSBmcmVlIEdOVSByZXBsYWNlbWVudCBmb3IgdGhlIHN0YW5k YXJkIFVuaXggbWFjcm8gcHJvY2Vzc29yLgogUHJvcHJpZXRhcnkgbTQgcHJvZ3JhbXMgYXJl IGJyb2tlbiBhbmQgc28gR05VIG00IGlzIHJlcXVpcmVkIGZvcgogYXV0b2NvbmYgdG8gd29y ayB0aG91Z2gga25vd2luZyBhIGxvdCBhYm91dCBHTlUgbTQgaXMgbm90IHJlcXVpcmVkIHRv CiB3b3JrIHdpdGggYXV0b2NvbmYuCkBAIC03NjUsOCArNzY2LDggQEAKIGxvZ2ljYWxseSBi ZSBzZWVuIGFzIHBhcnQgb2YgdGhlIHNhbWUgY2hhbmdlL2NsZWFudXAgZXRjLgogCiBXaGVu IHRoZSBjaGFuZ2UgZml4ZXMgYW4gaW1wb3J0YW50IGJ1ZyBvciBhZGRzIG5pY2UgbmV3IGZ1 bmN0aW9uYWxpdHkKLXBsZWFzZSB3cml0ZSBhIHNob3J0IGVudHJ5IGZvciBpbmNsdXNpb24g aW4gdGhlIE5FV1MgZmlsZS4gIElmIGl0Ci1jaGFuZ2VzIHRoZSBWTSBpbnRlcmZhY2UgeW91 IG11c3QgbWVudGlvbiB0aGF0IGluIGJvdGggdGhlIE5FV1MgZmlsZQorcGxlYXNlIHdyaXRl IGEgc2hvcnQgZW50cnkgZm9yIGluY2x1c2lvbiBpbiB0aGUgQGZpbGV7TkVXU30gZmlsZS4g IElmIGl0CitjaGFuZ2VzIHRoZSBWTSBpbnRlcmZhY2UgeW91IG11c3QgbWVudGlvbiB0aGF0 IGluIGJvdGggdGhlIEBmaWxle05FV1N9IGZpbGUKIGFuZCB0aGUgVk0gSW50ZWdyYXRpb24g R3VpZGUuCiAKIEFsbCB0aGUgYGBydWxlcycnIGFyZSByZWFsbHkgbWVhbnQgdG8gbWFrZSBz dXJlIHRoYXQgR05VIENsYXNzcGF0aApAQCAtODg3LDEzICs4ODgsMTQgQEAKIAogQG1lbnUK ICogUG9ydGFiaWxpdHk6OiAgICAgICAgICAgICAgICAgV3JpdGluZyBQb3J0YWJsZSBTb2Z0 d2FyZSAgICAgICAgICAgICAgICAKKyogVXRpbGl0eSBDbGFzc2VzOjogICAgICAgICAgICAg UmV1c2luZyBTb2Z0d2FyZQogKiBSb2J1c3RuZXNzOjogICAgICAgICAgICAgICAgICBXcml0 aW5nIFJvYnVzdCBTb2Z0d2FyZSAgICAgICAgICAgICAgIAogKiBKYXZhIEVmZmljaWVuY3k6 OiAgICAgICAgICAgICBXcml0aW5nIEVmZmljaWVudCBKYXZhICAgICAgICAgICAgCiAqIE5h dGl2ZSBFZmZpY2llbmN5OjogICAgICAgICAgIFdyaXRpbmcgRWZmaWNpZW50IEpOSSAgICAg ICAgICAKICogU2VjdXJpdHk6OiAgICAgICAgICAgICAgICAgICAgV3JpdGluZyBTZWN1cmUg U29mdHdhcmUKIEBlbmQgbWVudQogCi1Abm9kZSBQb3J0YWJpbGl0eSwgUm9idXN0bmVzcywg UHJvZ3JhbW1pbmcgR29hbHMsIFByb2dyYW1taW5nIEdvYWxzCitAbm9kZSBQb3J0YWJpbGl0 eSwgVXRpbGl0eSBDbGFzc2VzLCBQcm9ncmFtbWluZyBHb2FscywgUHJvZ3JhbW1pbmcgR29h bHMKIEBjb21tZW50IG5vZGUtbmFtZSwgbmV4dCwgcHJldmlvdXMsIHVwCiBAc2VjdGlvbiBQ b3J0YWJpbGl0eQogCkBAIC05MTYsOSArOTE4LDMwIEBACiAKIFJpZ2h0IG5vdyB0aGUgb25s eSBzdXBwb3J0ZWQgcGxhdGZvcm0gaXMgTGludXguICBUaGlzIHdpbGwgY2hhbmdlIGFzIHRo YXQKIHZlcnNpb24gc3RhYmlsaXplcyBhbmQgd2UgYmVnaW4gdGhlIGVmZm9ydCB0byBwb3J0 IHRvIG1hbnkgb3RoZXIKLXBsYXRmb3Jtcy4KK3BsYXRmb3Jtcy4gIEppa2VzIFJWTSBydW5z IENsYXNzcGF0aCBvbiBBSVgsIGFuZCBnZW5lcmFsbHkgdGhlIEppa2VzCitSVk0gdGVhbSBm aXhlcyBDbGFzc3BhdGggdG8gd29yayBvbiB0aGF0IHBsYXRmb3JtLiAKIAotQG5vZGUgUm9i dXN0bmVzcywgSmF2YSBFZmZpY2llbmN5LCBQb3J0YWJpbGl0eSwgUHJvZ3JhbW1pbmcgR29h bHMKK0Bub2RlIFV0aWxpdHkgQ2xhc3NlcywgUm9idXN0bmVzcywgUG9ydGFiaWxpdHksIFBy b2dyYW1taW5nIEdvYWxzCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3Vz LCAgdXAKK0BzZWN0aW9uIFV0aWxpdHkgQ2xhc3NlcworCitBdCB0aGUgbW9tZW50LCB3ZSBh cmUgbm90IHZlcnkgZ29vZCBhdCByZXVzZSBvZiB0aGUgSk5JIGNvZGUuICBUaGVyZQoraGF2 ZSBiZWVuIHNvbWUgYXR0ZW1wdHMsIGNhbGxlZCBAZGZue2xpYmNsYXNzcGF0aH0sIHRvCitj cmVhdGUgZ2VuZXJhbGx5IHVzZWZ1bCB1dGlsaXR5IGNsYXNzZXMuICBUaGUgdXRpbGl0eSBj bGFzc2VzIGFyZSBpbgordGhlIGRpcmVjdG9yeSBAZmlsZXtuYXRpdmUvam5pL2NsYXNzcGF0 aH0gYW5kIHRoZXkgYXJlIG1vc3RseSBkZWNsYXJlZAoraW4gQGZpbGV7bmF0aXZlL2puaS9j bGFzc3BhdGgvamNsLmh9LiAgVGhlc2UgdXRpbGl0eSBjbGFzc2VzIGFyZQorY3VycmVudGx5 IG9ubHkgZGlzY3Vzc2VkIGluIEByZWZ7Um9idXN0bmVzc30gYW5kIGluIEByZWZ7TmF0aXZl CitFZmZpY2llbmN5fS4KKworVGhlcmUgYXJlIG1vcmUgdXRpbGl0eSBjbGFzc2VzIGF2YWls YWJsZSB0aGF0IGNvdWxkIGJlIGZhY3RvcmVkIG91dCBpZgorYSB2b2x1bnRlZXIgd2FudHMg c29tZXRoaW5nIG5pY2UgdG8gaGFjayBvbi4gIFRoZSBlcnJvciByZXBvcnRpbmcgYW5kCitl eGNlcHRpb24gdGhyb3dpbmcgZnVuY3Rpb25zIGFuZCBtYWNyb3MgaW4KK0BmaWxle25hdGl2 ZS9qbmkvZ3RrLXBlZXIvZ3RocmVhZC1qbmkuY30gbWlnaHQgYmUgZ29vZAorY2FuZGlkYXRl cyBmb3IgcmV1c2UuICBUaGVyZSBhcmUgYWxzbyBzb21lIGdlbmVyYWxseSB1c2VmdWwgdXRp bGl0eQorZnVuY3Rpb25zIGluIEBmaWxle2dudV9qYXZhX2F3dF9wZWVyX2d0a19HdGtNYWlu VGhyZWFkLmN9IHRoYXQgY291bGQKK2JlIHNwbGl0IG91dCBhbmQgcHV0IGludG8gbGliY2xh c3NwYXRoLgorCitAbm9kZSBSb2J1c3RuZXNzLCBKYXZhIEVmZmljaWVuY3ksIFV0aWxpdHkg Q2xhc3NlcywgUHJvZ3JhbW1pbmcgR29hbHMKIEBjb21tZW50IG5vZGUtbmFtZSwgbmV4dCwg cHJldmlvdXMsIHVwCiBAc2VjdGlvbiBSb2J1c3RuZXNzCiAKQEAgLTkzNiwyMiArOTU5LDIy IEBACiBkbyB0aGlzIGFmdGVyIEBlbXBoe2V2ZXJ5fSBKTkkgY2FsbC4gIEpOSSBkb2VzIG5v dCB3b3JrIHdlbGwgd2hlbiBhbgogZXhjZXB0aW9uIGhhcyBiZWVuIHJhaXNlZCwgYW5kIGNh biBoYXZlIHVucHJlZGljdGFibGUgYmVoYXZpb3IuCiAKLVRocm93IGV4Y2VwdGlvbnMgdXNp bmcgSkNMX1Rocm93RXhjZXB0aW9uLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQgaWYKK1Rocm93 IGV4Y2VwdGlvbnMgdXNpbmcgQGNvZGV7SkNMX1Rocm93RXhjZXB0aW9ufS4gIFRoaXMgZ3Vh cmFudGVlcyB0aGF0IGlmCiBzb21ldGhpbmcgaXMgc2VyaW91c2x5IHdyb25nLCB0aGUgZXhj ZXB0aW9uIHRleHQgd2lsbCBhdCBsZWFzdCBnZXQgb3V0CiBzb21ld2hlcmUgKGV2ZW4gaWYg aXQgaXMgc3RkZXJyKS4KIAotQ2hlY2sgZm9yIG51bGwgdmFsdWVzIG9mIGpjbGFzc2VzIGJl Zm9yZSB5b3Ugc2VuZCB0aGVtIHRvIEpOSSBmdW5jdGlvbnMuCitDaGVjayBmb3IgbnVsbCB2 YWx1ZXMgb2YgQGNvZGV7amNsYXNzfWVzIGJlZm9yZSB5b3Ugc2VuZCB0aGVtIHRvIEpOSSBm dW5jdGlvbnMuCiBKTkkgZG9lcyBub3QgYmVoYXZlIG5pY2VseSB3aGVuIHlvdSBwYXNzIGEg bnVsbCBjbGFzcyB0byBpdDogaXQKIHRlcm1pbmF0ZXMgSmF2YSB3aXRoIGEgIkpOSSBQYW5p Yy4iCiAKLUluIGdlbmVyYWwsIHRyeSB0byB1c2UgZnVuY3Rpb25zIGluIG5hdGl2ZS9qbmkv Y2xhc3NwYXRoL2pjbC5oLiAgVGhleQorSW4gZ2VuZXJhbCwgdHJ5IHRvIHVzZSBmdW5jdGlv bnMgaW4gQGZpbGV7bmF0aXZlL2puaS9jbGFzc3BhdGgvamNsLmh9LiAgVGhleQogY2hlY2sg ZXhjZXB0aW9ucyBhbmQgcmV0dXJuIHZhbHVlcyBhbmQgdGhyb3cgYXBwcm9wcmlhdGUgZXhj ZXB0aW9ucy4KIAogQG5vZGUgSmF2YSBFZmZpY2llbmN5LCBOYXRpdmUgRWZmaWNpZW5jeSwg Um9idXN0bmVzcywgUHJvZ3JhbW1pbmcgR29hbHMKIEBjb21tZW50IG5vZGUtbmFtZSwgbmV4 dCwgcHJldmlvdXMsIHVwCiBAc2VjdGlvbiBKYXZhIEVmZmljaWVuY3kKIAotRm9yIG1ldGhv ZHMgd2hpY2ggZXhwbGljaXRseSB0aHJvdyBhIE51bGxQb2ludGVyRXhjZXB0aW9uIHdoZW4g YW4KK0ZvciBtZXRob2RzIHdoaWNoIGV4cGxpY2l0bHkgdGhyb3cgYSBAY29kZXtOdWxsUG9p bnRlckV4Y2VwdGlvbn0gd2hlbiBhbgogYXJndW1lbnQgaXMgcGFzc2VkIHdoaWNoIGlzIG51 bGwsIHBlciBhIFN1biBzcGVjaWZpY2F0aW9uLCBkbyBub3Qgd3JpdGUKIGNvZGUgbGlrZToK IApAQCAtOTk3LDEwICsxMDIwLDEwIEBACiBsaWtlIG1ldGhvZCBjYWxscywgZmllbGRzLCBm aW5kaW5nIGNsYXNzZXMsIGV0Yy4gIEdlbmVyYWxseSB5b3Ugc2hvdWxkCiBjYWNoZSB0aGlu Z3MgbGlrZSB0aGF0IGluIHN0YXRpYyBDIHZhcmlhYmxlcyBpZiB5b3UncmUgZ29pbmcgdG8g dXNlIHRoZW0KIG92ZXIgYW5kIG92ZXIgYWdhaW4uICBHZXRNZXRob2RJRCgpLCBHZXRGaWVs ZElEKCksIGFuZCBGaW5kQ2xhc3MoKSBhcmUKLSpzbG93Ki4gIENsYXNzcGF0aCBwcm92aWRl cyB1dGlsaXR5IGxpYnJhcmllcyBmb3IgY2FjaGluZyBtZXRob2RJRHMKLWFuZCBmaWVsZElE cyBpbiBuYXRpdmUvam5pL2NsYXNzcGF0aC9qbmlsaW5rLmguICBPdGhlciBuYXRpdmUgZGF0 YSBjYW4KK0BlbXBoe3Nsb3d9LiAgQ2xhc3NwYXRoIHByb3ZpZGVzIHV0aWxpdHkgbGlicmFy aWVzIGZvciBjYWNoaW5nIG1ldGhvZElEcworYW5kIGZpZWxkSURzIGluIEBmaWxle25hdGl2 ZS9qbmkvY2xhc3NwYXRoL2puaWxpbmsuaH0uICBPdGhlciBuYXRpdmUgZGF0YSBjYW4KIGJl IGNhY2hlZCBiZXR3ZWVuIG1ldGhvZCBjYWxscyB1c2luZyBmdW5jdGlvbnMgZm91bmQgaW4K LW5hdGl2ZS9qbmkvY2xhc3NwYXRoL25hdGl2ZV9zdGF0ZS5oLgorQGZpbGV7bmF0aXZlL2pu aS9jbGFzc3BhdGgvbmF0aXZlX3N0YXRlLmh9LgogCiBIZXJlIGFyZSBhIGZldyB0aXBzIG9u IHdyaXRpbmcgbmF0aXZlIGNvZGUgZWZmaWNpZW50bHk6CiAKQEAgLTEwMTIsMTMgKzEwMzUs MTUgQEAKIG1ldGhvZHMgZGlyZWN0bHkgZnJvbSB5b3VyIG5hdGl2ZSBjb2RlIGFuZCBub3Qg aW5jdXIgdGhlIG92ZXJoZWFkIG9mIGEKIG1ldGhvZCBjYWxsIGZyb20gSmF2YSB0byBDLgog Ci1DYWNoZSBtZXRob2RJRHMgYW5kIGZpZWxkSURzIHdoZXJldmVyIHlvdSBjYW4uICBTdHJp bmcgbG9va3VwcyBhcmUKLWV4cGVuc2l2ZS4gIFRoZSBiZXN0IHdheSB0byBkbyB0aGlzIGlz IHRvIHVzZSB0aGUgbmF0aXZlL2puaS9jbGFzc3BhdGgvam5pbGluay5oCi1saWJyYXJ5LiAg SXQgd2lsbCBlbnN1cmUgdGhhdCBqbWV0aG9kSURzIGFyZSBhbHdheXMgdmFsaWQsIGV2ZW4g aWYgdGhlCitDYWNoZSBAY29kZXtqbWV0aG9kSUR9cyBhbmQgQGNvZGV7amZpZWxkSUR9cyB3 aGVyZXZlciB5b3UgY2FuLiAgU3RyaW5nCitsb29rdXBzIGFyZSAKK2V4cGVuc2l2ZS4gIFRo ZSBiZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIHVzZSB0aGUgCitAZmlsZXtuYXRpdmUvam5p L2NsYXNzcGF0aC9qbmlsaW5rLmh9CitsaWJyYXJ5LiAgSXQgd2lsbCBlbnN1cmUgdGhhdCBA Y29kZXtqbWV0aG9kSUR9cyBhcmUgYWx3YXlzIHZhbGlkLCBldmVuIGlmIHRoZQogY2xhc3Mg aXMgdW5sb2FkZWQgYXQgc29tZSBwb2ludC4gIEluIDEuMSwgam5pbGluayBzaW1wbHkgY2Fj aGVzIGEKLU5ld0dsb2JhbFJlZigpIHRvIHRoZSBtZXRob2QncyB1bmRlcmx5aW5nIGNsYXNz OyBob3dldmVyLCB3aGVuIDEuMiBjb21lcworQGNvZGV7TmV3R2xvYmFsUmVmKCl9IHRvIHRo ZSBtZXRob2QncyB1bmRlcmx5aW5nIGNsYXNzOyBob3dldmVyLCB3aGVuIDEuMiBjb21lcwog YWxvbmcsIGl0IHdpbGwgdXNlIGEgd2VhayByZWZlcmVuY2UgdG8gYWxsb3cgdGhlIGNsYXNz IHRvIGJlIHVubG9hZGVkCi1hbmQgdGhlbiByZS1yZXNvbHZlIHRoZSBqbWV0aG9kSUQgdGhl IG5leHQgdGltZSBpdCBpcyB1c2VkLgorYW5kIHRoZW4gcmUtcmVzb2x2ZSB0aGUgQGNvZGV7 am1ldGhvZElEfSB0aGUgbmV4dCB0aW1lIGl0IGlzIHVzZWQuCiAKIENhY2hlIGNsYXNzZXMg dGhhdCB5b3UgbmVlZCB0byBhY2Nlc3Mgb2Z0ZW4uICBqbmlsaW5rIHdpbGwgaGVscCB3aXRo CiB0aGlzIGFzIHdlbGwuICBUaGUgaXNzdWUgaGVyZSBpcyB0aGUgc2FtZSBhcyB0aGUgbWV0 aG9kSUQgYW5kIGZpZWxkSUQKQEAgLTEyNTAsMTAgKzEyNzUsMTAgQEAKIAogQGl0ZW0gZ251 L2phdmEKIEludGVybmFsIGNsYXNzZXMgKHJvdWdobHkgYW5hbG9nb3VzIHRvIFN1bidzIHN1 bi4qIGNsYXNzZXMpIHNob3VsZCBnbwotdW5kZXIgdGhlIGdudS9qYXZhIGRpcmVjdG9yeS4g IENsYXNzZXMgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgcHVibGljCit1bmRlciB0aGUgQGZp bGV7Z251L2phdmF9IGRpcmVjdG9yeS4gIENsYXNzZXMgcmVsYXRlZCB0byBhIHBhcnRpY3Vs YXIgcHVibGljCiBKYXZhIHBhY2thZ2Ugc2hvdWxkIGdvIGluIGEgZGlyZWN0b3J5IG5hbWVk IGxpa2UgdGhhdCBwYWNrYWdlLiAgRm9yCiBleGFtcGxlLCBjbGFzc2VzIHJlbGF0ZWQgdG8g amF2YS51dGlsLnppcCBzaG91bGQgZ28gdW5kZXIgYSBkaXJlY3RvcnkKLWdudS9qYXZhL3V0 aWwvemlwLiAgU3ViLXBhY2thZ2VzIHVuZGVyIHRoZSBtYWluIHBhY2thZ2UgbmFtZSBhcmUK K0BmaWxle2dudS9qYXZhL3V0aWwvemlwfS4gIFN1Yi1wYWNrYWdlcyB1bmRlciB0aGUgbWFp biBwYWNrYWdlIG5hbWUgYXJlCiBhbGxvd2VkLiAgRm9yIGNsYXNzZXMgc3Bhbm5pbmcgbXVs dGlwbGUgcHVibGljIEphdmEgcGFja2FnZXMsIHBpY2sgYW4KIGFwcHJvcHJpYXRlIG5hbWUg YW5kIHNlZSB3aGF0IGV2ZXJ5Ym9keSBlbHNlIHRoaW5rcy4KIApAQCAtMTI2MSw3ICsxMjg2 LDcgQEAKIFRoaXMgZGlyZWN0b3J5IGhvbGRzIG5hdGl2ZSBjb2RlIG5lZWRlZCBieSB0aGUg cHVibGljIEphdmEgcGFja2FnZXMuCiBFYWNoIHBhY2thZ2UgaGFzIGl0cyBvd24gc3ViZGly ZWN0b3J5LCB3aGljaCBpcyB0aGUgYGBmbGF0dGVuZWQnJyBuYW1lCiBvZiB0aGUgcGFja2Fn ZS4gIEZvciBleGFtcGxlLCBuYXRpdmUgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBmb3IKLWph dmEudXRpbC56aXAgc2hvdWxkIGdvIGluIG5hdGl2ZS9jbGFzc3BhdGgvamF2YS11dGlsLiAg Q2xhc3NwYXRoCitqYXZhLnV0aWwuemlwIHNob3VsZCBnbyBpbiBAZmlsZXtuYXRpdmUvY2xh c3NwYXRoL2phdmEtdXRpbH0uICBDbGFzc3BhdGgKIGFjdHVhbGx5IGluY2x1ZGVzIGFuIGFs bCBKYXZhIHZlcnNpb24gb2YgdGhlIHppcCBjbGFzc2VzLCBzbyBubyBuYXRpdmUKIGNvZGUg aXMgcmVxdWlyZWQuCiAKQEAgLTEyODYsNyArMTMxMSw3IEBACiBUaGUgbWFpbiBuYXRpdmUg bWV0aG9kIGltcGxlbWVudGF0aW9uIGZvciBhIGdpdmVuIG1ldGhvZCBpbiBjbGFzcyBzaG91 bGQKIGdvIGluIGEgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGNsYXNzIHdpdGgg YSBgYC5jJycgZXh0ZW5zaW9uLgogRm9yIGV4YW1wbGUsIHRoZSBKTkkgaW1wbGVtZW50YXRp b24gb2YgdGhlIG5hdGl2ZSBtZXRob2RzIGluCi1qYXZhLm5ldC5JbmV0QWRkcmVzcyB3b3Vs ZCBnbyBpbiBuYXRpdmUvam5pL2phdmEtbmV0L0luZXRBZGRyZXNzLmMuCitqYXZhLm5ldC5J bmV0QWRkcmVzcyB3b3VsZCBnbyBpbiBAZmlsZXtuYXRpdmUvam5pL2phdmEtbmV0L0luZXRB ZGRyZXNzLmN9LgogYGBJbnRlcm5hbCcnIG5hdGl2ZSBmdW5jdGlvbnMgY2FsbGVkIGZyb20g dGhlIG1haW4gbmF0aXZlIG1ldGhvZCBjYW4KIHJlc2lkZSBpbiBmaWxlcyBvZiBhbnkgbmFt ZS4KIEBlbmQgaXRlbWl6ZQpAQCAtMTQ4Myw3ICsxNTA4LDcgQEAKIGZvciBsb2NhbGUgc3Bl Y2lmaWMgY29uZmlndXJhdGlvbiBpbiBHTlUgQ2xhc3NwYXRoLiAgUGxlYXNlIHJlZmVyIHRv IHRoZSAKIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjbGFzc2VzIG1lbnRpb25lZCBmb3IgZGV0 YWlscyBvbiBob3cgdGhlc2UgdmFsdWVzIAogYXJlIHVzZWQuICBZb3UgbWF5IGFsc28gd2lz aCB0byBsb29rIGF0IHRoZSBzb3VyY2UgZmlsZSBmb3IgCi1AY29kZXtnbnUvamF2YS9sb2Nh bGUvTG9jYWxlSW5mb3JtYXRpb25fZW59IGFzIGFuIGV4YW1wbGUuCitAZmlsZXtnbnUvamF2 YS9sb2NhbGUvTG9jYWxlSW5mb3JtYXRpb25fZW59IGFzIGFuIGV4YW1wbGUuCiAKIEBub2Rl IFN0cmluZyBDb2xsYXRpb24sIEJyZWFrIEl0ZXJhdGlvbiwgTG9jYWxpemF0aW9uLCBMb2Nh bGl6YXRpb24KIEBjb21tZW50IG5vZGUtbmFtZSwgbmV4dCwgcHJldmlvdXMsIHVwCg== --------------000404010300000006060203-- From MAILER-DAEMON Fri Jun 04 17:18:56 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BWM5Y-00046H-AF for mharc-commit-classpath@gnu.org; Fri, 04 Jun 2004 17:18:56 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BWM5W-00046B-Lf for commit-classpath@gnu.org; Fri, 04 Jun 2004 17:18:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BWM5U-00045p-Uw for commit-classpath@gnu.org; Fri, 04 Jun 2004 17:18:53 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BWM5U-00045a-RG for commit-classpath@gnu.org; Fri, 04 Jun 2004 17:18:52 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BWM4h-0008Is-Ty for commit-classpath@gnu.org; Fri, 04 Jun 2004 17:18:04 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i54LI3x58272 for ; Fri, 4 Jun 2004 17:18:03 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i54LI2M85852; Fri, 4 Jun 2004 17:18:02 -0400 Message-ID: <40C0E70A.7040301@watson.ibm.com> Date: Fri, 04 Jun 2004 17:18:02 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------010005020708030008090307" Subject: regexp localization change committed X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2004 21:18:54 -0000 This is a multi-part message in MIME format. --------------010005020708030008090307 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------010005020708030008090307 Content-Type: text/plain; name="regexp-localization-2.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="regexp-localization-2.patch" Q29tbWl0dGVkICh3ZSBoYXZlIGJlY29tZSB0aGUgdXBzdHJlYW0gcHJvdmlkZXIsIHNvIHRo ZSBwcmV2aW91cyBvYmplY3Rpb24Kbm8gbG9uZ2VyIGFwcGxpZXMpOgoKMjAwNC0wNi0wNCAg U3RldmVuIEF1Z2FydCAgPGF1Z2FydEB3YXRzb24uaWJtLmNvbT4KCgkqIHJlc291cmNlL2du dS9yZWdleHAvTWVzc2FnZXNCdW5kbGUucHJvcGVydGllcywgCgkgIHJlc291cmNlL2dudS9y ZWdleHAvTWVzc2FnZXNCdW5kbGVfZnIucHJvcGVydGllczoKCUNvcnJlY3RlZCBhcG9zdHJv cGhlcy4KCVJlcGxhY2VkICJleHBlY3RlZCIgd2l0aCAidW5leHBlY3RlZCIuCgkKCSogcmVz b3VyY2UvZ251L3JlZ2V4cC9NZXNzYWdlc0J1bmRsZV9pdC5wcm9wZXJ0aWVzOiBOZXcgZmls ZS4KCi0tLSAvZGV2L251bGwJMjAwMy0wMS0zMCAxMDoyNDozNy4wMDAwMDAwMDAgKzAwMDAK KysrIHJlc291cmNlL2dudS9yZWdleHAvTWVzc2FnZXNCdW5kbGVfaXQucHJvcGVydGllcwky MDA0LTA0LTA4IDEzOjE1OjI1LjAwMDAwMDAwMCArMDAwMApAQCAtMCwwICsxLDMxIEBACisj IExvY2FsaXplZCBlcnJvciBtZXNzYWdlcyBmb3IgZ251LnJlZ2V4cCwgaW4gSXRhbGlhbi4K KyMgJElkJAorIyBNZXNzYWdnaSBpdGFsaWFuaSBwZXIgZ251LnJlZ2V4cC4KKyMKKyMgQXR0 ZW56aW9uZTogUXVlc3RhIHRyYWR1emlvbmUgZnUgc2NyaXR0byBkYSB1biBpdGFsby1hbWVy aWNhbm8uCisjCVBlciBmYXZvcmUgY29ycmVnZ2V0ZSBsJ2l0YWxpYW5vIGJlc3RlbW1pYXRv IGUgbWFuZGF0ZSBpIHBhdGNoCisjCWFsIGxpc3RvIDxjbGFzc3BhdGggYXQgZ251IGRvdCBv cmc+LgorIworIyBAYXV0aG9yIFN0ZXZlbiBBdWdhcnQgPHN0ZXZlIGF0IHdhdHNvbiBkb3Qg aWJtIGRvdCBjb20+LCA8c3RldmUgYXQgYXVnYXJ0IGRvdCBjb20+CisKKyMgUHJlZml4IGZv ciBSRUV4Y2VwdGlvbiBtZXNzYWdlcworZXJyb3IucHJlZml4PUFsIGluZGljZSB7MH0gbmVs IG1vZGVsbG8gZGVsbCcnZXNwcmVzc2lvbmUgcmVndWxhcmU6CisKKyMgUkVFeGNlcHRpb24g KHBhcnNlIGVycm9yKSBtZXNzYWdlcworcmVwZWF0LmFzc2VydGlvbj1sJydlbGVtZW50byBy aXBldHV0byBoYSBsYXJnaGV6emEgemVybworcmVwZWF0LmNoYWluZWQ9cHJvdmEgZGkgcmlw ZXRlcmUgdW4gZWxlbWVudG8gZ2ngIHJpcGV0dXRvCityZXBlYXQubm8udG9rZW49cXVhbnRp ZmljYXRvcmUgKD8qK3t9KSBzZW56YSBlbGVtZW50byBwcmVjZWRlbnRlCityZXBlYXQuZW1w dHkudG9rZW49bCcnZWxlbWVudG8gcmlwZXR1dG8gcHXyIGVzc2VyZSB2dW90bwordW5tYXRj aGVkLmJyYWNlPXBhcmVudGVzaSBxdWFkcmEgc2VuemEgY29ycmlzcG9uZGVudGUKK3VubWF0 Y2hlZC5icmFja2V0PWdyYWZmYSBzZW56YSBjb3JyaXNwb25kZW50ZQordW5tYXRjaGVkLnBh cmVuPXBhcmVudGVzaSBzZW56YSBjb3JyaXNwb25kZW50ZQoraW50ZXJ2YWwubm8uZW5kPWxh IGZpbmUgZCcnaW50ZXJ2YWxsbyDoIGltcHJldmlzdGEgCitjbGFzcy5uby5lbmQ9bGEgZmlu ZSBkZWxsYSBjbGFzc2UgZGkgY2FyYXR0ZXJpIOggaW1wcmV2aXN0YQorc3ViZXhwci5uby5l bmQ9bGEgZmluZSBkZWwgc3ViLWVzcHJlc3Npb25lIOggaW1wcmV2aXN0YQoraW50ZXJ2YWwu b3JkZXI9aWwgdmFsb3JlIG1pbmltbyBkJydpbnRlcnZhbGxvIOggcGn6IGdyYW5kZSBkZWwg c3VvIHZhbG9yZSBtYXNzaW1vCitpbnRlcnZhbC5lcnJvcj1sJydpbnRlcnZhbGxvIOggdnVv dG8gbyBjb250aWVuZSBjYXJhdHRlcmkgaW1wZXJtZXNzaWJpbGkKKyMgIE5vbiBzbyBjb21l IHNpIGRpY2UgImJhY2tzbGFzaCIgaW4gaXRhbGlhbm8uCitlbmRzLndpdGguYmFja3NsYXNo PWlsIG1vZGVsbG8gZmluaXNjZSBjb24gdW4gYmFja3NsYXNoIChpbCBjYXJhdHRlcmUgIlwi KQorCisjIFJFU3ludGF4IG1lc3NhZ2UKK3N5bnRheC5maW5hbD1MYSBzaW50YXNzaSDoIGRp Y2hpYXJhdGEgImZpbmFsIiAoZmluYWxlKSBlIG5vbiBzaSBwdfIgbW9kaWZpY2FybGEKSW5k ZXg6IHJlc291cmNlL2dudS9yZWdleHAvTWVzc2FnZXNCdW5kbGUucHJvcGVydGllcwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9jbGFzc3BhdGgvY2xhc3NwYXRoL3Jlc291 cmNlL2dudS9yZWdleHAvTWVzc2FnZXNCdW5kbGUucHJvcGVydGllcyx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4xCmRpZmYgLUkqLmNsYXNzIC11IC1yMS4xIE1lc3NhZ2VzQnVuZGxlLnBy b3BlcnRpZXMKLS0tIHJlc291cmNlL2dudS9yZWdleHAvTWVzc2FnZXNCdW5kbGUucHJvcGVy dGllcwk3IE1hciAyMDA0IDIzOjU4OjU0IC0wMDAwCTEuMQorKysgcmVzb3VyY2UvZ251L3Jl Z2V4cC9NZXNzYWdlc0J1bmRsZS5wcm9wZXJ0aWVzCTQgSnVuIDIwMDQgMjE6MDc6NDkgLTAw MDAKQEAgLTExLDExICsxMSwxMSBAQAogdW5tYXRjaGVkLmJyYWNlPXVubWF0Y2hlZCBicmFj ZQogdW5tYXRjaGVkLmJyYWNrZXQ9dW5tYXRjaGVkIGJyYWNrZXQKIHVubWF0Y2hlZC5wYXJl bj11bm1hdGNoZWQgcGFyZW50aGVzaXMKLWludGVydmFsLm5vLmVuZD1leHBlY3RlZCBlbmQg b2YgaW50ZXJ2YWwKLWNsYXNzLm5vLmVuZD1leHBlY3RlZCBlbmQgb2YgY2hhcmFjdGVyIGNs YXNzCi1zdWJleHByLm5vLmVuZD1leHBlY3RlZCBlbmQgb2Ygc3ViZXhwcmVzc2lvbgotaW50 ZXJ2YWwub3JkZXI9aW50ZXJ2YWwgbWluaW11bSBpcyBncmVhdGVyIHRoYW4gbWF4aW11bQot aW50ZXJ2YWwuZXJyb3I9aW50ZXJ2YWwgaXMgZW1wdHkgb3IgY29udGFpbnMgaWxsZWdhbCBj aGFyYWN0ZXJzCitpbnRlcnZhbC5uby5lbmQ9dW5leHBlY3RlZCBlbmQgb2YgaW50ZXJ2YWwK K2NsYXNzLm5vLmVuZD11bmV4cGVjdGVkIGVuZCBvZiBjaGFyYWN0ZXIgY2xhc3MKK3N1YmV4 cHIubm8uZW5kPXVuZXhwZWN0ZWQgZW5kIG9mIHN1YmV4cHJlc3Npb24KK2ludGVydmFsLm9y ZGVyPWFuIGludGVydmFsJydzIG1pbmltdW0gaXMgZ3JlYXRlciB0aGFuIGl0cyBtYXhpbXVt CitpbnRlcnZhbC5lcnJvcj1hbiBpbnRlcnZhbCBpcyBlbXB0eSAqIG9yIGNvbnRhaW5zIGls bGVnYWwgY2hhcmFjdGVycwogZW5kcy53aXRoLmJhY2tzbGFzaD1iYWNrc2xhc2ggYXQgZW5k IG9mIHBhdHRlcm4KIAogIyBSRVN5bnRheCBtZXNzYWdlCkluZGV4OiByZXNvdXJjZS9nbnUv cmVnZXhwL01lc3NhZ2VzQnVuZGxlX2ZyLnByb3BlcnRpZXMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2c3Jvb3QvY2xhc3NwYXRoL2NsYXNzcGF0aC9yZXNvdXJjZS9nbnUvcmVnZXhw L01lc3NhZ2VzQnVuZGxlX2ZyLnByb3BlcnRpZXMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MQpkaWZmIC1JKi5jbGFzcyAtdSAtcjEuMSBNZXNzYWdlc0J1bmRsZV9mci5wcm9wZXJ0aWVz Ci0tLSByZXNvdXJjZS9nbnUvcmVnZXhwL01lc3NhZ2VzQnVuZGxlX2ZyLnByb3BlcnRpZXMJ NyBNYXIgMjAwNCAyMzo1ODo1NCAtMDAwMAkxLjEKKysrIHJlc291cmNlL2dudS9yZWdleHAv TWVzc2FnZXNCdW5kbGVfZnIucHJvcGVydGllcwk0IEp1biAyMDA0IDIxOjA3OjQ5IC0wMDAw CkBAIC00LDE4ICs0LDE4IEBACiBlcnJvci5wcmVmaXg9QSBsJydpbmRleCB7MH0gZGFucyBs ZSBtb2TobGUgZCcnZXhwcmVzc2lvbiBy6Wd1bGnocmU6CiAKICMgUkVFeGNlcHRpb24gKHBh cnNlIGVycm9yKSBtZXNzYWdlcwotcmVwZWF0LmFzc2VydGlvbj1sJ+ls6W1lbnQgculw6XTp IGVzdCBkZSBsYXJnZXVyIHrpcm8KLXJlcGVhdC5jaGFpbmVkPXRlbnRhdGl2ZSBkZSBy6XDp dGl0aW9uIGQndW4g6WzpbWVudCBk6WrgIHLpcOl06QorcmVwZWF0LmFzc2VydGlvbj1sJyfp bOltZW50IHLpcOl06SBlc3QgZGUgbGFyZ2V1ciB66XJvCityZXBlYXQuY2hhaW5lZD10ZW50 YXRpdmUgZGUgculw6XRpdGlvbiBkJyd1biDpbOltZW50IGTpauAgculw6XTpCiByZXBlYXQu bm8udG9rZW49cXVhbnRpZmlldXIgKD8qK3t9KSBzYW5zIOls6W1lbnQgcHLpY+lkZW50Ci1y ZXBlYXQuZW1wdHkudG9rZW49bCfpbOltZW50IHLpcOl06SBwZXV0IOp0cmUgdmlkZQorcmVw ZWF0LmVtcHR5LnRva2VuPWwnJ+ls6W1lbnQgculw6XTpIHBldXQg6nRyZSB2aWRlCiB1bm1h dGNoZWQuYnJhY2U9YWNjb2xhZGUgaW7pZ2Fs6WUKIHVubWF0Y2hlZC5icmFja2V0PWNyb2No ZXQgaW7pZ2Fs6QogdW5tYXRjaGVkLnBhcmVuPXBhcmVudGjoc2UgaW7pZ2Fs6WUKLWludGVy dmFsLm5vLmVuZD1maW4gZCdpbnRlcnZhbCBhdHRlbmR1ZQotY2xhc3Mubm8uZW5kPWZpbiBk ZSBjbGFzc2UgZGUgY2FyYWN06HJlcyBhdHRlbmR1ZQotc3ViZXhwci5uby5lbmQ9ZmluIGRl IHNvdXMtZXhwcmVzc2lvbiBhdHRlbmR1ZQotaW50ZXJ2YWwub3JkZXI9bCdpbnRlcnZhbCBt aW5pbXVtIGVzdCBzdXDpcmlldXIg4CBsJ2ludGVydmFsIG1heGltdW0KLWludGVydmFsLmVy cm9yPWwnaW50ZXJ2YWwgZXN0IHZpZGUgb3UgY29udGllbnQgZGVzIGNhcmFjdOhyZXMgaWxs 6WdhdXgKK2ludGVydmFsLm5vLmVuZD1maW4gZCcnaW50ZXJ2YWwgbm9uIGF0dGVuZHVlCitj bGFzcy5uby5lbmQ9ZmluIGRlIGNsYXNzZSBkZSBjYXJhY3TocmVzIG5vbiBhdHRlbmR1ZQor c3ViZXhwci5uby5lbmQ9ZmluIGRlIHNvdXMtZXhwcmVzc2lvbiBub24gYXR0ZW5kdWUKK2lu dGVydmFsLm9yZGVyPWwnJ2ludGVydmFsIG1pbmltdW0gZXN0IHN1cOlyaWV1ciDgIGwnJ2lu dGVydmFsIG1heGltdW0KK2ludGVydmFsLmVycm9yPWwnJ2ludGVydmFsIGVzdCB2aWRlIG91 IGNvbnRpZW50IGRlcyBjYXJhY3TocmVzIGlsbOlnYXV4CiBlbmRzLndpdGguYmFja3NsYXNo PWFudGlzbGFzaCDgIGxhIGZpbiBkdSBtb2TobGUKIAogIyBSRVN5bnRheCBtZXNzYWdlCg== --------------010005020708030008090307-- From MAILER-DAEMON Sat Jun 05 00:11:29 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BWSWn-0007dG-3b for mharc-commit-classpath@gnu.org; Sat, 05 Jun 2004 00:11:29 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BWSWl-0007cl-I4 for commit-classpath@gnu.org; Sat, 05 Jun 2004 00:11:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BWSWj-0007cZ-VT for commit-classpath@gnu.org; Sat, 05 Jun 2004 00:11:27 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BWSWj-0007cW-T5 for commit-classpath@gnu.org; Sat, 05 Jun 2004 00:11:25 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BWSVv-0007em-1G for commit-classpath@gnu.org; Sat, 05 Jun 2004 00:10:35 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 237C76242E for ; Sat, 5 Jun 2004 04:10:34 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 58924-05 for ; Sat, 5 Jun 2004 04:10:33 +0000 (GMT) Received: from reali.dnsalias.net (212-41-95-160.adsl.solnet.ch [212.41.95.160]) by mail01.solnet.ch (Postfix) with ESMTP id 050736242A for ; Sat, 5 Jun 2004 04:10:33 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id D1A78CB9DF; Sat, 5 Jun 2004 06:07:28 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040605040728.D1A78CB9DF@reali.dnsalias.net> Date: Sat, 5 Jun 2004 06:07:28 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040605 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 Jun 2004 04:11:27 -0000 From MAILER-DAEMON Sat Jun 05 23:45:46 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BWobS-00079n-Gr for mharc-commit-classpath@gnu.org; Sat, 05 Jun 2004 23:45:46 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BWobQ-000779-7A for commit-classpath@gnu.org; Sat, 05 Jun 2004 23:45:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BWobP-000768-0d for commit-classpath@gnu.org; Sat, 05 Jun 2004 23:45:43 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BWobO-00075d-Mt for commit-classpath@gnu.org; Sat, 05 Jun 2004 23:45:42 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BWoat-0000xL-Ji for commit-classpath@gnu.org; Sat, 05 Jun 2004 23:45:11 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i563jAx78042 for ; Sat, 5 Jun 2004 23:45:10 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i563jAl74472 for ; Sat, 5 Jun 2004 23:45:10 -0400 Received: from watson.ibm.com (sig-9-65-237-71.mts.ibm.com [9.65.237.71]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i563j9C74470; Sat, 5 Jun 2004 23:45:09 -0400 Message-ID: <40C29340.6070905@watson.ibm.com> Date: Sat, 05 Jun 2004 23:45:04 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------080906050208000100040601" Subject: vmintegration.texinfo: Changes committed X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Jun 2004 03:45:44 -0000 This is a multi-part message in MIME format. --------------080906050208000100040601 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit I am committing this documentation update. --------------080906050208000100040601 Content-Type: text/plain; name="vmintegration.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="vmintegration.patch" 2004-06-05 Steven Augart * doc/vmintegration.texinfo: Added formatting. Fixed some typos. (Introduction): Added Jikes RVM and JamVM to the VM list. Minor updates to other VM descriptions. Index: doc/vmintegration.texinfo =================================================================== RCS file: /cvsroot/classpath/classpath/doc/vmintegration.texinfo,v retrieving revision 1.9 diff -I*.class -u -r1.9 vmintegration.texinfo --- doc/vmintegration.texinfo 29 Mar 2004 20:39:53 -0000 1.9 +++ doc/vmintegration.texinfo 6 Jun 2004 03:42:03 -0000 @@ -90,7 +90,8 @@ @item @uref{http://www.intel.com/research/mrl/orp/,Intel's Open Runtime Platform} Intel surprised us not long ago with the release of this rather advanced VM that uses GNU Classpath for a set of class libraries and works on -Linux and Windows 2000. +Linux and Windows 2000. As of June, 2004, it does not appear that ORP +is under active development. @item @uref{http://www.sablevm.org/,SableVM} SableVM is a robust, extremely portable, efficient, and @@ -127,11 +128,27 @@ GCJ is part of the GNU Compiler Collection (@uref{http://gcc.gnu.org/,GCC}). On march 6 2000 the libgcj and GNU Classpath projects were officially merged and there is active work on merging all the classes between the projects. +Licensed under GPL+exception, just as GNU Classpath is. @item @uref{http://kissme.sourceforge.net/,Kissme} This is a free Java Virtual Machine that is being developed on GNU/Linux -and can run console java applications. kissme also provides support for -orthogonally persistent java. +and can run console Java applications. Kissme also provides support for +orthogonally persistent Java. +@c I don't know what ``orthogonally persistent Java'' is, and I bet +@c there are other people don't know either. -- Steve Augart, 4 June 2004 + +@item @uref{http://jamvm.sourceforge.net/,JamVM} +A simple, small bytecode interpreter that works out-of-the-box with +pure GNU Classpath; it is emerging as the preferred platform for +quickly testing a new build of GNU Classpath. Licensed under the GPL. + +@item @uref{http://oss.software.ibm.com/jikesrvm,Jikes RVM} +A free runtime environment for Java, written in Java. Works +out-of-the-box with pure GNU Classpath. Features an optimizing JIT. +Runs on the x86 and PowerPC architectures, on the AIX, Linux, and Mac +OS/X operating systems. Licensed under the CPL (Common Public +License). Extensively documented. Actively developed as of June, +2004. @end itemize @@ -151,7 +168,7 @@ we'll have a note in here at that time. The current initialization order is currently documented in the -Runtime.java source file. +@file{Runtime.java} source file. @node Classpath Hooks, VM Hooks, Initialization, Top @comment node-name, next, previous, up @@ -173,23 +190,23 @@ from Classpath call out to to get certain VM-specific dirty work done: @itemize @bullet -@item java.lang.VMObject -is the bridge between the low level Object facilities such -as makeing a clone, getting the class of the object and the wait/notify +@item @code{java.lang.VMObject} +is the bridge between the low level @code{Object} facilities such +as making a clone, getting the class of the object and the wait/notify semantics. -@item java.lang.VMClassLoader +@item @code{java.lang.VMClassLoader} provides methods for defining and resolving core and primitive classes. -@item java.lang.VMSystem -is used to initialize the System properties, the System.arraycopy -method and the identityHashCode of an Object. -@item java.lang.VMSecurityManager +@item @code{java.lang.VMSystem} +is used to initialize the @code{System} properties, the @code{System.arraycopy} +method and the @code{identityHashCode} of an @code{Object}. +@item @code{java.lang.VMSecurityManager} provides the class context (stack trace) of the currently -executing thread and a way to get the currently active ClassLoader. -@item java.lang.VMThrowable -used to hold the VM state of a throwable, created when a Throwable is -created or the fillInStacktrace() method is called, when the actual stack +executing thread and a way to get the currently active @code{ClassLoader}. +@item @code{java.lang.VMThrowable} +used to hold the VM state of a throwable, created when a @code{Throwable} is +created or the @code{fillInStacktrace()} method is called, when the actual stack trace is needed (a lot of exceptions are never actually used), the -getStackTrace() method is used to create a real StackTraceElement array +@code{getStackTrace()} method is used to create a real @code{StackTraceElement} array for the exception. @end itemize @@ -197,12 +214,12 @@ package-private methods in Classpath: @itemize @bullet -@item java.lang.ThreadGroup.addThread(Thread) -Call this method from Thread when a new Thread is created, to add it to +@item @code{java.lang.ThreadGroup.addThread(Thread)} +Call this method from @code{Thread} when a new @code{Thread} is created, to add it to the group. -@item java.lang.ThreadGroup.removeThread(Thread) -Call this method from Thread when a Thread is stopped or destroyed. +@item @code{java.lang.ThreadGroup.removeThread(Thread)} +Call this method from @code{Thread} when a @code{Thread} is stopped or destroyed. @end itemize @@ -217,27 +234,27 @@ know about classes. @itemize @bullet -@item java.lang.Class @* -You, the VM, get to create this Class, so you may define the internal +@item @code{java.lang.Class} @* +You, the VM, get to create this @code{Class}, so you may define the internal structure any way you wish. You probably have code somewhere to -translate your internal class structure into a Class object. That is +translate your internal class structure into a @code{Class} object. That is the only known place where this matters. Some VMs do not create the -Class object at the point where the class is defined; instead, they wait -until a Class object is actually used. +@code{Class} object at the point where the class is defined; instead, they wait +until a @code{Class} object is actually used. @item Array Classes @* -When you are creating an array class, you should set the ClassLoader of -the array class to the ClassLoader of its component type. Whenever you -add a class to a ClassLoader, you need to notify the ClassLoader and -add the new Class to its internal cache of classes. To do this, call -ClassLoader.addVMCreatedClass(Class). @emph{Note: this is written in +When you are creating an array class, you should set the @code{ClassLoader} of +the array class to the @code{ClassLoader} of its component type. Whenever you +add a class to a @code{ClassLoader}, you need to notify the @code{ClassLoader} and +add the new @code{Class} to its internal cache of classes. To do this, call +@code{ClassLoader.addVMCreatedClass(Class)}. @emph{Note: this is written in anticipation of 1.2 support and does not apply just yet.} @item Primordial Class Loader @* When the primordial class loader loads a class, it needs to tell Classpath what it has done in order for security stuff to work right. To do this, call the static method -ClassLoader.newPrimordialClass(Class). +@code{ClassLoader.newPrimordialClass(Class)}. Even the first few core classes need to do this; in order to do it, simply call this method @emph{after} the initial class loading has been @@ -249,29 +266,29 @@ @item Top-level Exception Handler @* Exceptions take care of themselves in Classpath; all you need to do in -the top-level exception handler is call Throwable.printStackTrace(). +the top-level exception handler is call @code{Throwable.printStackTrace()}. @item Security and Traces @* There will eventually be a feature in the 1.2 security that keeps the -AccessController from having to evaluate @emph{all} of the -ProtectionDomains every time a security check is made. I think a common +@code{AccessController} from having to evaluate @emph{all} of the +@code{ProtectionDomain}s every time a security check is made. I think a common case is a single method doing a lot of things that require security checks. However, I don't want to bog down the method stack too much, so -this feature of the VM will have the AccessController for a thread +this feature of the VM will have the @code{AccessController} for a thread calling out to the VM to tell it how high it was on the stack when it made the last security request. Every time the stack goes lower than -that number, the VM will decrement the number. The AccessController +that number, the VM will decrement the number. The @code{AccessController} will remember what the accumulated protection status was at every stack -level (an AccessControlContext) and use that aggregated information to +level (an @code{AccessControlContext}) and use that aggregated information to do the check. I am not sure, however, whether the savings are substantial enough to outweigh the integer check and set after every method call. I will investigate. @item Threading @* I figured I'd put this here because a VM guy might be wondering about it. -We implement ThreadGroup, but that class is almost entirely -VM-independent. The root ThreadGroup, a static field called -ThreadGroup.root, should be initialized by Classpath, but if you wish to +We implement @code{ThreadGroup}, but that class is almost entirely +VM-independent. The root @code{ThreadGroup}, a static field called +@code{ThreadGroup.root}, should be initialized by Classpath, but if you wish to reinitialize it yourself, there should be no harm. @end itemize --------------080906050208000100040601-- From MAILER-DAEMON Sun Jun 06 00:16:44 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BWp5P-0004sr-QE for mharc-commit-classpath@gnu.org; Sun, 06 Jun 2004 00:16:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BWp5O-0004sE-Au for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:16:42 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BWp5J-0004qp-H3 for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:16:41 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BWp5J-0004qf-BP for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:16:37 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BWp4c-0004W7-0p for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:15:55 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i564Frx97622 for ; Sun, 6 Jun 2004 00:15:53 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i564Fql63400 for ; Sun, 6 Jun 2004 00:15:52 -0400 Received: from watson.ibm.com (sig-9-65-237-71.mts.ibm.com [9.65.237.71]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i564FoC76130; Sun, 6 Jun 2004 00:15:50 -0400 Message-ID: <40C29A74.9080005@watson.ibm.com> Date: Sun, 06 Jun 2004 00:15:48 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------050105010809020202020200" Subject: portable-native-sync.patch committed X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Jun 2004 04:16:42 -0000 This is a multi-part message in MIME format. --------------050105010809020202020200 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit --------------050105010809020202020200 Content-Type: text/plain; name="portable-native-sync-8.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="portable-native-sync-8.patch" Minor changes to portable-native-sync-6.patch, so that one can use kaffeh to regenerate the *GThreadNativeMethodRunner.h file without undue pain. Thanks to Dalibor for suggesting this. ChangeLog entry: 2004-05-26 Steven Augart --portable-native-sync implemented for GTK2: * gnu/native/jni/gtk-peer/gthread-jni.c: Indentation fixes. Implemented missing functions for GTK2. Added error handling. Renamed static functions out of the g_ namespace. Added TRACE_API_CALLS, EXPLAIN_TROUBLE, EXPLAIN_BROKEN, EXPLAIN_BADLY_BROKEN, and DELETE_LOCAL_REFS options. Rewrote global-reference code. Eliminated cascading errors. (mutex_trylock_jni_impl) Fully implemented. (cond_timed_wait_jni_impl) Went from millisecond to microsecond resolution. (setup_cache) New function. (mutex_cond_wait_jni_impl, mutex_cond_timed_wait_jni_impl) Fixed bug where they were not unlocking the GMutex associated with the condition variable during the wait on that condition variable. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c, native/jni/gtk-peer/gthread-jni.c, native/jni/gtk-peer/gthread-jni.h (g_thread_jni_functions): Renamed to ... (portable_native_sync_jni_functions): this name. (gdk_vm): Renamed to... (the_vm): this name. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c (gdk_vm): Removed duplicate definition. (gtkInit): Removed stray message to stdout. (gtkInit): Use g_malloc and g_free instead of malloc and free. (gtkInit): Fix a const assignment bug. (gtkInit): Simplified code. * gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java, native/jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c, native/jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h, gnu/java/awt/peer/gtk/GThreadMutex.java: New files. --- /dev/null 2003-01-30 10:24:37.000000000 +0000 +++ gnu/java/awt/peer/gtk/GThreadMutex.java 2004-05-26 14:58:19.000000000 +0000 @@ -0,0 +1,109 @@ +/* GThreadMutex.java -- Implements a mutex object for glib's gthread + abstraction, for use with GNU Classpath's --portable-native-sync option. + This is used in gthread-jni.c + + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package gnu.java.awt.peer.gtk; + +/** Implements a mutex object for glib's gthread + abstraction, for use with GNU Classpath's --portable-native-sync option. + This is used in gthread-jni.c. + + We use this object to implement the POSIX semantics for Mutexes. They are + needed are needed for the function vector that is passed to glib's + g_thread subpackage's initialization function. + + The GThreadMutex object itself serves as the Real Lock; if code has + entered the monitor for this GThreadMutex object (in Java language, if + it's synchronized on this object) then it holds the lock that this object + represents. + + @author Steven Augart + May, 2004 + + +*/ + +class GThreadMutex +{ + /** Might "lock" be locked? Is anyone waiting + to get that lock? How long is the queue? + + If zero, nobody holds a lock on this GThreadMutex object, and nobody is + trying to get one. Before someone attempts to acquire a lock on this + object, they must increment potentialLockers. After they release their + lock on this object, they must decrement potentialLockers. + + Access to this field is guarded by synchronizing on the object + lockForPotentialLockers. + + After construction, we only access this field via JNI. + */ + volatile int potentialLockers; + + /** An object to synchronize to if you want to examine or modify the + potentialLockers field. Only hold this lock for brief + moments, just long enough to check or set the value of + lockForPotentialLockers. + + We use this representation so that g_thread_mutex_trylock() will work + with the POSIX semantics. This is the only case in which you ever hold a + lock on lockForPotentialLockers while trying to get another + lock -- if you are the mutex_trylock() implementation, and you have just + checked that potentialLockers has the value zero. In that + case, mutex_trylock() holds the lock on lockForPotentialLockers so that + another thread calling mutex_trylock() or mutex_lock() won't increment + potentialLockers after we've checked it and before we've gained the lock + on the POSIX mutex. Of course, in that case the operation of gaining + the POSIX lock itself will succeed immediately, and once it has + succeeded, trylock releases lockForPotentialLockers right away, + incremented to 1 (one). + + After construction, we only access this field via JNI. + */ + Object lockForPotentialLockers; + + GThreadMutex() + { + potentialLockers = 0; + lockForPotentialLockers = new Object(); + } +} +// Local Variables: +// c-file-style: "gnu" +// End: --- /dev/null 2003-01-30 10:24:37.000000000 +0000 +++ gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java 2004-06-05 12:42:16.000000000 +0000 @@ -0,0 +1,302 @@ +/* GThreadNativeMethodRunner.java -- Implements pthread_create(), under + glib's gthread abstraction, for use with GNU Classpath's + --portable-native-sync option. + This is used by gthread-jni.c + + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package gnu.java.awt.peer.gtk; +import java.lang.ref.WeakReference; +import java.util.Set; +import java.util.Collections; +import java.util.HashSet; + +/** Implements pthread_create(), under glib's gthread abstraction, for use + with GNU Classpath's --portable-native-sync option. This is used in + gthread-jni.c + + Also implements a registry for threads, mapping Thread objects to small + integers. The registry uses weak references for threads that aren't + joinable, so that they will be garbage collected. + + There are a number of possible alternative implementations. + + + The rest of this comment consists of an answer to a question that was + raised on the commit-classpath mailing list: + + Mark Wielaard wrote: + + > Can't we assume that jobject and gpointer are both (void *) so we don't + > need the int <-> Thread (global jobject ref) mapping? + > Maybe there are platforms where jobject and gpointer aren't the same, + > but I guess that is pretty unlikely. + + + I agree with you on the pointer size issues. A gpointer is a void *, so + it's certainly guaranteed to be at least as large as any other + pointer. And a jobject is implicitly an opaque pointer (in Jikes RVM, we + use small integers, but we coerce them into the representation of a + pointer). + + The int <==> Thread mapping addresses a different issue. I realize that I + did not document this properly (two and a half lines in thread_create), + and the point is subtle (at least to me; took me a while to figure out). + + The int => Thread mapping always returns jobjects that are local + references, not global ones. This is because Thread objects need to be + able to go away and be garbage collected after the thread they refer to + has died. + + If we keep a global object reference to a thread, then when do we delete + that global object reference? We have an answer in the case of GThread + objects that were explicitly created with the joinable attribute. It is + safe for us to maintain a global reference to any joinable thread, since + the joinable thread must linger (even if only in a zombie state) + until it's explicitly joined via a g_thread_join() call. The global ref + could be cleaned up at that point too. + + However, in the case of GThreads that were created non-joinable by + g_thread_create(), and in the case of Java threads that were created + within pure Java code (not via g_thread_create()), we don't want them to + linger forever, and there is no way to tell when the last reference + to such threads needs to expire. In the case of this application -- AWT + with GTK peers -- it would probably be safe anyway, since there are not + very many threads we create, but I was going for correctness even in the + case of long-running programs that might set up and tear down AWT + interfaces many times. + + So, I duplicated the POSIX thread-ID semantics. The thread ID of a + non-joinable thread remains valid as long as that thread is still alive. + Once that thread dies, the old thread ID may be reused at any moment. And + that's why the array indexed by thread ID numbers is an array of weak + references. + + That's also why the int => Thread jobject mapping function always returns + local references, since global references would lock the Thread in memory + forever. + + I would dearly love there to be a cleaner solution. I dislike the + repeated dips from C code into Java that are necessary to look up thread + ID numbers. If anyone can think of one, I'm all ears. +*/ + +class GThreadNativeMethodRunner + extends Thread +{ + /** The C function pointer that was passed to g_thread_create(). + Specifically, this the numeric address of an object of + C type "void *(*funcPtr)(void *funcArg)". + */ + private final long funcPtr; + + /** The argument for the function "funcPtr(funcArg)". */ + private final long funcArg; + + GThreadNativeMethodRunner(long funcPtr, long funcArg, boolean joinable) + { + this.funcPtr = funcPtr; + this.funcArg = funcArg; + + if (joinable) + registerSelfJoinable(); + } + + public void run() + { + nativeRun(funcPtr, funcArg); + } + + private native void nativeRun(long funcPtr, long funcArg); + + /** THREADS is an array of threads, indexed by thread ID codes. Not sure + whether this is the "best" approach but it does make it O(1) to look up a + thread by its ID. + + Zero is a valid thread ID code. Any negative number is invalid. + + Possible future fixes (TODO?) + + - The THREADS array will only grow. probably not a problem. + But we could keep count when nulling entries and shrink when we have + lots of nulls at the end. Probably not worth it. --mjw + + - Could make this a set of Object; see the comment on "joinable" below. + + The initial size of 17 is just a starting point. Any number will do, + including zero. + */ + private static WeakReference[] threads = new WeakReference[17]; + + /** Used by threadToThreadID, below. Returns the registration number of + the newly-registered thread. + */ + private static synchronized int registerThread(Thread t) + { + int i; + + for (i = 0; i < threads.length; ++i) + { + WeakReference ref = threads[i]; + if (ref == null) + break; // found an empty spot. + } + + if (i == threads.length) + { + /* expand the array */ + WeakReference[] bigger = new WeakReference[threads.length * 2]; + System.arraycopy(threads, 0, bigger, 0, threads.length); + threads = bigger; + } + + threads[i] = new WeakReference(t); + + return i; + } + + /** Look up the Thread ID # for a Thread. Assign a Thread ID # if none + exists. This is a general routine for handling all threads, including + the VM's main thread, if appropriate. + + + Runs in O(n/2) time. + + We can't just issue a threadID upon thread creation. If we were to do + that, not all threads would have a threadID, because not all threads + are launched by GThreadNativeMethodRunner. + */ + static synchronized int threadToThreadID(Thread t) + { + for (int i = 0; i < threads.length; ++i ) + { + if (threads[i] == null) + continue; + Thread referent = (Thread) threads[i].get(); + if (referent == null) + { + threads[i] = null; // Purge the dead WeakReference. + continue; + } + if (referent.equals(t)) + return i; + } // for() + + /* No match found. */ + return registerThread(t); + } + + /** @param threadID Must be a non-negative integer. + + Used to return null if the thread number was out of range or if + the thread was unregistered. Now we throw an exception. + + Possible Alternative Interface: We could go back to returning null in + some sort of check-free mode, so code that calls this function must + be prepared to get null. + */ + static Thread threadIDToThread(int threadID) + throws IllegalArgumentException + { + if (threadID < 0) + throw new IllegalArgumentException("Received a negative threadID, " + + threadID); + if (threadID >= threads.length) + throw new IllegalArgumentException("Received a threadID (" + threadID + + ") higher than was" + + " ever issued"); + + /* Note: if the user is using a stale reference, things will just + break. We might end up getting a different thread than the one + expected. + + TODO: Add an error-checking mode where the user's problems with threads + are announced. For instance, if the user asks for the thread + associated with a threadID that was never issued, we could print a + warning or even abort. + + TODO: Consider optionally disabling all of the error-checking we + already have; it probably slows down the implementation. We could + just return NULL. This is just the reverse of the above TODO item. + */ + + WeakReference threadRef = threads[threadID]; + + if (threadRef == null) + throw new IllegalArgumentException("Asked to look up a stale or unissued" + + "threadID (" + threadID + ")" ); + + + Thread referent = (Thread) threadRef.get(); + if (referent == null) + throw new IllegalArgumentException ("Asked to look up a stale threadID (" + + threadID + ")"); + return referent; + } + + /** Joinable threads need a hard reference, so that they won't go away when + they die. That is because their thread IDs need to stay valid until the + thread is joined via thread_join(threadID). Joinable threads have to be + explicitly joined before they are allowed to go away completely. + + Possible Alternative Implementation: Eliminate the Joinable set. When + calling getThreadIDFromThread() you know whether or not the thread + is joinable. So just store the Thread itself in the threads array? + Make that array an Object array and check with instanceof. This + looks cleaner and more robust to me and it saves a native -> Java + call. But instanceof might be expensive. --mjw + */ + private static final Set joinable = + Collections.synchronizedSet(new HashSet()); + + /** Only called from the constructor. */ + private void registerSelfJoinable() + { + joinable.add(this); + } + + /** This method is only called from JNI, and only after we have succeeded in + a thread_join() operation. */ + static void deRegisterJoinable(Thread thread) + { + joinable.remove(thread); + } +} + +// Local Variables: +// c-file-style: "gnu" +// End: --- /dev/null 2003-01-30 10:24:37.000000000 +0000 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c 2004-05-08 06:12:47.000000000 +0000 @@ -0,0 +1,68 @@ +/* Native implementation of functions in GThreadNativeMethodRunner + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +#include "gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h" +#include "gthread-jni.h" + +/* + * Class: GThreadNativeMethodRunner + * Method: nativeRun + * Signature: (J)V + * + * Purpose: Run the C function whose function pointer is + * + */ +JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_nativeRun(JNIEnv *gdk_env, jobject lcl_obj, + jlong funcAddr, jlong funcArg) +{ + /* Convert the function's address back into a pointer to a C function. */ + void *(*funcPtr)(void *) = (void *(*)(void *)) funcAddr; + + /* We do not need to worry about the return value from funcPtr(); it's + just thrown away. That is part of the g_threads spec, so no reason + to worry about returning it. */ + (void) funcPtr((void *) funcArg); + /* Fall off the end and terminate the thread of control. */ +} + +/* Local Variables: */ +/* c-file-style: "gnu" */ +/* End: */ + + --- /dev/null 2003-01-30 10:24:37.000000000 +0000 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h 2004-05-26 20:25:09.000000000 +0000 @@ -0,0 +1,30 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class gnu_java_awt_peer_gtk_GThreadNativeMethodRunner */ + +#ifndef _Included_gnu_java_awt_peer_gtk_GThreadNativeMethodRunner +#define _Included_gnu_java_awt_peer_gtk_GThreadNativeMethodRunner +#ifdef __cplusplus +extern "C" { +#endif +#undef gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_MIN_PRIORITY +#define gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_MIN_PRIORITY 1L +#undef gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_NORM_PRIORITY +#define gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_NORM_PRIORITY 5L +#undef gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_MAX_PRIORITY +#define gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_MAX_PRIORITY 10L +/* Inaccessible static: numAnonymousThreadsCreated */ +/* Inaccessible static: threads */ +/* Inaccessible static: joinable */ +/* + * Class: gnu_java_awt_peer_gtk_GThreadNativeMethodRunner + * Method: nativeRun + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_nativeRun + (JNIEnv *, jobject, jlong, jlong); + +#ifdef __cplusplus +} +#endif +#endif Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c,v retrieving revision 1.17 diff -I*.class -u -r1.17 gnu_java_awt_peer_gtk_GtkMainThread.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c 29 Mar 2004 07:07:27 -0000 1.17 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c 6 Jun 2004 04:08:35 -0000 @@ -63,10 +63,6 @@ JNIEnv *gdk_env; -#ifdef PORTABLE_NATIVE_SYNC -JavaVM *gdk_vm; -#endif - GtkWindowGroup *global_gtk_window_group; /* @@ -87,18 +83,25 @@ NSA_INIT (env, clazz); /* GTK requires a program's argc and argv variables, and requires that they - be valid. */ - - argv = (char **) malloc (sizeof (char *) * 2); - argv[0] = ""; + be valid. Set it up. */ + argv = (char **) g_malloc (sizeof (char *) * 2); + argv[0] = (char *) g_malloc(1); +#if 1 + strcpy(argv[0], ""); +#else /* The following is a more efficient alternative, but less intuitively + * expresses what we are trying to do. This code is only run once, so + * I'm going for intuitive. */ + argv[0][0] = '\0'; +#endif argv[1] = NULL; /* until we have JDK 1.2 JNI, assume we have a VM with threads that match what GLIB was compiled for */ #ifdef PORTABLE_NATIVE_SYNC - (*env)->GetJavaVM( env, &gdk_vm ); - g_thread_init ( &g_thread_jni_functions ); - printf("called gthread init\n"); + (*env)->GetJavaVM( env, &the_vm ); + g_thread_init ( &portable_native_sync_jni_functions ); + /* Debugging progress message; uncomment if needed: */ + /* printf("called gthread init\n"); */ #else g_thread_init ( NULL ); #endif @@ -121,16 +124,15 @@ if ((homedir = getenv ("HOME"))) { - rcpath = (char *) malloc (strlen (homedir) + strlen (RC_FILE) + 2); + rcpath = (char *) g_malloc (strlen (homedir) + strlen (RC_FILE) + 2); sprintf (rcpath, "%s/%s", homedir, RC_FILE); } gtk_rc_parse ((rcpath) ? rcpath : RC_FILE); - if (rcpath) - free (rcpath); - - free (argv); + g_free (rcpath); + g_free (argv[0]); + g_free (argv); /* setup cached IDs for posting GTK events to Java */ /* gtkgenericpeer = (*env)->FindClass (env, */ Index: native/jni/gtk-peer/gthread-jni.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gthread-jni.c,v retrieving revision 1.11 diff -I*.class -u -r1.11 gthread-jni.c --- native/jni/gtk-peer/gthread-jni.c 30 Apr 2004 11:05:17 -0000 1.11 +++ native/jni/gtk-peer/gthread-jni.c 6 Jun 2004 04:08:36 -0000 @@ -40,142 +40,1131 @@ /************************************************************************/ /* - * Julian Dolby (dolby@us.ibm.com) - * February 7, 2003 + * @author Julian Dolby (dolby@us.ibm.com) + * @date February 7, 2003 implemented for GLIB v.1 + * + * + * @author Steven Augart + * , + * @date April 30, 2004 -- May 10 2004: Support new functions for Glib v.2, + * fix cond_wait to free and re-acquire the mutex, + * replaced trylock stub implementation with a full one. * * This code implements the GThreadFunctions interface for GLIB using * Java threading primitives. All of the locking and conditional variable * functionality required by GThreadFunctions is implemented using the * monitor and wait/notify functionality of Java objects. The thread- - * local fucntionality uses the java.lang.ThreadLocal class. + * local functionality uses the java.lang.ThreadLocal class. + * + * Classpath's AWT support uses GTK+ peers. GTK+ uses GLIB. GLIB by default + * uses the platform's native threading model -- pthreads in most cases. If + * the Java runtime doesn't use the native threading model, then it needs this + * code in order to use Classpath's (GTK+-based) AWT routines. * - * This code is designed to be portable in that it makes no assumptions + * This code should be portable; I believe it makes no assumptions * about the underlying VM beyond that it implements the JNI functionality * that this code uses. * - * The one piece that does not really work is trylock for mutexes. The - * Java locking model does not include such functionality, and I do not - * see how to implement it without knowing something about how the VM - * implements locking. + * Currently, use of this code is governed by the configuration option + * --enable-portable-native-sync. We will soon add a VM hook so the VM can + * select which threading model it wants to use at run time; at that point, + * the configuration option will go away. + * + * The code in this file uses only JNI 1.1, except for one JNI 1.2 function: + * GetEnv, in the JNI Invocation API. (There seems to be no way around using + * GetEnv). + * + * ACKNOWLEDGEMENT: + * + * I would like to thank Mark Wielaard for his kindness in spending at least + * six hours of his own time in reviewing this code and correcting my GNU + * coding and commenting style. --Steve Augart + * * * NOTES: * - * I have tested it only on JikesRVM---the CVS head as of early February - * 2003. + * This code has been tested with Jikes RVM and with Kaffe. * - * Currently, use of this code is governed by the configuration option - * --enable-portable-native-sync + * This code should have proper automated unit tests. I manually tested it + * by running an application that uses AWT. --Steven Augart * + * MINOR NIT: + * + * - Using a jboolean in the arglist to "throw()" and "rethrow()" + * triggers many warnings from GCC's -Wconversion operation, because that + * is not the same as the conversion (upcast to an int) that would occur in + * the absence of a prototype. + * + * It would be very slightly more efficient to just pass the jboolean, but + * is not worth the clutter of messages. The right solution would be to + * turn off the -Wconversion warning for just this file, *except* that + * -Wconversion also warns you against constructs such as: + * unsigned u = -1; + * and that is a useful warning. So I went from a "jboolean" to a + * "gboolean" (-Wconversion is not enabled by default for GNU Classpath, + * but it is in my own CFLAGS, which, for gcc 3.3.3, read: -pipe -ggdb3 -W + * -Wall -Wbad-function-cast -Wcast-align -Wpointer-arith -Wcast-qual + * -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations + * -fkeep-static-consts -fkeep-inline-functions -Wundef -Wwrite-strings + * -Wno-aggregate-return -Wmissing-noreturn -Wnested-externs -Wtrigraphs + * -Wconversion -Wsign-compare -Wno-float-equal -Wmissing-format-attribute + * -Wno-unreachable-code -Wdisabled-optimization ) */ +#include + +/************************************************************************/ +/* Configuration */ +/************************************************************************/ + +/** Tracing and Reporting **/ +#define TRACE_API_CALLS 0 /* announce entry and exit into each method, + by printing to stderr. */ + +#define TRACE_MONITORS 0 /* Every enterMonitor() and exitMonitor() goes + to stderr. */ + +/** Trouble handling. There is a discussion below of this. **/ +#define EXPLAIN_TROUBLE 1 /* Describe any unexpected trouble that + happens. This is a superset + of EXPLAIN_BROKEN, and if set trumps an + unset EXPLAIN_BROKEN. It is not a strict + superset, since at the moment there is no + TROUBLE that is not also BROKEN. + + Use criticalMsg() to describe the problem. + */ + +#define EXPLAIN_BROKEN 1 /* Describe trouble that is serious enough to + be BROKEN. (Right now all trouble is at + least BROKEN.) */ + +/* There is no EXPLAIN_BADLY_BROKEN definition. We always explain + BADLY_BROKEN trouble, since there is no other way to report it. */ + + +/** Error Handling **/ +#define DIE_IF_BROKEN 1 /* Dies if serious trouble happens. There is + really no non-serious trouble, except + possibly problems that arise during + pthread_create, which are reported by a + GError. + + If you do not set DIE_IF_BROKEN, then + trouble will raise a Java RuntimeException. + We probably do want to die right away, + since anything that's BROKEN really + indicates a programming error or a + system-wide error, and that's what the glib + documentation says you should do in case of + that kind of error in a glib-style + function. But it does work to turn this + off. */ + +#if DIE_IF_BROKEN +#define DIE_IF_BADLY_BROKEN 1 /* DIE_IF_BROKEN implies DIE_IF_BADLY_BROKEN */ +#else +#define DIE_IF_BADLY_BROKEN 1 /* Die if the system is badly broken -- + that is, if we have further trouble while + attempting to throw an exception + upwards, or if we are unable to generate + one of the classes we'll need in order to + throw wrapped exceptions upward. + + If unset, we will print a warning message, + and limp along anyway. Not that the system + is likely to work. */ +#endif + +/** Performance tuning parameters **/ + +#define ENABLE_EXPENSIVE_ASSERTIONS 0 /* Enable expensive assertions? */ + +#define DELETE_LOCAL_REFS 1 /* Whether to delete local references. + + JNI only guarantees that there wil be 16 + available. (Jikes RVM provides an number + only limited by VM memory.) + + Jikes RVM will probably perform faster if + this is turned off, but other VMs may need + this to be turned on in order to perform at + all, or might need it if things change. + + Remember, we don't know how many of those + local refs might have already been used up + by higher layers of JNI code that end up + calling g_thread_self(), + g_thread_set_private(), and so on. + + We set this to 1 for GNU Classpath, since + one of our principles is "always go for the + most robust implementation" */ + +#define HAVE_JNI_VERSION_1_2 0 /* Assume we don't. We could + dynamically check for this. We will + assume JNI 1.2 in later versions of + Classpath. + + As it stands, the code in this file + already needs one JNI 1.2 function: + GetEnv, in the JNI Invocation API. + + TODO This code hasn't been tested yet. + And really hasn't been implemented yet. + */ /************************************************************************/ /* Global data */ /************************************************************************/ +#include /* provides intptr_t */ +#include /* va_list */ #include "gthread-jni.h" +#include /* assert() */ + +/* For Java thread priority constants. */ +#include "gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h" + +/* The VM handle. This is set in + Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit */ +JavaVM *the_vm; + +/* Forward Declarations for Functions */ +static int threadObj_set_priority (JNIEnv * env, jobject threadObj, + GThreadPriority gpriority); +static void fatalMsg (const char fmt[], ...) + __attribute__ ((format (printf, 1, 2))) + __attribute__ ((noreturn)); -/* The VM handle. This is set in GtkToolkitMain.gtkInit */ -JavaVM *gdk_vm; +static void criticalMsg (const char fmt[], ...) + __attribute__ ((format (printf, 1, 2))); +static void tracing (const char fmt[], ...) + __attribute__ ((format (printf, 1, 2))); + +static jint javaPriorityLevel (GThreadPriority priority) + __attribute__ ((const)); /************************************************************************/ -/* Utilities to reflect exceptions back to the VM */ +/* Trouble-handling, including utilities to reflect exceptions */ +/* back to the VM. Also some status reporting. */ /************************************************************************/ -/* This function checks for a pending exception, and rethrows it with +/* How are we going to handle problems? + + There are several approaches: + + 1) Report them with the GError mechanism. + + (*thread_create)() is the only one of these functions that takes a + GError pointer. And the only G_THREAD error defined maps onto EAGAIN. + We don't have any errors in our (*thread_create)() implementation that + can be mapped to EAGAIN. So this idea is a non-starter. + + 2) Reflect the exception back to the VM, wrapped in a RuntimeException. + This will fail sometimes, if we're so broken (BADLY_BROKEN) that we + fail to throw the exception. + + 3) Abort execution. This is what the glib functions themselves do for + errors that they can't report via GError. + + Enable DIE_IF_BROKEN and/or DIE_IF_BADLY_BROKEN to + make this the default for BROKEN and/or BADLY_BROKEN trouble. + + 4) Display messages to stderr. We always do this for BADLY_BROKEN + trouble. The glib functions do that for errors they can't report via + GError. + + There are some complications. + + When I attempted to report a problem in g_thread_self() using g_critical (a + macro around g_log(), I found that g_log in turn looks for thread-private + data and calls g_thread_self() again. + + We got a segfault, probably due to stack overflow. So, this code doesn't + use the g_critical() and g_error() functions any more. Nor do we use + g_assert(); we use the C library's assert() instead. +*/ + + +#define WHERE __FILE__ ":" G_STRINGIFY(__LINE__) ": " + +/* This is portable to older compilers that lack variable-argument macros. + This used to be just g_critical(), but then we ran into the error reporting + problem discussed above. +*/ +static void +fatalMsg (const char fmt[], ...) +{ + va_list ap; + va_start (ap, fmt); + vfprintf (stderr, fmt, ap); + va_end (ap); + fputs ("\nAborting execution\n", stderr); + abort (); +} + + +static void +criticalMsg (const char fmt[], ...) +{ + va_list ap; + va_start (ap, fmt); + vfprintf (stderr, fmt, ap); + va_end (ap); + putc ('\n', stderr); +} + +/* Unlike the other two, this one does not append a newline. This is only + used if one of the TRACE_ macros is defined. */ +static void +tracing (const char fmt[], ...) +{ + va_list ap; + va_start (ap, fmt); + vfprintf (stderr, fmt, ap); + va_end (ap); +} + +#define assert_not_reached() \ + do \ + { \ + fputs(WHERE "You should never get here. Aborting execution.\n", \ + stderr); \ + abort(); \ + } \ + while(0) + + +#if DIE_IF_BADLY_BROKEN +#define BADLY_BROKEN fatalMsg +#else +#define BADLY_BROKEN criticalMsg +/* So, the user may still attempt to recover, even though we do not advise + this. */ +#endif + +/* I find it so depressing to have to use C without varargs macros. */ +#define BADLY_BROKEN_MSG WHERE "Something fundamental" \ + " to GNU Classpath's AWT JNI broke while we were trying to pass up a Java error message" + +#define BADLY_BROKEN0() \ + BADLY_BROKEN(BADLY_BROKEN_MSG); +#define BADLY_BROKEN1(msg) \ + BADLY_BROKEN(BADLY_BROKEN_MSG ": " msg) +#define BADLY_BROKEN2(msg, arg) \ + BADLY_BROKEN(BADLY_BROKEN_MSG ": " msg, arg) +#define BADLY_BROKEN3(msg, arg, arg2) \ + BADLY_BROKEN(BADLY_BROKEN_MSG ": " msg, arg1, arg2) +#define BADLY_BROKEN4(msg, arg, arg2, arg3) \ + BADLY_BROKEN(BADLY_BROKEN_MSG ": " msg, arg1, arg2, arg3) + +#define DELETE_LOCAL_REF(env, ref) \ + do \ + { \ + if ( DELETE_LOCAL_REFS ) \ + { \ + (*env)->DeleteLocalRef (env, ref); \ + (ref) = NULL; \ + } \ + } \ + while(0) + +/* Cached info for Exception-wrapping */ + +jclass runtimeException_class; /* java.lang.RuntimeException */ +jmethodID runtimeException_ctor; /* constructor for it */ + + +/* Throw a new RuntimeException. It may wrap around an existing exception. + 1 if we did rethrow, -1 if we had trouble while rethrowing. + isBroken is always true in this case. */ +static int +throw (JNIEnv * env, jthrowable cause, const char *message, + gboolean isBroken, const char *file, int line) +{ + jstring jmessage; + gboolean describedException = FALSE; /* Did we already describe the + exception to stderr or the + equivalent? */ + jthrowable wrapper; + + /* allocate local message in Java */ + const char fmt[] = "In AWT JNI, %s (at %s:%d)"; + size_t len = strlen (message) + strlen (file) + sizeof fmt + 25; + char *buf; + + if (EXPLAIN_TROUBLE || (isBroken && EXPLAIN_BROKEN)) + { + criticalMsg ("%s:%d: AWT JNI failure%s: %s\n", file, line, + isBroken ? " (BROKEN)" : "", message); + if (cause) + { + jthrowable currentException = (*env)->ExceptionOccurred (env); + + if (cause == currentException) + { + criticalMsg ("Description follows to System.err:"); + (*env)->ExceptionDescribe (env); + /* ExceptionDescribe has the side-effect of clearing the pending + exception; relaunch it. */ + describedException = TRUE; + + if ((*env)->Throw (env, cause)) + { + BADLY_BROKEN1 + ("Relaunching an exception with Throw failed."); + return -1; + } + } + else + { + DELETE_LOCAL_REF (env, currentException); + criticalMsg (WHERE + "currentException != cause; something else happened" + " while handling an exception."); + } + } + } /* if (EXPLAIN_TROUBLE) */ + + if (isBroken && DIE_IF_BROKEN) + fatalMsg ("%s:%d: Aborting execution; BROKEN: %s\n", file, line, message); + + if ((buf = malloc (len))) + { + bzero (buf, len); + snprintf (buf, len, fmt, message, file, line); + jmessage = (*env)->NewStringUTF (env, buf); + free (buf); + } + else + { + jmessage = NULL; + } + + /* Create the RuntimeException wrapper object and throw it. It is OK for + CAUSE to be NULL. */ + wrapper = (jthrowable) (*env)->NewObject + (env, runtimeException_class, runtimeException_ctor, jmessage, cause); + DELETE_LOCAL_REF (env, jmessage); + + if (!wrapper) + { + /* I think this should only happen: + - if there are bugs in my JNI code, or + - if the VM is broken, or + - if we run out of memory. + */ + if (EXPLAIN_TROUBLE) + { + criticalMsg (WHERE "GNU Classpath: JNI NewObject() could not create" + " a new java.lang.RuntimeException."); + criticalMsg ("We were trying to warn about the following" + " previous failure:"); + criticalMsg ("%s:%d: %s", file, line, message); + criticalMsg ("The latest (NewObject()) exception's description" + " follows, to System.err:"); + (*env)->ExceptionDescribe (env); + } + BADLY_BROKEN1 ("Failure of JNI NewObject()" + " to make a java.lang.RuntimeException"); + return -1; + } + + + /* throw it */ + if ((*env)->Throw (env, wrapper)) + { + /* Throw() should just never fail, unless we're in such severe trouble + that we might as well die. */ + BADLY_BROKEN1 + ("GNU Classpath: Failure of JNI Throw to report an Exception"); + return -1; + } + + DELETE_LOCAL_REF (env, wrapper); + return 1; +} + + + +/* Rethrow an exception we received, wrapping it with a RuntimeException. 1 + if we did rethrow, -1 if we had trouble while rethrowing. + CAUSE should be identical to the most recent exception that happened, so + that ExceptionDescribe will work. (Otherwise nix.) */ +static int +rethrow (JNIEnv * env, jthrowable cause, const char *message, + gboolean isBroken, const char *file, int line) +{ + assert (cause); + return throw (env, cause, message, isBroken, file, line); +} + + +/* This function checks for a pending exception, and rethrows it with * a wrapper RuntimeException to deal with possible type problems (in * case some calling piece of code does not expect the exception being * thrown) and to include the given extra message. + * + * Returns 0 if no problems found (so no exception thrown), 1 if we rethrew an + * exception. Returns -1 on failure. */ -static void maybe_rethrow(JNIEnv *gdk_env, char *message, char *file, int line) { - jthrowable cause; +static int +maybe_rethrow (JNIEnv * env, const char *message, gboolean isBroken, + const char *file, int line) +{ + jthrowable cause = (*env)->ExceptionOccurred (env); + int ret = 0; + + /* rethrow if an exception happened */ + if (cause) + { + ret = rethrow (env, cause, message, isBroken, file, line); + DELETE_LOCAL_REF (env, cause); + } + + return 0; +} + +/* MAYBE_TROUBLE() is used to include a source location in the exception + message. Once we have run maybe_rethrow, if there WAS trouble, + return TRUE, else FALSE. + + MAYBE_TROUBLE() is actually never used; all problems that throw exceptions + are BROKEN, at least. Nothing is recoverable :(. See the discussion of + possible errors at thread_create_jni_impl(). */ +#define MAYBE_TROUBLE(_env, _message) \ + maybe_rethrow(_env, _message, FALSE, __FILE__, __LINE__) + +/* MAYBE_TROUBLE(), but something would be BROKEN if it were true. */ +#define MAYBE_BROKEN(_env, _message) \ + maybe_rethrow(_env, _message, TRUE, __FILE__, __LINE__) + +/* Like MAYBE_TROUBLE(), TROUBLE() is never used. */ +#define TROUBLE(_env, _message) \ + rethrow(_env, (*env)->ExceptionOccurred (env), _message, FALSE, \ + __FILE__, __LINE__) + +#define BROKEN(_env, _message) \ + rethrow (_env, (*env)->ExceptionOccurred (env), _message, TRUE, \ + __FILE__, __LINE__) + +/* Like MAYBE_TROUBLE(), NEW_TROUBLE() is never used. */ +#define NEW_TROUBLE(_env, _message) \ + throw (_env, NULL, _message, FALSE, __FILE__, __LINE__) + +#define NEW_BROKEN(_env, _message) \ + throw (_env, NULL, _message, TRUE, __FILE__, __LINE__) + +/* Like MAYBE_TROUBLE(), RETHROW_CAUSE() is never used. */ +#define RETHROW_CAUSE(_env, _cause, _message) \ + rethrow (_env, _cause, _message, FALSE, __FILE__, __LINE__) + +#define BROKEN_CAUSE(_env, _cause, _message) \ + rethrow (_env, _cause, _message, TRUE, __FILE__, __LINE__) + +/* Macros to handle the possibility that someone might have called one of the + GThreadFunctions API functions with a Java exception pending. It is + generally discouraged to continue to use JNI after a Java exception has + been raised. Sun's JNI book advises that one trap JNI errors immediately + and not continue with an exception pending. + + These are #if'd out for these reasons: + + 1) They do not work in the C '89 subset that Classpath is currently + (2004 May 10) sticking to; HIDE_OLD_TROUBLE() includes a declaration + that should be in scope for the rest of the function, so it needs a + language version that lets you mix declarations and statements. (This + could be worked around if it were important.) + + 2) They chew up more time and resources. + + 3) There does not ever seem to be old trouble -- the assertion in + HIDE_OLD_TROUBLE never goes off. + + You will want to re-enable them if this code needs to be used in a context + where old exceptions might be pending when the GThread functions are + called. + + The implementations in this file are responsible for skipping around calls + to SHOW_OLD_TROUBLE() if they've raised exceptions during the call. So, if + we reach SHOW_OLD_TROUBLE, we are guaranteed that there are no exceptions + pending. */ +#if 1 +#define HIDE_OLD_TROUBLE(env) \ + assert ( NULL == (*env)->ExceptionOccurred (env) ) + +#define SHOW_OLD_TROUBLE() \ + assert ( NULL == (*env)->ExceptionOccurred (env) ) +#else /* 0 */ +#define HIDE_OLD_TROUBLE(env) \ + jthrowable savedTrouble = (*env)->ExceptionOccurred (env); \ + (*env)->ExceptionClear (env); + +#define SHOW_OLD_TROUBLE() do \ +{ \ + assert ( NULL == (*env)->ExceptionOccurred (env) ) \ + if (savedTrouble) \ + { \ + if ((*env)->Throw (env, savedTrouble)) \ + BADLY_BROKEN ("ReThrowing the savedTrouble failed"); \ + } \ + DELETE_LOCAL_REF (env, savedTrouble); \ +} while(0) + +#endif /* 0 */ + +/* Set up the cache of jclass and jmethodID primitives we need + in order to throw new exceptions and rethrow exceptions. We do this + independently of the other caching. We need to have this cache set up + first, so that we can then report errors properly. + + If any errors while setting up the error cache, the world is BADLY_BROKEN. + + May be called more than once. + + Returns -1 if the cache was not initialized properly, 1 if it was. +*/ +static int +setup_exception_cache (JNIEnv * env) +{ + static int exception_cache_initialized = 0; /* -1 for trouble, 1 for proper + init. */ + + jclass lcl_class; /* a class used for local refs */ + + if (exception_cache_initialized) + return exception_cache_initialized; + lcl_class = (*env)->FindClass (env, "java/lang/RuntimeException"); + if ( ! lcl_class ) + { + BADLY_BROKEN1 ("Broken Class library or VM?" + " Couldn't find java/lang/RuntimeException"); + return exception_cache_initialized = -1; + } + /* Pin it down. */ + runtimeException_class = (jclass) (*env)->NewGlobalRef (env, lcl_class); + DELETE_LOCAL_REF (env, lcl_class); + if (!runtimeException_class) + { + BADLY_BROKEN1 ("Serious trouble: could not turn" + " java.lang.RuntimeException into a global reference"); + return exception_cache_initialized = -1; + } + + runtimeException_ctor = + (*env)->GetMethodID (env, runtimeException_class, "", + "(Ljava/lang/String;Ljava/lang/Throwable;)V"); + if ( ! runtimeException_ctor ) + { + BADLY_BROKEN1 ("Serious trouble: classpath couldn't find a" + " two-arg constructor for java/lang/RuntimeException"); + return exception_cache_initialized = -1; + } + + return exception_cache_initialized = 1; +} + + +/**********************************************************/ +/***** The main cache *************************************/ +/**********************************************************/ + +/** This is a cache of all classes, methods, and field IDs that we use during + the run. We maintain a permanent global reference to each of the classes + we cache, since otherwise the (local) jclass that refers to that class + would go out of scope and possibly be reused in further calls. + + The permanent global reference also achieves the secondary goal of + protecting the validity of the methods and field IDs in case the classes + were otherwise unloaded and then later loaded again. Obviously, this will + never happen to classes such as java.lang.Thread and java.lang.Object, but + the primary reason for maintaining permanent global refs is sitll valid. + + The code in jnilink.c has a similar objective. TODO: Consider using that + code instead. + + --Steven Augart +*/ + +/* All of these are cached classes and method IDs: */ +/* java.lang.Object */ +static jclass obj_class; /* java.lang.Object */ +static jmethodID obj_ctor; /* no-arg Constructor for java.lang.Object */ +static jmethodID obj_notify_mth; /* java.lang.Object.notify() */ +static jmethodID obj_notifyall_mth; /* java.lang.Object.notifyall() */ +static jmethodID obj_wait_mth; /* java.lang.Object.wait() */ +static jmethodID obj_wait_nanotime_mth; /* java.lang.Object.wait(JI) */ + +/* GThreadMutex and its methods */ +static jclass mutex_class; +static jmethodID mutex_ctor; +static jfieldID mutex_lockForPotentialLockers_fld; +static jfieldID mutex_potentialLockers_fld; + +/* java.lang.Thread and its methods*/ +static jclass thread_class; /* java.lang.Thread */ +static jmethodID thread_current_mth; /* Thread.currentThread() */ +static jmethodID thread_equals_mth; /* Thread.equals() */ +static jmethodID thread_join_mth; /* Thread.join() */ +static jmethodID thread_setPriority_mth; /* Thread.setPriority() */ +static jmethodID thread_stop_mth; /* Thread.stop() */ +static jmethodID thread_yield_mth; /* Thread.yield() */ + +/* java.lang.ThreadLocal and its methods */ +static jclass threadlocal_class; /* java.lang.ThreadLocal */ +static jmethodID threadlocal_ctor; /* Its constructor */ +static jmethodID threadlocal_set_mth; /* ThreadLocal.set() */ +static jmethodID threadlocal_get_mth; /* ThreadLocal.get() */ + +/* java.lang.Long and its methods */ +static jclass long_class; /* java.lang.Long */ +static jmethodID long_ctor; /* constructor for it: (J) */ +static jmethodID long_longValue_mth; /* longValue()J */ + + +/* GThreadNativeMethodRunner */ +static jclass runner_class; +static jmethodID runner_ctor; +static jmethodID runner_threadToThreadID_mth; +static jmethodID runner_threadIDToThread_mth; +static jmethodID runner_deRegisterJoinable_mth; +static jmethodID runner_start_mth; /* Inherited Thread.start() */ + + +/* java.lang.InterruptedException */ +static jclass interrupted_exception_class; + + + + +/* Returns a negative value if there was trouble during initialization. + Returns a positive value of the cache was initialized correctly. + Never returns zero. */ +static int +setup_cache (JNIEnv * env) +{ + jclass lcl_class; + static int initialized = 0; /* 1 means initialized, 0 means uninitialized, + -1 means mis-initialized */ + + if (initialized) + return initialized; + + /* make sure we can report on trouble */ + if (setup_exception_cache (env) < 0) + return initialized = -1; + + assert ( ! (*env)->ExceptionCheck (env)); + + /* java.lang.Object and its methods */ + lcl_class = (*env)->FindClass (env, "java/lang/Object"); + if (!lcl_class) + { + BROKEN (env, "cannot find java.lang.Object"); + return initialized = -1; + } + + /* Pin it down. */ + obj_class = (jclass) (*env)->NewGlobalRef (env, lcl_class); + DELETE_LOCAL_REF (env, lcl_class); + if (!obj_class) + { + BROKEN (env, "Cannot get a global reference to java.lang.Object"); + return initialized = -1; + } + + obj_ctor = (*env)->GetMethodID (env, obj_class, "", "()V"); + if (!obj_ctor) + { + BROKEN (env, "cannot find constructor for java.lang.Object"); + return initialized = -1; + } + + obj_notify_mth = (*env)->GetMethodID (env, obj_class, "notify", "()V"); + if ( ! obj_notify_mth ) + { + BROKEN (env, "cannot find java.lang.Object.notify()V"); + return initialized = -1; + } + + obj_notifyall_mth = + (*env)->GetMethodID (env, obj_class, "notifyAll", "()V"); + if ( ! obj_notifyall_mth) + { + BROKEN (env, "cannot find java.lang.Object.notifyall()V"); + return initialized = -1; + } + + obj_wait_mth = (*env)->GetMethodID (env, obj_class, "wait", "()V"); + if ( ! obj_wait_mth ) + { + BROKEN (env, "cannot find Object."); + return initialized = -1; + } + + obj_wait_nanotime_mth = + (*env)->GetMethodID (env, obj_class, "wait", "(JI)V"); + if ( ! obj_wait_nanotime_mth ) + { + BROKEN (env, "cannot find Object."); + return initialized = -1; + } + + /* GThreadMutex and its methods */ + lcl_class = (*env)->FindClass (env, "gnu/java/awt/peer/gtk/GThreadMutex"); + if ( ! lcl_class) + { + BROKEN (env, "cannot find gnu.java.awt.peer.gtk.GThreadMutex"); + return initialized = -1; + } + /* Pin it down. */ + mutex_class = (jclass) (*env)->NewGlobalRef (env, lcl_class); + DELETE_LOCAL_REF (env, lcl_class); + if ( ! mutex_class) + { + BROKEN (env, "Cannot get a global reference to GThreadMutex"); + return initialized = -1; + } + + mutex_ctor = (*env)->GetMethodID (env, mutex_class, "", "()V"); + if ( ! mutex_ctor) + { + BROKEN (env, "cannot find zero-arg constructor for GThreadMutex"); + return initialized = -1; + } + + mutex_potentialLockers_fld = (*env)->GetFieldID + (env, mutex_class, "potentialLockers", "I"); + if ( ! mutex_class ) + { + BROKEN (env, "cannot find GThreadMutex.potentialLockers"); + return initialized = -1; + } + + if (! (mutex_lockForPotentialLockers_fld = (*env)->GetFieldID + (env, mutex_class, "lockForPotentialLockers", "Ljava/lang/Object;"))) + { + BROKEN (env, "cannot find GThreadMutex.lockForPotentialLockers"); + return initialized = -1; + } + + + /* java.lang.Thread */ + if (! (lcl_class = (*env)->FindClass (env, "java/lang/Thread"))) + { + BROKEN (env, "cannot find java.lang.Thread"); + return initialized = -1; + } + + /* Pin it down. */ + thread_class = (jclass) (*env)->NewGlobalRef (env, lcl_class); + DELETE_LOCAL_REF (env, lcl_class); + if (!thread_class) + { + BROKEN (env, "Cannot get a global reference to java.lang.Thread"); + return initialized = -1; + } + + thread_current_mth = + (*env)->GetStaticMethodID (env, thread_class, "currentThread", + "()Ljava/lang/Thread;"); + if (!thread_current_mth) + { + BROKEN (env, "cannot find Thread.currentThread() method"); + return initialized = -1; + } + + thread_equals_mth = + (*env)->GetMethodID (env, thread_class, "equals", "(Ljava/lang/Object;)Z"); + if (!thread_equals_mth) + { + BROKEN (env, "cannot find Thread.equals() method"); + return initialized = -1; + } + + thread_join_mth = (*env)->GetMethodID (env, thread_class, "join", "()V"); + if (!thread_join_mth) + { + BROKEN (env, "cannot find Thread.join() method"); + return initialized = -1; + } + + thread_stop_mth = (*env)->GetMethodID (env, thread_class, "stop", "()V"); + if ( ! thread_stop_mth ) + { + BROKEN (env, "cannot find Thread.stop() method"); + return initialized = -1; + } + + thread_setPriority_mth = + (*env)->GetMethodID (env, thread_class, "setPriority", "(I)V"); + if ( ! thread_setPriority_mth ) + { + BROKEN (env, "cannot find Thread.setPriority() method"); + return initialized = -1; + } + + thread_yield_mth = + (*env)->GetStaticMethodID (env, thread_class, "yield", "()V"); + if ( ! thread_yield_mth ) + { + BROKEN (env, "cannot find Thread.yield() method"); + return initialized = -1; + } + + /* java.lang.ThreadLocal */ + lcl_class = (*env)->FindClass (env, "java/lang/ThreadLocal"); + if ( ! lcl_class ) + { + BROKEN (env, "cannot find class java.lang.ThreadLocal"); + return initialized = -1; + } + + /* Pin it down. */ + threadlocal_class = (jclass) (*env)->NewGlobalRef (env, lcl_class); + DELETE_LOCAL_REF (env, lcl_class); + if ( ! threadlocal_class ) + { + BROKEN (env, "Cannot get a global reference to java.lang.ThreadLocal"); + return initialized = -1; + } + + threadlocal_ctor = (*env)->GetMethodID (env, threadlocal_class, + "", "()V"); + if ( ! threadlocal_ctor ) + { + BROKEN (env, "cannot find ThreadLocal.()V"); + return initialized = -1; + } + + threadlocal_get_mth = (*env)->GetMethodID (env, threadlocal_class, + "get", "()Ljava/lang/Object;"); + if ( ! threadlocal_get_mth ) + { + BROKEN (env, "cannot find java.lang.ThreadLocal.get()Object"); + return initialized = -1; + } + + threadlocal_set_mth = (*env)->GetMethodID (env, threadlocal_class, + "set", "(Ljava/lang/Object;)V"); + if ( ! threadlocal_set_mth ) + { + BROKEN (env, "cannot find ThreadLocal.set(Object)V"); + return initialized = -1; + } + + /* java.lang.Long */ + lcl_class = (*env)->FindClass (env, "java/lang/Long"); + if ( ! lcl_class ) + { + BROKEN (env, "cannot find class java.lang.Long"); + return initialized = -1; + } + + /* Pin it down. */ + long_class = (jclass) (*env)->NewGlobalRef (env, lcl_class); + DELETE_LOCAL_REF (env, lcl_class); + if (!long_class) + { + BROKEN (env, "Cannot get a global reference to java.lang.Long"); + return initialized = -1; + } + + long_ctor = (*env)->GetMethodID (env, long_class, "", "(J)V"); + if (!long_ctor) + { + BROKEN (env, "cannot find method java.lang.Long.(J)V"); + return initialized = -1; + } + + long_longValue_mth = + (*env)->GetMethodID (env, long_class, "longValue", "()J"); + if (!long_longValue_mth) + { + BROKEN (env, "cannot find method java.lang.Long.longValue()J"); + return initialized = -1; + } + + + /* GThreadNativeMethodRunner */ + lcl_class = + (*env)->FindClass (env, + "gnu/java/awt/peer/gtk/GThreadNativeMethodRunner"); + if ( ! lcl_class ) + { + BROKEN (env, + "cannot find gnu.java.awt.peer.gtk.GThreadNativeMethodRunner"); + return initialized = -1; + } + + /* Pin it down. */ + runner_class = (jclass) (*env)->NewGlobalRef (env, lcl_class); + DELETE_LOCAL_REF (env, lcl_class); + if (!runner_class) + { + BROKEN (env, + "Cannot get a global reference to the class GThreadNativeMethodRunner"); + return initialized = -1; + } + + runner_ctor = (*env)->GetMethodID (env, runner_class, "", "(JJZ)V"); + if ( ! runner_ctor ) + { + BROKEN (env, + "cannot find method GThreadNativeMethodRunner.(JJZ)"); + return initialized = -1; + } + + runner_start_mth = (*env)->GetMethodID (env, runner_class, "start", "()V"); + if ( ! runner_start_mth ) + { + BROKEN (env, "cannot find method GThreadNativeMethodRunner.start()V"); + return initialized = -1; + } + + + runner_threadToThreadID_mth = + (*env)->GetStaticMethodID (env, runner_class, + "threadToThreadID", "(Ljava/lang/Thread;)I"); + if ( ! runner_threadToThreadID_mth ) + { + BROKEN (env, + "cannot find method GThreadNativeMethodRunner.threadToThreadID(java.lang.Thread)I"); + return initialized = -1; + } + + + runner_threadIDToThread_mth = + (*env)->GetStaticMethodID (env, runner_class, + "threadIDToThread", "(I)Ljava/lang/Thread;"); + if ( ! runner_threadIDToThread_mth ) + { + BROKEN (env, + "cannot find method GThreadNativeMethodRunner.threadIDToThread(I)java.lang.Thread"); + return initialized = -1; + } + + + runner_deRegisterJoinable_mth = + (*env)->GetStaticMethodID (env, runner_class, "deRegisterJoinable", + "(Ljava/lang/Thread;)V"); + if (!runner_deRegisterJoinable_mth) + { + BROKEN (env, + "cannot find method GThreadNativeMethodRunner.deRegisterJoinable(java.lang.Thread)V"); + return initialized = -1; + } + + + /* java.lang.InterruptedException */ + lcl_class = (*env)->FindClass (env, "java/lang/InterruptedException"); + if ( ! lcl_class ) + { + BROKEN (env, "cannot find class java.lang.InterruptedException"); + return initialized = -1; + } + + /* Pin it down. */ + interrupted_exception_class = (jclass) (*env)->NewGlobalRef (env, lcl_class); + DELETE_LOCAL_REF (env, lcl_class); + if (!interrupted_exception_class) + { + BROKEN (env, "Cannot make a global reference" + " to java.lang.InterruptedException"); + return initialized = -1; + } + +#ifdef JNI_VERSION_1_2 + if (HAVE_JNI_VERSION_1_2) + assert ( ! (*env)->ExceptionCheck (env)); + else +#endif + assert ( ! (*env)->ExceptionOccurred (env)); + + + return initialized = 1; +} + + - jstring jmessage; - jclass obj_class; - jobject obj; - jmethodID ctor; - int len; - char *buf; - - /* rethrow if an exception happened */ - if ((cause = (*gdk_env)->ExceptionOccurred(gdk_env)) != NULL) - { - - /* allocate local message in Java */ - len = strlen(message) + strlen(file) + 25; - buf = (char *) malloc(len); - if (buf != NULL) - { - bzero(buf, len); - sprintf(buf, "%s (at %s:%d)", message, file, line); - jmessage = (*gdk_env)->NewStringUTF(gdk_env, buf); - free(buf); - } - else - jmessage = NULL; - - /* create RuntimeException wrapper object */ - obj_class = (*gdk_env)->FindClass (gdk_env, - "java/lang/RuntimeException"); - ctor = (*gdk_env)->GetMethodID(gdk_env, obj_class, "", - "(Ljava/langString;Ljava/lang/Throwable)V"); - obj = (*gdk_env)->NewObject (gdk_env, obj_class, ctor, jmessage, cause); - - /* throw it */ - (*gdk_env)->Throw(gdk_env, (jthrowable)obj); - } -} - -/* This macro is used to include a source location in the exception message */ -#define MAYBE_RETHROW(_class, _message) \ -maybe_rethrow(_class, _message, __FILE__, __LINE__) /************************************************************************/ /* Utilities to allocate and free java.lang.Objects */ /************************************************************************/ -/* Both the mutexes and the condition variables are java.lang.Object objects, +/* The condition variables are java.lang.Object objects, * which this method allocates and returns a global ref. Note that global * refs must be explicitly freed (isn't C fun?). */ -static jobject *allocatePlainObject() { - jclass obj_class; - jobject *obj; - JNIEnv *gdk_env; - jmethodID ctor; - - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); - - obj_class = (*gdk_env)->FindClass (gdk_env, "java/lang/Object"); - MAYBE_RETHROW(gdk_env, "cannot find Object"); - - ctor = (*gdk_env)->GetMethodID(gdk_env, obj_class, "", "()V"); - MAYBE_RETHROW(gdk_env, "cannot find constructor"); - - obj = (jobject *) g_malloc (sizeof (jobject)); - *obj = (*gdk_env)->NewObject (gdk_env, obj_class, ctor); - MAYBE_RETHROW(gdk_env, "cannot allocate object"); - - *obj = (*gdk_env)->NewGlobalRef (gdk_env, *obj); - MAYBE_RETHROW(gdk_env, "cannot make global ref"); +static jobject +allocatePlainObject (JNIEnv * env) +{ + jobject lcl_obj, global_obj; + + lcl_obj = (*env)->NewObject (env, obj_class, obj_ctor); + if (!lcl_obj) + { + BROKEN (env, "cannot allocate object"); + return NULL; + } + + global_obj = (*env)->NewGlobalRef (env, lcl_obj); + DELETE_LOCAL_REF (env, lcl_obj); + if (!global_obj) + { + NEW_BROKEN (env, "cannot make global ref for a new plain Java object"); + /* Deliberate fall-through */ + } - return obj; + return global_obj; } -/* Frees a Java object given a global ref (isn't C fun?) */ -static void freePlainObject(jobject *obj) { - JNIEnv *gdk_env; +/* Frees any Java object given a global ref (isn't C fun?) */ +static void +freeObject (JNIEnv * env, jobject obj) +{ + if (obj) + { + (*env)->DeleteGlobalRef (env, obj); + /* DeleteGlobalRef can never fail */ + } +} - if (obj) { - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); - (*gdk_env)->DeleteGlobalRef (gdk_env, *obj); - MAYBE_RETHROW(gdk_env, "cannot delete global ref"); - - g_free (obj); - } +/************************************************************************/ +/* Utilities to allocate and free Java mutexes */ +/************************************************************************/ + +/* The mutexes are gnu.java.awt.peer.gtk.GThreadMutex objects, + * which this method allocates and returns a global ref. Note that global + * refs must be explicitly freed (isn't C fun?). + * + * Free this with freeObject() + */ +static jobject +allocateMutexObject (JNIEnv * env) +{ + jobject lcl_obj, global_obj; + + lcl_obj = (*env)->NewObject (env, mutex_class, mutex_ctor); + if (!lcl_obj) + { + BROKEN (env, "cannot allocate a GThreadMutex"); + return NULL; + } + + global_obj = (*env)->NewGlobalRef (env, lcl_obj); + DELETE_LOCAL_REF (env, lcl_obj); + if (!global_obj) + { + NEW_BROKEN (env, "cannot make global ref"); + /* Deliberate fallthrough */ + } + + return global_obj; } @@ -184,195 +1173,724 @@ /************************************************************************/ /* Lock a Java object */ -static void takeLock(JNIEnv *gdk_env, void *mutex) { - (*gdk_env)->MonitorEnter (gdk_env, *((jobject *)mutex)); - MAYBE_RETHROW(gdk_env, "cannot get lock"); +#define ENTER_MONITOR(env, m) \ + enterMonitor(env, m, G_STRINGIFY(m)) + +/* Return -1 on failure, 0 on success. */ +static int +enterMonitor (JNIEnv * env, jobject monitorObj, const char monName[]) +{ + if (TRACE_MONITORS) + tracing (" ", monName); + assert (monitorObj); + if ((*env)->MonitorEnter (env, monitorObj) < 0) + { + BROKEN (env, "cannot enter monitor"); + return -1; + } + return 0; } + /* Unlock a Java object */ -static void releaseLock(JNIEnv *gdk_env, void *mutex) { - (*gdk_env)->MonitorExit (gdk_env, *((jobject *)mutex)); - MAYBE_RETHROW(gdk_env, "cannot release lock"); +#define EXIT_MONITOR(env, m) \ + exitMonitor(env, m, G_STRINGIFY(m)) + +static int +exitMonitor (JNIEnv * env, jobject mutexObj, const char monName[]) +{ + if (TRACE_MONITORS) + tracing (" ", monName); + assert (mutexObj); + if ((*env)->MonitorExit (env, mutexObj) < 0) + { + BROKEN (env, "cannot exit monitor "); + return -1; + } + return 0; +} + + +/************************************************************************/ +/* Miscellaneous utilities */ +/************************************************************************/ + +/* Get the Java Thread object that corresponds to a particular thread ID. + A negative thread Id gives us a null object. + + Returns a local reference. +*/ +static jobject +getThreadFromThreadID (JNIEnv * env, gpointer gThreadID) +{ + jint threadNum = (jint) gThreadID; + jobject thread; + + if (threadNum < 0) + { + NEW_BROKEN (env, "getThreadFromThreadID asked to look up" + " a negative thread index"); + return NULL; + } + + thread = (*env)->CallStaticObjectMethod + (env, runner_class, runner_threadIDToThread_mth, threadNum); + + if (MAYBE_BROKEN (env, "cannot get Thread for threadID ")) + return NULL; + + return thread; +} + +/** Return the unique threadID of THREAD. + + Error handling: Return (gpointer) -1 on all failures, + and propagate an exception. +*/ +static gpointer +getThreadIDFromThread (JNIEnv * env, jobject thread) +{ + jint threadNum; + + if (ENABLE_EXPENSIVE_ASSERTIONS) + assert ((*env)->IsInstanceOf (env, thread, thread_class)); + + HIDE_OLD_TROUBLE (env); + + threadNum = (*env)->CallStaticIntMethod + (env, runner_class, runner_threadToThreadID_mth, thread); + + if (MAYBE_BROKEN (env, "cannot get ThreadID for a Thread ")) + { + threadNum = -1; + goto done; + } + + + SHOW_OLD_TROUBLE (); + +done: + return (gpointer) threadNum; +} + + +/************************************************************************/ +/* The Actual JNI functions that we pass to the function vector. */ +/************************************************************************/ + + +/************************************************************************/ +/* Mutex Functions */ +/************************************************************************/ + +/*** Mutex Utilities ****/ +struct mutexObj_cache +{ + jobject lockForPotentialLockersObj; /* Lock for the potentialLockers + field. Local reference. */ + jobject lockObj; /* The real lock we use. This is a GLOBAL + reference and must not be freed. */ +}; + +/* Initialize the cache of sub-locks for a particular mutex object. + + -1 on error, 0 on success. The caller is not responsible for freeing the + partially-populated cache in case of failure (but in practice does anyway) + (This actually never fails, though, since GetObjectField allegedly never + fails.) + + Guaranteed to leave all fields of the cache initialized, even if only to + zero. +*/ +static int +populate_mutexObj_cache (JNIEnv * env, jobject mutexObj, + struct mutexObj_cache *mcache) +{ + mcache->lockObj = mutexObj; /* the mutexObj is its own lock. */ + assert (mcache->lockObj); + + mcache->lockForPotentialLockersObj = (*env)->GetObjectField + (env, mutexObj, mutex_lockForPotentialLockers_fld); + /* GetObjectField can never fail. */ + + /* Retrieving a NULL object could only happen if we somehow got a + a mutex object that was not properly intialized. */ + assert (mcache->lockForPotentialLockersObj); + + return 0; +} + + +/* Clean out the mutexObj_cache, even if it was never populated. */ +static void +clean_mutexObj_cache (JNIEnv * env, struct mutexObj_cache *mcache) +{ + /* OK to pass NULL refs to DELETE_LOCAL_REF */ + DELETE_LOCAL_REF (env, mcache->lockForPotentialLockersObj); + /* mcache->lockObj is a GLOBAL reference. */ + mcache->lockObj = NULL; +} + +/* -1 on failure, 0 on success. + The mutexObj_cache is already populated for this particular object. */ +static int +mutexObj_lock (JNIEnv * env, jobject mutexObj, struct mutexObj_cache *mcache) +{ + jint potentialLockers; + + if (ENTER_MONITOR (env, mcache->lockForPotentialLockersObj)) + return -1; + + assert(mutexObj); + potentialLockers = + (*env)->GetIntField (env, mutexObj, mutex_potentialLockers_fld); + /* GetIntField() never fails. */ + + ++potentialLockers; + + (*env)->SetIntField + (env, mutexObj, mutex_potentialLockers_fld, potentialLockers); + + if (EXIT_MONITOR (env, mcache->lockForPotentialLockersObj)) + return -1; + + if (ENTER_MONITOR (env, mcache->lockObj)) + return -1; + + SHOW_OLD_TROUBLE (); + + return 0; +} + +/* Unlock a GMutex, once we're already in JNI and have already gotten the + mutexObj for it. This skips the messages that TRACE_API_CALLS would + print. + + Returns -1 on error, 0 on success. */ +static int +mutexObj_unlock (JNIEnv * env, jobject mutexObj, + struct mutexObj_cache *mcache) +{ + jint potentialLockers; + int ret = -1; /* assume failure until we suceed. */ + + /* Free the lock first, so that someone waiting for the lock can get it + ASAP. */ + /* This is guaranteed not to block. */ + if (EXIT_MONITOR (env, mcache->lockObj) < 0) + goto done; + + /* Kick down potentialLockers by one. We do this AFTER we free the lock, so + that we hold it no longer than necessary. */ + if (ENTER_MONITOR (env, mcache->lockForPotentialLockersObj) < 0) + goto done; + + potentialLockers = (*env)->GetIntField + (env, mutexObj, mutex_potentialLockers_fld); + /* GetIntField never fails */ + + assert (potentialLockers >= 1); + --potentialLockers; + + (*env)->SetIntField + (env, mutexObj, mutex_potentialLockers_fld, potentialLockers); + /* Never fails, so the JNI book says. */ + + /* Clean up. */ + if (EXIT_MONITOR (env, mcache->lockForPotentialLockersObj) < 0) + goto done; + ret = 0; + +done: + return ret; } -/* Create a mutex, which is a java.lang.Object for us */ -static GMutex *g_mutex_new_jni_impl (void) { - return (GMutex*) allocatePlainObject(); +/*** Mutex Implementations ****/ + +/* Create a mutex, which is a java.lang.Object for us. + In case of failure, we'll return NULL. Which will implicitly + cause future calls to fail. */ +static GMutex * +mutex_new_jni_impl (void) +{ + jobject mutexObj; + JNIEnv *env; + + if (TRACE_API_CALLS) + tracing ("mutex_new_jni_impl()"); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + + if (setup_cache (env) < 0) + { + mutexObj = NULL; + goto done; + } + + mutexObj = allocateMutexObject (env); + +done: + if (TRACE_API_CALLS) + tracing (" ==> %p \n", mutexObj); + + return (GMutex *) mutexObj; + } /* Lock a mutex. */ -static void g_mutex_lock_jni_impl (GMutex *mutex __attribute__((unused))) { - JNIEnv *gdk_env; +static void +mutex_lock_jni_impl (GMutex * mutex) +{ + struct mutexObj_cache mcache; + jobject mutexObj = (jobject) mutex; + JNIEnv *env; - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); + if (TRACE_API_CALLS) + tracing ("mutex_lock_jni_impl( mutexObj = %p )", mutexObj); - takeLock(gdk_env, mutex); + assert (mutexObj); + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + + if (setup_cache (env) < 0) + goto done; + + HIDE_OLD_TROUBLE (env); + + if (populate_mutexObj_cache (env, mutexObj, &mcache) < 0) + goto done; + + mutexObj_lock (env, mutexObj, &mcache); + /* No need to error check; we've already reported it in any case. */ + +done: + clean_mutexObj_cache (env, &mcache); + if (TRACE_API_CALLS) + tracing (" ==> VOID \n"); } -/* Try to lock a mutex. Actually, do not try because Java objects - * do not provide such an interface. To be at least minimally correct, - * pretend we tried and failed. - */ -static gboolean g_mutex_trylock_jni_impl - (GMutex *mutex __attribute__((unused))) + +/* Try to lock a mutex. Return TRUE if we succeed, FALSE if we fail. + FALSE on error. */ +static gboolean +mutex_trylock_jni_impl (GMutex * gmutex) { - /* XXX Shall we implement this in a VM-specific way under a flag? */ - return FALSE; + jobject mutexObj = (jobject) gmutex; + jint potentialLockers; + gboolean ret = FALSE; + JNIEnv *env; + struct mutexObj_cache mcache; + + if (TRACE_API_CALLS) + tracing ("mutex_trylock_jni_impl(mutexObj=%p)", mutexObj); + + assert (mutexObj); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + if (populate_mutexObj_cache (env, mutexObj, &mcache) < 0) + goto done; + + if (ENTER_MONITOR (env, mcache.lockForPotentialLockersObj)) + goto done; + + potentialLockers = (*env)->GetIntField + (env, mutexObj, mutex_potentialLockers_fld); + + assert (potentialLockers >= 0); + + if (potentialLockers) + { + /* Already locked. Clean up and leave. */ + EXIT_MONITOR (env, mcache.lockForPotentialLockersObj); + /* Ignore any error code from EXIT_MONITOR; there's nothing we could do + at this level, in any case. */ + goto done; + } + + /* Guaranteed not to block. */ + if (ENTER_MONITOR (env, mcache.lockObj)) + { + /* Clean up the existing lock. */ + EXIT_MONITOR (env, mcache.lockForPotentialLockersObj); + /* Ignore any error code from EXIT_MONITOR; there's nothing we could do + at this level, in any case. */ + goto done; + } + + + /* We have the monitor. Record that fact. */ + potentialLockers = 1; + (*env)->SetIntField + (env, mutexObj, mutex_potentialLockers_fld, potentialLockers); + /* Set*Field() never fails */ + + ret = TRUE; /* We have the lock. */ + + /* Clean up. */ + if (EXIT_MONITOR (env, mcache.lockForPotentialLockersObj)) + goto done; /* If we fail at this point, still keep the + main lock. */ + + SHOW_OLD_TROUBLE (); +done: + clean_mutexObj_cache (env, &mcache); + if (TRACE_API_CALLS) + tracing (" ==> %s\n", ret ? "TRUE" : "FALSE"); + return ret; } + /* Unlock a mutex. */ -static void g_mutex_unlock_jni_impl (GMutex *mutex) { - JNIEnv *gdk_env; +static void +mutex_unlock_jni_impl (GMutex * gmutex) +{ + jobject mutexObj = (jobject) gmutex; + struct mutexObj_cache mcache; + JNIEnv *env; + + if (TRACE_API_CALLS) + tracing ("mutex_unlock_jni_impl(mutexObj=%p)", mutexObj); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + assert (mutexObj); - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); + if ( populate_mutexObj_cache (env, mutexObj, &mcache) < 0) + goto done; - releaseLock(gdk_env, mutex); + (void) mutexObj_unlock (env, mutexObj, &mcache); + + SHOW_OLD_TROUBLE (); + +done: + clean_mutexObj_cache (env, &mcache); + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); } -/* Free a mutex (isn't C fun?) */ -static void g_mutex_free_jni_impl (GMutex *mutex) + + +/* Free a mutex (isn't C fun?). OK this time for it to be NULL. + No failure conditions, for a change. */ +static void +mutex_free_jni_impl (GMutex * mutex) { - freePlainObject( (jobject*)mutex ); + jobject mutexObj = (jobject) mutex; + JNIEnv *env; + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + + if (TRACE_API_CALLS) + tracing ("mutex_free_jni_impl(%p)", mutexObj); + + freeObject (env, mutexObj); + + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); } + + /************************************************************************/ /* Condition variable code */ /************************************************************************/ /* Create a new condition variable. This is a java.lang.Object for us. */ -static GCond *g_cond_new_jni_impl () { - return (GCond*)allocatePlainObject(); +static GCond * +cond_new_jni_impl (void) +{ + jobject condObj; + JNIEnv *env; + + if (TRACE_API_CALLS) + tracing ("mutex_free_jni_impl()"); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + + condObj = allocatePlainObject (env); + + if (TRACE_API_CALLS) + tracing (" ==> %p\n", condObj); + + return (GCond *) condObj; } /* Signal on a condition variable. This is simply calling Object.notify * for us. */ -static void g_cond_signal_jni_impl (GCond *cond) { - jclass lcl_class; - jmethodID signal_mth; - JNIEnv *gdk_env; +static void +cond_signal_jni_impl (GCond * gcond) +{ + JNIEnv *env; + jobject condObj = (jobject) gcond; - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); + if (TRACE_API_CALLS) + tracing ("cond_signal_jni_impl(condObj = %p)", condObj); - lcl_class = (*gdk_env)->FindClass (gdk_env, "java.lang.Object"); - MAYBE_RETHROW(gdk_env, "cannot find Object"); - - signal_mth = (*gdk_env)->GetMethodID(gdk_env, lcl_class, "notify", "()V"); - MAYBE_RETHROW(gdk_env, "cannot find Object."); + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + assert (condObj); /* Must have locked an object to call notify */ - takeLock(gdk_env, cond); + if (ENTER_MONITOR (env, condObj)) + goto done; - (*gdk_env)->CallVoidMethod(gdk_env, *(jobject*)cond, signal_mth); - MAYBE_RETHROW(gdk_env, "cannot signal mutex"); + (*env)->CallVoidMethod (env, condObj, obj_notify_mth); + if (MAYBE_BROKEN (env, "cannot signal mutex with Object.notify()")) + { + if (EXIT_MONITOR (env, condObj)) + BADLY_BROKEN1 ("Failed to unlock a monitor; the VM may deadlock."); + goto done; + } - releaseLock(gdk_env, cond); + EXIT_MONITOR (env, condObj); + + SHOW_OLD_TROUBLE (); + +done: + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); } /* Broadcast to all waiting on a condition variable. This is simply * calling Object.notifyAll for us. */ -static void g_cond_broadcast_jni_impl (GCond *cond) { - jclass lcl_class; - jmethodID bcast_mth; - JNIEnv *gdk_env; +static void +cond_broadcast_jni_impl (GCond * gcond) +{ + jobject condObj = (jobject) gcond; + JNIEnv *env; - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); + if (TRACE_API_CALLS) + tracing ("cond_broadcast_jni_impl(condObj=%p)", condObj); - lcl_class = (*gdk_env)->FindClass (gdk_env, "java.lang.Object"); - MAYBE_RETHROW(gdk_env, "cannot find Object"); - - bcast_mth = (*gdk_env)->GetMethodID(gdk_env, lcl_class, "notifyAll", "()V"); - MAYBE_RETHROW(gdk_env, "cannot find Object."); + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + assert (condObj); /* Must have locked an object to call notifyAll */ - takeLock(gdk_env, cond); + if (ENTER_MONITOR (env, condObj)) + goto done; + + (*env)->CallVoidMethod (env, condObj, obj_notifyall_mth); + if (MAYBE_BROKEN (env, "cannot broadcast to mutex with Object.notify()")) + { + EXIT_MONITOR (env, condObj); + goto done; + } - (*gdk_env)->CallVoidMethod(gdk_env, *(jobject*)cond, bcast_mth); - MAYBE_RETHROW(gdk_env, "cannot broadcast to mutex"); + EXIT_MONITOR (env, condObj); - releaseLock(gdk_env, cond); + SHOW_OLD_TROUBLE (); + +done: + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); } -/* Wait on a condition variable. For us, this simply means call +/* Wait on a condition variable. For us, this simply means calling * Object.wait. + * + * Throws a Java exception on trouble; may leave the mutexes set arbitrarily. + * XXX TODO: Further improve error recovery. */ -static void g_cond_wait_jni_impl - (GCond *cond, GMutex *mutex __attribute__((unused))) +static void +cond_wait_jni_impl (GCond * gcond, GMutex * gmutex) { - jclass lcl_class; - jmethodID wait_mth; - JNIEnv *gdk_env; - - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); - - lcl_class = (*gdk_env)->FindClass (gdk_env, "java.lang.Object"); - MAYBE_RETHROW(gdk_env, "cannot find Object"); - - wait_mth = (*gdk_env)->GetMethodID(gdk_env, lcl_class, "wait", "()V"); - MAYBE_RETHROW(gdk_env, "cannot find Object."); - - /* Must have locked an object to call wait */ - takeLock(gdk_env, cond); - - (*gdk_env)->CallVoidMethod(gdk_env, *(jobject*)cond, wait_mth); - MAYBE_RETHROW(gdk_env, "cannot wait on mutex"); + struct mutexObj_cache cache; + jobject condObj = (jobject) gcond; + jobject mutexObj = (jobject) gmutex; + JNIEnv *env; + + if (TRACE_API_CALLS) + tracing ("cond_wait_jni_impl(condObj=%p, mutexObj=%p)", + condObj, mutexObj); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + assert (condObj); + assert (mutexObj); + /* Must have locked a Java object to call wait on it */ + if (ENTER_MONITOR (env, condObj) < 0) + goto done; + + /* Our atomicity is now guaranteed; we're protected by the Java monitor on + condObj. Unlock the GMutex. */ + if (mutexObj_unlock (env, mutexObj, &cache)) + goto done; + + (*env)->CallVoidMethod (env, condObj, obj_wait_mth); + if (MAYBE_BROKEN (env, "cannot wait on condObj")) + { + EXIT_MONITOR (env, condObj); /* ignore err checking */ + goto done; + } - releaseLock(gdk_env, cond); + /* Re-acquire the lock on the GMutex. Do this while we're protected by the + Java monitor on condObj. */ + if (mutexObj_lock (env, mutexObj, &cache)) + goto done; + + EXIT_MONITOR (env, condObj); + + SHOW_OLD_TROUBLE (); + +done: + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); } -/* Wait on a condition vairable until a timeout. This is a little tricky + +/** Wait on a condition variable until a timeout. This is a little tricky * for us. We first call Object.wait(J) giving it the appropriate timeout * value. On return, we check whether an InterruptedException happened. If - * so, that is Java-speak for wait timing out. + * so, that is Java-speak for wait timing out. + * + * We return FALSE if we timed out. Return TRUE if the condition was + * signalled first, before we timed out. + * + * In case of trouble we throw a Java exception. Whether we return FALSE or + * TRUE depends upon whether the condition was raised before the trouble + * happened. + * + * I believe that this function goes to the proper lengths to try to unlock + * all of the locked mutexes and monitors, as appropriate, and that it further + * tries to make sure that the thrown exception is the current one, not any + * future cascaded one from something like a failure to unlock the monitors. */ static gboolean -g_cond_timed_wait_jni_impl - (GCond *cond, GMutex *mutex __attribute__((unused)), - GTimeVal *end_time) +cond_timed_wait_jni_impl (GCond * gcond, GMutex * gmutex, GTimeVal * end_time) { - jclass lcl_class; - jmethodID wait_mth; - JNIEnv *gdk_env; - jlong time; + JNIEnv *env; + jlong time_millisec; + jint time_nanosec; jthrowable cause; + jobject condObj = (jobject) gcond; + jobject mutexObj = (jobject) gmutex; + gboolean condRaised = FALSE; /* Condition has not been raised yet. */ + struct mutexObj_cache cache; + gboolean interrupted; + + if (TRACE_API_CALLS) + { + tracing ("cond_timed_wait_jni_impl(cond=%p, mutex=%p," + " end_time=< sec=%lu, usec=%lu >)", condObj, mutexObj, + (unsigned long) end_time->tv_sec, + (unsigned long) end_time->tv_usec); + } - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); - lcl_class = (*gdk_env)->FindClass (gdk_env, "java.lang.Object"); - MAYBE_RETHROW(gdk_env, "cannot find Object"); - - wait_mth = (*gdk_env)->GetMethodID(gdk_env, lcl_class, "wait", "(J)V"); - MAYBE_RETHROW(gdk_env, "cannot find Object."); - - time = end_time->tv_sec*1000; - time += end_time->tv_usec/1000; + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + time_millisec = end_time->tv_sec * 1000 + end_time->tv_usec / 1000; + time_nanosec = 1000 * (end_time->tv_usec % 1000); /* Must have locked an object to call wait */ - takeLock(gdk_env, cond); + if (ENTER_MONITOR (env, condObj) < 0) + goto done; + + if (mutexObj_unlock (env, mutexObj, &cache) < 0) + { + if (EXIT_MONITOR (env, condObj) < 0) + criticalMsg + ("Unable to unlock an existing lock on a condition; your proram may deadlock"); + goto done; + } + + + (*env)->CallVoidMethod (env, condObj, obj_wait_nanotime_mth, + time_millisec, time_nanosec); + + /* If there was trouble, save that fact, and the reason for the trouble. We + want to respond to this condition as fast as possible. */ + cause = (*env)->ExceptionOccurred (env); + + if ( ! cause ) + { + condRaised = TRUE; /* condition was signalled */ + } + else if ((*env)->IsInstanceOf (env, cause, interrupted_exception_class)) + { + condRaised = FALSE; /* Condition was not raised before timeout. + (This is redundant with the initialization + of condRaised above) */ + (*env)->ExceptionClear (env); /* Clear the InterruptedException. */ + cause = NULL; /* no pending cause now. */ + } + else + { + interrupted = FALSE; /* Trouble, but not because of + InterruptedException. Assume the condition + was not raised. */ + /* Leave condRaised set to FALSE */ + } - (*gdk_env)->CallVoidMethod(gdk_env, *(jobject*)cond, wait_mth, time); + /* Irrespective of whether there is a pending problem to report, go ahead + and try to clean up. This may end up throwing an exception that is + different from the one that was thrown by the call to Object.wait(). + So we will override it with the first exception (don't want to have + cascading problems). */ + if (mutexObj_lock (env, mutexObj, &cache) && !cause) + { + cause = (*env)->ExceptionOccurred (env); + assert (cause); + } - if ((cause = (*gdk_env)->ExceptionOccurred(gdk_env)) != NULL) { - jclass intr = (*gdk_env)->FindClass (gdk_env, "java.lang.InterruptedException"); - if ( (*gdk_env)->IsInstanceOf(gdk_env, cause, intr) ) { - releaseLock(gdk_env, cond); - return FALSE; - } else { - MAYBE_RETHROW(gdk_env, "error in timed wait"); + if (EXIT_MONITOR (env, condObj) && !cause) + { + cause = (*env)->ExceptionOccurred (env); + assert (cause); } - } - releaseLock(gdk_env, cond); + if (cause) /* Raise the first cause. */ + { + BROKEN_CAUSE (env, cause, "error in timed wait or during its cleanup"); + goto done; + } - return TRUE; + SHOW_OLD_TROUBLE (); + +done: + if (TRACE_API_CALLS) + tracing (" ==> condRaised = %s\n", condRaised ? "TRUE" : "FALSE"); + return condRaised; } -/* Free a condition variable. (isn't C fun?) */ -static void g_cond_free_jni_impl (GCond *cond) { - freePlainObject( (jobject*)cond ); + +/* Free a condition variable. (isn't C fun?). Can not fail. */ +static void +cond_free_jni_impl (GCond * cond) +{ + jobject condObj = (jobject) cond; + JNIEnv *env; + + if (TRACE_API_CALLS) + tracing ("cond_free_jni_impl(condObj = %p)", condObj); + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + + freeObject (env, condObj); + + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); } @@ -380,128 +1898,614 @@ /* Thread-local data code */ /************************************************************************/ -/* Create a new thread-local key. We use java.lang.ThreadLocal objects - * for this. +/* Create a new thread-local key. We use java.lang.ThreadLocal objects + * for this. This returns the pointer representation of a Java global + * reference. + * + * We will throw a Java exception and return NULL in case of failure. */ -static GPrivate *g_private_new_jni_impl - (GDestroyNotify notify __attribute__((unused))) +static GPrivate * +private_new_jni_impl (GDestroyNotify notify __attribute__ ((unused))) { - jclass lcl_class; - jobject *local; - JNIEnv *gdk_env; - jmethodID ctor; - - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); + JNIEnv *env; + jobject lcl_key; + jobject global_key; + GPrivate *gkey = NULL; /* Error return code */ + + if (TRACE_API_CALLS) + tracing ("private_new_jni_impl()"); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + lcl_key = (*env)->NewObject (env, threadlocal_class, threadlocal_ctor); + if ( ! lcl_key ) + { + BROKEN (env, "cannot allocate a ThreadLocal"); + goto done; + } - lcl_class = (*gdk_env)->FindClass (gdk_env, "java.lang.ThreadLocal"); - MAYBE_RETHROW(gdk_env, "cannot find ThreadLocal"); + global_key = ((*env)->NewGlobalRef (env, lcl_key)); + DELETE_LOCAL_REF (env, lcl_key); + if ( ! global_key) + { + NEW_BROKEN (env, "cannot create a GlobalRef to a new ThreadLocal"); + goto done; + } - ctor = (*gdk_env)->GetMethodID(gdk_env, lcl_class, "", "()V"); - MAYBE_RETHROW(gdk_env, "cannot find ThreadLocal."); + gkey = (GPrivate *) global_key; + SHOW_OLD_TROUBLE (); - local = (jobject *) g_malloc (sizeof (jobject)); - *local = (*gdk_env)->NewObject(gdk_env, lcl_class, ctor); - MAYBE_RETHROW(gdk_env, "cannot allocate a ThreadLocal"); - - *local = ((*gdk_env)->NewGlobalRef (gdk_env, *local)); - MAYBE_RETHROW(gdk_env, "cannot create a GlobalRef"); +done: + if (TRACE_API_CALLS) + tracing (" ==> %p\n", (void *) gkey); - return (GPrivate*) local; + return gkey; } /* Get this thread's value for a thread-local key. This is simply - * ThreadLocal.get for us. + * ThreadLocal.get for us. Return NULL if no value. (I can't think of + * anything else to do.) */ -static gpointer g_private_get_jni_impl (GPrivate *private) { - jclass lcl_class; - jobject lcl_obj; - JNIEnv *gdk_env; - jmethodID get_mth; - jclass int_class; - jmethodID val_mth; - jint int_val; - - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); +static gpointer +private_get_jni_impl (GPrivate * gkey) +{ + JNIEnv *env; + jobject val_wrapper; + jobject keyObj = (jobject) gkey; + gpointer thread_specific_data = NULL; /* Init to the error-return value */ + + jlong val; + + if (TRACE_API_CALLS) + tracing ("private_get_jni_impl(keyObj=%p)", keyObj); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + val_wrapper = (*env)->CallObjectMethod (env, keyObj, threadlocal_get_mth); + if (MAYBE_BROKEN (env, "cannot find thread-local object")) + goto done; + + if (! val_wrapper ) + { + /* It's Java's "null" object. No ref found. This is OK; we must never + have set a value in this thread. Note that this next statement is + not necessary, strictly speaking, since we're already initialized to + NULL. A good optimizing C compiler will detect that and optimize out + this statement. */ + thread_specific_data = NULL; + goto done; + } - lcl_class = (*gdk_env)->FindClass (gdk_env, "java.lang.ThreadLocal"); - MAYBE_RETHROW(gdk_env, "cannot find ThreadLocal"); + val = (*env)->CallLongMethod (env, val_wrapper, long_longValue_mth); - get_mth = (*gdk_env)->GetMethodID(gdk_env, lcl_class, "get", "()Ljava/lang/Object;"); - MAYBE_RETHROW(gdk_env, "cannot find ThreadLocal."); + if (MAYBE_BROKEN (env, "cannot get thread local value")) + goto done; - lcl_obj = (*gdk_env)->CallObjectMethod(gdk_env, *(jobject*)private, get_mth); - MAYBE_RETHROW(gdk_env, "cannot find thread-local object"); + thread_specific_data = (gpointer) (intptr_t) val; - int_class = (*gdk_env)->FindClass (gdk_env, "java.lang.Integer"); - MAYBE_RETHROW(gdk_env, "cannot find Integer"); + /* Only re-raise the old pending exception if a new one hasn't come along to + supersede it. */ + SHOW_OLD_TROUBLE (); - val_mth = (*gdk_env)->GetMethodID(gdk_env, int_class, "intValue", "()I"); - MAYBE_RETHROW(gdk_env, "cannot find Integer."); +done: - int_val = (*gdk_env)->CallIntMethod(gdk_env, lcl_obj, val_mth); - MAYBE_RETHROW(gdk_env, "cannot get thread local value"); + if (TRACE_API_CALLS) + tracing (" ==> %p\n", thread_specific_data); - return (gpointer) int_val; + return thread_specific_data; } -/* Set this thread's value for a thread-local key. This is simply - * ThreadLocal.set for us. +/* Set this thread's value for a thread-local key. This is simply + * ThreadLocal.set() for us. */ -static void g_private_set_jni_impl (GPrivate *private, gpointer data) { - jclass lcl_class, int_class; - jobject lcl_obj; - JNIEnv *gdk_env; - jmethodID new_int, set_mth; +static void +private_set_jni_impl (GPrivate * gkey, gpointer thread_specific_data) +{ + JNIEnv *env; + jobject val_wrapper; + jobject keyObj = (jobject) gkey; + + + if (TRACE_API_CALLS) + tracing ("private_set_jni_impl(keyObj=%p, thread_specific_data=%p)", + keyObj, thread_specific_data); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + /* We are just going to always use a Java long to represent a C pointer. + Otherwise all of the code would end up being conditionalized for various + pointer sizes, and that seems like too much of a hassle, in order to save + a paltry few bytes, especially given the horrendous overhead of JNI in + any case. + */ + + val_wrapper = (*env)->NewObject (env, long_class, long_ctor, + (jlong) (intptr_t) thread_specific_data); + if ( ! val_wrapper ) + { + BROKEN (env, "cannot create a java.lang.Long"); + goto done; + } + + /* At this point, we now have set lcl_obj as a numeric class that wraps + around the thread-specific data we were given. */ + (*env)->CallVoidMethod (env, keyObj, threadlocal_set_mth, val_wrapper); + if (MAYBE_BROKEN (env, "cannot set thread local value")) + goto done; + + SHOW_OLD_TROUBLE (); +done: + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); +} + + +/** Create an object of type gnu.java.awt.peer.gtk.GThreadNativeMethodRunner. + Run it. + + We need to create joinable threads. We handle the notion of a joinable + thread by determining whether or not we are going to maintain a permanent + hard reference to it until it croaks. + + Posix does not appear to have a Java-like concept of daemon threads, where + the JVM will exit when there are only daemon threads running. + + Error handling: + + To quote from the glib guide: + "GError should only be used to report recoverable runtime errors, never + to report programming errors." + + So how do we consider the failure to create a thread? Well, each of the + failure cases in this function are discussed, and none of them are really + recoverable. + + The glib library is really designed so that you should fail + catastrophically in case of "programming errors". The only error defined + for the GThread functions is G_THREAD_ERROR_AGAIN, and that for + thread_create. + + Most of these GThread functions could fail if we run out of memory, for + example, but the only one capable of reporting that fact is + thread_create. */ +static void +thread_create_jni_impl (GThreadFunc func, + gpointer data, + gulong stack_size __attribute__((unused)), + gboolean joinable, + gboolean bound __attribute__((unused)), + GThreadPriority gpriority, + /* This prototype is horrible. threadIDp is actually + a gpointer to the thread's thread-ID. Which is, + of course, itself a gpointer-typed value. Ouch. */ + gpointer threadIDp, + /* Do not touch the GError stuff unless you have + RECOVERABLE trouble. There is no recoverable + trouble in this implementation. */ + GError **errorp) +{ + JNIEnv *env; + jboolean jjoinable = joinable; + jobject newThreadObj; + gpointer threadID; /* to be filled in */ + + if (TRACE_API_CALLS) + tracing ("thread_create_jni_impl(func=%p, data=%p, joinable=%s," + " threadIDp=%p, *(int *) threadIDp = %d)", + (void *) func, data, joinable ? "TRUE" : "FALSE", + threadIDp, *(int *) threadIDp); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + { + /* The failed call to setup the cache is certainly not recoverable; + not appropriate for G_THREAD_ERROR_AGAIN. */ + *(gpointer *) threadIDp = NULL; + goto done; + } + HIDE_OLD_TROUBLE (env); + + /* If a thread is joinable, then notify its constructor. The constructor + will enter a hard reference for it, and the hard ref. won't go away until + the thread has been joined. */ + newThreadObj = + (*env)->NewObject (env, runner_class, runner_ctor, + (jlong) (intptr_t) func, (jlong) (intptr_t) data, + jjoinable); + if ( ! newThreadObj ) + { + BROKEN (env, "creating a new thread failed in the constructor"); + *(gpointer *) threadIDp = NULL; + /* The failed call to the constructor does not throw any errors such + that G_THREAD_ERROR_AGAIN is appropriate. No other recoverable + errors defined. Once again, we go back to the VM. */ + goto done; + } + + if (threadObj_set_priority (env, newThreadObj, gpriority) < 0) + { + *(gpointer *) threadIDp = NULL; + /* None of these possible exceptions from Thread.setPriority() are + recoverable, so they are not appropriate for EAGAIN. So we should + fail. */ + goto done; + } + + (*env)->CallVoidMethod (env, runner_class, runner_start_mth); + + if (MAYBE_BROKEN (env, "starting a new thread failed")) + { + *(gpointer *) threadIDp = NULL; + /* The only exception Thread.start() throws is + IllegalStateException. And that would indicate a programming error. + + So there are no situations such that G_THREAD_ERROR_AGAIN would be + OK. + + So, we don't use g_set_error() here to perform any error reporting. + */ + goto done; + } + + threadID = getThreadIDFromThread (env, newThreadObj); + + *(gpointer *) threadIDp = threadID; + SHOW_OLD_TROUBLE (); + +done: + if (TRACE_API_CALLS) + tracing (" ==> (threadID = %p) \n", threadID); +} + + +/* Wraps a call to g_thread_yield. */ +static void +thread_yield_jni_impl (void) +{ + JNIEnv *env; + + if (TRACE_API_CALLS) + tracing ("thread_yield_jni_impl()"); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + (*env)->CallStaticVoidMethod (env, thread_class, thread_yield_mth); + if (MAYBE_BROKEN (env, "Thread.yield() failed")) + goto done; + + SHOW_OLD_TROUBLE (); + +done: + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); +} + + +static void +thread_join_jni_impl (gpointer threadID) +{ + JNIEnv *env; + jobject threadObj = NULL; + + if ( TRACE_API_CALLS ) + tracing ("thread_join_jni_impl(threadID=%p) ", threadID); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + HIDE_OLD_TROUBLE (env); + + threadObj = getThreadFromThreadID (env, threadID); + if ( ! threadObj ) /* Already reported with BROKEN */ + goto done; + + (*env)->CallVoidMethod (env, threadObj, thread_join_mth); + if (MAYBE_BROKEN (env, "Thread.join() failed")) + goto done; + - (*gdk_vm)->GetEnv(gdk_vm, (void **)&gdk_env, JNI_VERSION_1_1); + (*env)->CallStaticVoidMethod + (env, runner_class, runner_deRegisterJoinable_mth, threadObj); + if (MAYBE_BROKEN (env, "Thread.deRegisterJoinableThread() failed")) + goto done; - int_class = (*gdk_env)->FindClass (gdk_env, "java.lang.Integer"); - MAYBE_RETHROW(gdk_env, "cannot find Integer"); + SHOW_OLD_TROUBLE (); - new_int = (*gdk_env)->GetMethodID(gdk_env, int_class, "", "(I)V"); - MAYBE_RETHROW(gdk_env, "cannot find Integer."); +done: + DELETE_LOCAL_REF (env, threadObj); + if (TRACE_API_CALLS) + tracing (" ==> VOID \n"); +} + +/* Terminate the current thread. Unlike pthread_exit(), here we do not need + to bother with a return value or exit value for the thread which is about + to croak. (The gthreads abstraction doesn't use it.) However, we *do* + need to bail immediately. We handle this with Thread.stop(), which is + a deprecated method. + + It's deprecated since we might leave objects protected by monitors in + half-constructed states on the way out -- Thread.stop() throws a + ThreadDeath exception, which is usually unchecked. There is no good + solution that I can see. */ +static void +thread_exit_jni_impl (void) +{ + JNIEnv *env; + jobject this_thread; + + if (TRACE_API_CALLS) + tracing ("thread_exit_jni_impl() "); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + goto done; + + HIDE_OLD_TROUBLE (env); + + this_thread = (*env)-> + CallStaticObjectMethod (env, thread_class, thread_current_mth); + + if ( ! this_thread ) + { + BROKEN (env, "cannot get current thread"); + goto done; + } + + (*env)->CallVoidMethod (env, this_thread, thread_stop_mth); + if (MAYBE_BROKEN (env, "cannot call Thread.stop() on current thread")) + goto done; + + SHOW_OLD_TROUBLE (); + +done: + if (TRACE_API_CALLS) + tracing (" ==> VOID \n"); +} + + +/* Translate a GThreadPriority to a Java priority level. */ +static jint +javaPriorityLevel (GThreadPriority priority) +{ + /* We have these fields in java.lang.Thread to play with: + + static int MIN_PRIORITY The minimum priority that a thread can have. + static int NORM_PRIORITY The default priority that is assigned to a + thread. + static int MAX_PRIORITY The maximum priority that a thread can have. + + We get these from the header file generated by javah, even though they're + documented as being 1, 5, and 10. + */ + static const jint minJPri = + gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_MIN_PRIORITY; + static const jint normJPri = + gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_NORM_PRIORITY; + static const jint maxJPri = + gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_MAX_PRIORITY; + + switch (priority) + { + case G_THREAD_PRIORITY_LOW: + return minJPri; + break; + + default: + assert_not_reached (); + /* Deliberate fall-through if assertions are turned off; also shuts up + GCC warnings if they're turned on. */ + case G_THREAD_PRIORITY_NORMAL: + return normJPri; + break; + + case G_THREAD_PRIORITY_HIGH: + return (normJPri + maxJPri) / 2; + break; + + case G_THREAD_PRIORITY_URGENT: + return maxJPri; + break; + } +} + + +/** It would be safe not to implement this, according to the JNI docs, since + not all platforms do thread priorities. However, we might as well + provide the hint for those who want it. +*/ +static void +thread_set_priority_jni_impl (gpointer gThreadID, GThreadPriority gpriority) +{ + jobject threadObj = NULL; + JNIEnv *env; + + if (TRACE_API_CALLS) + tracing ("thread_set_priority_jni_impl(gThreadID=%p, gpriority = %u) ", + gThreadID, gpriority); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + + if (setup_cache (env) < 0) + goto done; + + HIDE_OLD_TROUBLE (env); + + + threadObj = getThreadFromThreadID (env, gThreadID); + if ( ! threadObj) /* Reported with BROKEN already. */ + goto done; + + if (threadObj_set_priority (env, threadObj, gpriority)) + goto done; + + SHOW_OLD_TROUBLE (); - lcl_obj = (*gdk_env)->NewObject(gdk_env, int_class, new_int, (jint)data); - MAYBE_RETHROW(gdk_env, "cannot create an Integer"); +done: + DELETE_LOCAL_REF (env, threadObj); + + if (TRACE_API_CALLS) + tracing (" ==> VOID\n"); +} + + +/** It would be safe not to implement this, according to the JNI docs, since + not all platforms do thread priorities. However, we might as well + provide the hint for those who want it. + + -1 on failure, 0 on success. */ +static int +threadObj_set_priority (JNIEnv * env, jobject threadObj, + GThreadPriority gpriority) +{ + jint javaPriority = javaPriorityLevel (gpriority); + (*env)->CallVoidMethod (env, threadObj, thread_setPriority_mth, + javaPriority); + return MAYBE_BROKEN (env, "Thread.setPriority() failed"); +} + + +/** Return the result of Thread.currentThread(), a static method. */ +static void +thread_self_jni_impl (/* Another confusing glib prototype. This is + actually a gpointer to the thread's thread-ID. + Which is, of course, a gpointer. */ + gpointer my_thread_IDp) +{ + JNIEnv *env; + jobject this_thread; + gpointer my_threadID; + + if (TRACE_API_CALLS) + tracing ("thread_self_jni_impl(my_thread_IDp=%p)", my_thread_IDp); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + + if (setup_cache (env) < 0) + return; + + HIDE_OLD_TROUBLE (env); + + this_thread = (*env)-> + CallStaticObjectMethod (env, thread_class, thread_current_mth); + if (! this_thread ) + { + BROKEN (env, "cannot get current thread"); + my_threadID = NULL; + goto done; + } + + my_threadID = getThreadIDFromThread (env, this_thread); + SHOW_OLD_TROUBLE (); + +done: + if (TRACE_API_CALLS) + tracing (" ==> (my_threadID = %p) \n", my_threadID); + + *(gpointer *) my_thread_IDp = my_threadID; +} - lcl_class = (*gdk_env)->FindClass (gdk_env, "java.lang.ThreadLocal"); - MAYBE_RETHROW(gdk_env, "cannot find ThreadLocal"); - set_mth = (*gdk_env)->GetMethodID(gdk_env, lcl_class, "set", "(Ljava/lang/Object;)V"); - MAYBE_RETHROW(gdk_env, "cannot find ThreadLocal."); +static gboolean +thread_equal_jni_impl (gpointer thread1, gpointer thread2) +{ + JNIEnv *env; + + gpointer threadID1 = *(gpointer *) thread1; + gpointer threadID2 = *(gpointer *) thread2; + + jobject thread1_obj = NULL; + jobject thread2_obj = NULL; + gboolean ret; + + if (TRACE_API_CALLS) + tracing ("thread_equal_jni_impl(threadID1=%p, threadID2=%p)", + threadID1, threadID2); + + (*the_vm)->GetEnv (the_vm, (void **) &env, JNI_VERSION_1_1); + if (setup_cache (env) < 0) + { + ret = FALSE; /* what is safer? We really don't ever want + to return from here. */ + goto done; + } + + HIDE_OLD_TROUBLE (env); + thread1_obj = getThreadFromThreadID (env, threadID1); + thread2_obj = getThreadFromThreadID (env, threadID2); + + ret = (*env)->CallBooleanMethod (env, thread1_obj, + thread_equals_mth, thread2_obj); + + if (MAYBE_BROKEN (env, "Thread.equals() failed")) + { + ret = FALSE; + goto done; + } - (*gdk_env)->CallVoidMethod(gdk_env, *(jobject*)private, set_mth, lcl_obj); - MAYBE_RETHROW(gdk_env, "cannot set thread local value"); + SHOW_OLD_TROUBLE (); + + +done: + DELETE_LOCAL_REF (env, thread1_obj); + DELETE_LOCAL_REF (env, thread2_obj); + + if (TRACE_API_CALLS) + tracing (" ==> %s\n", ret ? "TRUE" : "FALSE"); + + return ret; } + + /************************************************************************/ /* GLIB interface */ /************************************************************************/ /* set of function pointers to give to glib. */ -GThreadFunctions g_thread_jni_functions = -{ - g_mutex_new_jni_impl, /* mutex_new */ - g_mutex_lock_jni_impl, /* mutex_lock */ - g_mutex_trylock_jni_impl, /* mutex_try_lock */ - g_mutex_unlock_jni_impl, /* mutex_unlock */ - g_mutex_free_jni_impl, /* mutex_free */ - g_cond_new_jni_impl, /* cond_new */ - g_cond_signal_jni_impl, /* cond_signal */ - g_cond_broadcast_jni_impl, /* cond_broadcast */ - g_cond_wait_jni_impl, /* cond_wait */ - g_cond_timed_wait_jni_impl, /* cond_timed_wait */ - g_cond_free_jni_impl, /* cond_free */ - g_private_new_jni_impl, /* private_new */ - g_private_get_jni_impl, /* private_get */ - g_private_set_jni_impl, /* private_set */ - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL +GThreadFunctions portable_native_sync_jni_functions = { + mutex_new_jni_impl, /* mutex_new */ + mutex_lock_jni_impl, /* mutex_lock */ + mutex_trylock_jni_impl, /* mutex_trylock */ + mutex_unlock_jni_impl, /* mutex_unlock */ + mutex_free_jni_impl, /* mutex_free */ + cond_new_jni_impl, /* cond_new */ + cond_signal_jni_impl, /* cond_signal */ + cond_broadcast_jni_impl, /* cond_broadcast */ + cond_wait_jni_impl, /* cond_wait */ + cond_timed_wait_jni_impl, /* cond_timed_wait */ + cond_free_jni_impl, /* cond_free */ + private_new_jni_impl, /* private_new */ + private_get_jni_impl, /* private_get */ + private_set_jni_impl, /* private_set */ + thread_create_jni_impl, /* thread_create */ + thread_yield_jni_impl, /* thread_yield */ + thread_join_jni_impl, /* thread_join */ + thread_exit_jni_impl, /* thread_exit */ + thread_set_priority_jni_impl, /* thread_set_priority */ + thread_self_jni_impl, /* thread_self */ + thread_equal_jni_impl, /* thread_equal */ }; + +/* Keep c-font-lock-extra-types in alphabetical order. */ +/* Local Variables: */ +/* c-file-style: "gnu" */ +/* c-font-lock-extra-types: ("\\sw+_t" "gboolean" "GError" "gpointer" + "GPrivate" "GThreadFunc" "GThreadFunctions" "GThreadPriority" + "gulong" + "JNIEnv" + "jboolean" "jclass" "jint" "jlong" "jobject" "jstring" "jthrowable" ) */ +/* End: */ Index: NEWS =================================================================== RCS file: /cvsroot/classpath/classpath/NEWS,v retrieving revision 1.39 diff -I*.class -u -r1.39 NEWS --- NEWS 2 May 2004 13:47:32 -0000 1.39 +++ NEWS 6 Jun 2004 04:08:36 -0000 @@ -1,3 +1,19 @@ +New in release 0.10 (in preparation) + +* Fixed the code enabled by the --portable-native-sync configure option; it + had been broken since Classpath release 0.06, when we upgraded to GTK+2. + + Explanation: Classpath's AWT peers use GTK+. GTK+ uses GLIB. GLIB by + default uses the platform's native threading model -- pthreads in most cases. + If the Java runtime doesn't use the native threading model, then you should + specify --portable-native-sync when configuring Classpath, so that GLIB will + use the Java threading primitives instead. + +* We intend that the next release of GNU Classpath will require the VM + to provide JNI 1.2. Classpath currently uses only JNI 1.1, except for + one JNI 1.2 function: GetEnv(), in the JNI Invocation API. + If this poses problems, please raise them on the classpath mailing list. + New in release 0.09 (2004/02/02) * Includes updated GNU JAXP version from 2004-02-01. --------------050105010809020202020200-- From MAILER-DAEMON Sun Jun 06 00:37:26 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BWpPS-0000Sg-BY for mharc-commit-classpath@gnu.org; Sun, 06 Jun 2004 00:37:26 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BWpPQ-0000S1-N6 for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:37:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BWpPP-0000Ri-5O for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:37:24 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BWpPO-0000RY-Uy for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:37:22 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BWpOe-000768-IU for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:36:36 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 45459622EB for ; Sun, 6 Jun 2004 04:36:35 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19177-09 for ; Sun, 6 Jun 2004 04:36:34 +0000 (GMT) Received: from reali.dnsalias.net (212-41-71-43.adsl.solnet.ch [212.41.71.43]) by mail01.solnet.ch (Postfix) with ESMTP id 2BA0A622C1 for ; Sun, 6 Jun 2004 04:36:34 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id C9782D42AC; Sun, 6 Jun 2004 06:03:29 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040606040329.C9782D42AC@reali.dnsalias.net> Date: Sun, 6 Jun 2004 06:03:29 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040606 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Jun 2004 04:37:25 -0000 From MAILER-DAEMON Sun Jun 06 00:54:56 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BWpgO-0003gi-67 for mharc-commit-classpath@gnu.org; Sun, 06 Jun 2004 00:54:56 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BWpgM-0003g8-NX for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:54:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BWpgL-0003fd-M4 for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:54:53 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BWpgL-0003fF-Fx for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:54:53 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BWpfL-0000lv-PE for commit-classpath@gnu.org; Sun, 06 Jun 2004 00:53:52 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i564rpx97938 for ; Sun, 6 Jun 2004 00:53:51 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i564row72646; Sun, 6 Jun 2004 00:53:50 -0400 Message-ID: <40C2A35C.9060901@watson.ibm.com> Date: Sun, 06 Jun 2004 00:53:48 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------010406030206060203020508" Subject: vmintegration.texinfo change: Added info on JNI requirements X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Jun 2004 04:54:55 -0000 This is a multi-part message in MIME format. --------------010406030206060203020508 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------010406030206060203020508 Content-Type: text/plain; name="vmintegration-requirements.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="vmintegration-requirements.patch" 2004-06-06 Steven Augart * doc/vmintegration.texinfo (JNI Version): New section. (VM Threading Model): New section. (Miscellaneous VM Requirements): New chapter. Index: doc/vmintegration.texinfo =================================================================== RCS file: /cvsroot/classpath/classpath/doc/vmintegration.texinfo,v retrieving revision 1.10 diff -I*.class -u -r1.10 vmintegration.texinfo --- doc/vmintegration.texinfo 6 Jun 2004 03:45:56 -0000 1.10 +++ doc/vmintegration.texinfo 6 Jun 2004 04:33:15 -0000 @@ -65,7 +65,7 @@ * Initialization:: Initializing the classes * Classpath Hooks:: Hooks from Classpath to the VM * VM Hooks:: Hooks from the underlying VM to Classpath - +* Miscellaneous VM Requirements:: @end menu @node Introduction, Initialization, Top, Top @@ -224,7 +224,7 @@ @end itemize -@node VM Hooks, , Classpath Hooks, Top +@node VM Hooks, Miscellaneous VM Requirements, Classpath Hooks, Top @comment node-name, next, previous, up @chapter VM Hooks @@ -293,5 +293,41 @@ @end itemize +@node Miscellaneous VM Requirements, , VM Hooks, Top +@comment node-name, next, previous, up +@chapter Miscellaneous VM Requirements + +Classpath places a few requirements on the VM that uses it. + +@menu +* JNI Version:: +* VM Threading Model:: +@end menu + +@node JNI Version, VM Threading Model, Miscellaneous VM Requirements, Miscellaneous VM Requirements +@comment node-name, next, previous, up +@section JNI Version + +Classpath currently uses only JNI 1.1, except for one JNI 1.2 function +in the JNI Invocation API: GetEnv(). And GetEnv() is only used in the +--portable-native-sync code, so it's only actually used by Jikes RVM +and Kaffe. + +A future direction will probably be to require that all VMs provide +JNI 1.2. If this poses problems, please raise them on the classpath +mailing list. + +@node VM Threading Model, , JNI Version, Miscellaneous VM Requirements +@comment node-name, next, previous, up +@section VM Threading Model + +Classpath's AWT peers use GTK+. GTK+ uses GLIB. GLIB by default uses +the platform's native threading model -- pthreads in most cases. + +If the Java runtime doesn't use the native threading model, then you +should specify --portable-native-sync when configuring Classpath, so +that GLIB will use the Java threading primitives instead. @bye + + --------------010406030206060203020508-- From MAILER-DAEMON Mon Jun 07 00:05:04 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BXBNg-0001Y6-LX for mharc-commit-classpath@gnu.org; Mon, 07 Jun 2004 00:05:04 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BXBNf-0001Xz-5y for commit-classpath@gnu.org; Mon, 07 Jun 2004 00:05:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BXBNd-0001Xn-N9 for commit-classpath@gnu.org; Mon, 07 Jun 2004 00:05:02 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BXBNc-0001Xk-NN for commit-classpath@gnu.org; Mon, 07 Jun 2004 00:05:01 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BXBMW-00047T-CI for commit-classpath@gnu.org; Mon, 07 Jun 2004 00:03:52 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 8F07A623CD for ; Mon, 7 Jun 2004 04:03:51 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 80191-06 for ; Mon, 7 Jun 2004 04:03:50 +0000 (GMT) Received: from reali.dnsalias.net (212-41-78-186.adsl.solnet.ch [212.41.78.186]) by mail01.solnet.ch (Postfix) with ESMTP id 70B06623F0 for ; Mon, 7 Jun 2004 04:03:50 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id C7B80D979D; Mon, 7 Jun 2004 06:00:44 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040607040044.C7B80D979D@reali.dnsalias.net> Date: Mon, 7 Jun 2004 06:00:44 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040607 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Jun 2004 04:05:03 -0000 From MAILER-DAEMON Mon Jun 07 17:10:56 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BXROS-00051x-Dn for mharc-commit-classpath@gnu.org; Mon, 07 Jun 2004 17:10:56 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BXROQ-00050f-8K for commit-classpath@gnu.org; Mon, 07 Jun 2004 17:10:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BXROP-0004zv-3x for commit-classpath@gnu.org; Mon, 07 Jun 2004 17:10:53 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BXROO-0004zm-Uu for commit-classpath@gnu.org; Mon, 07 Jun 2004 17:10:53 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BXRN0-0003rc-RR for commit-classpath@gnu.org; Mon, 07 Jun 2004 17:09:27 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BXQWI-0007e2-9n for commit-classpath@gnu.org; Mon, 07 Jun 2004 16:14:58 -0400 From: "Chris Burdess" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 8731 User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-gb) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.7 X-Apparently-From: 82.69.70.8 X-Copy-To: Array Message-Id: Date: Mon, 07 Jun 2004 17:10:53 -0400 Subject: [bugs #8731] inetlib handler classes have wrong names X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Jun 2004 21:10:54 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #8731] Latest Modifications: Changes by: Chris Burdess 'Date: Mon 06/07/2004 at 20:14 (Europe/Paris) What | Removed | Added --------------------------------------------------------------------------- Status | Open | Closed ------------------ Additional Follow-up Comments ---------------------------- Added URLStreamHandler handler class with name "Handler" for finger URL scheme. /**************************************************************************/ [bugs #8731] Full Item Snapshot: URL: Project: classpath Submitted by: Tom Tromey On: Thu 04/29/2004 at 01:18 Severity: 1 - None Resolution: Fixed Assigned to: dog Status: Closed Platform Version: None Summary: inetlib handler classes have wrong names Original Submission: The classes in the inetlib protocol handler packages don't have the names expected by the classpath core code. E.g., where inetlib has NNTPConnection, Classpath expects just "Connection". Until this change is made, inetlib classes can't be used directly by classpath as protocol handlers. Follow-up Comments ------------------ ------------------------------------------------------- Date: Mon 06/07/2004 at 20:14 By: dog Added URLStreamHandler handler class with name "Handler" for finger URL scheme. ------------------------------------------------------- Date: Mon 05/03/2004 at 16:27 By: dog Classpath expects to see a class "Handler" in the search path for URL stream handlers. So far we only have 2 stream handlers in inetlib (for FTP and Gopher). I have changed the names of these, so they can be looked up automatically by Classpath. The protocol handlers for the various mailbox/mailto protocols should probably leverage the JavaMail API. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Mon Jun 07 17:44:59 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BXRvO-00067E-UR for mharc-commit-classpath@gnu.org; Mon, 07 Jun 2004 17:44:59 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BXRvN-00065s-52 for commit-classpath@gnu.org; Mon, 07 Jun 2004 17:44:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BXRvL-00064L-48 for commit-classpath@gnu.org; Mon, 07 Jun 2004 17:44:56 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BXRvL-00064H-0z for commit-classpath@gnu.org; Mon, 07 Jun 2004 17:44:55 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BXRuL-00028F-Lf for commit-classpath@gnu.org; Mon, 07 Jun 2004 17:43:53 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i57Lhqx80736 for ; Mon, 7 Jun 2004 17:43:52 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i57Lhpg85310; Mon, 7 Jun 2004 17:43:51 -0400 Message-ID: <40C4E197.3020507@watson.ibm.com> Date: Mon, 07 Jun 2004 17:43:51 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------050302000802030209080104" Subject: c-font-lock-extra-types.patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Jun 2004 21:44:57 -0000 This is a multi-part message in MIME format. --------------050302000802030209080104 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Committed. -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------050302000802030209080104 Content-Type: text/plain; name="c-font-lock-extra-types.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="c-font-lock-extra-types.patch" MjAwNC0wNi0wNyAgU3RldmVuIEF1Z2FydCAgPGF1Z2FydEB3YXRzb24uaWJtLmNvbT4KCgkq IG5hdGl2ZS9qbmkvZ3RrLXBlZXIvZ3RocmVhZC1qbmkuYyAoYy1mb250LWxvY2stZXh0cmEt dHlwZXMpOiAKCSAgQWRkZWQgamZpZWxkSUQsIGptZXRob2RJRC4KCSogaW5jbHVkZS9qbmku aCAoYy1mb250LWxvY2stZXh0cmEtdHlwZXMpOiBBZGRlZC4KCkluZGV4OiBpbmNsdWRlL2pu aS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2NsYXNzcGF0aC9jbGFzc3Bh dGgvaW5jbHVkZS9qbmkuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLUkqLmNs YXNzIC11IC1yMS4xIGpuaS5oCi0tLSBpbmNsdWRlL2puaS5oCTI4IE1heSAyMDA0IDEwOjI1 OjMwIC0wMDAwCTEuMQorKysgaW5jbHVkZS9qbmkuaAk3IEp1biAyMDA0IDIxOjM5OjQ5IC0w MDAwCkBAIC0xNDEzLDQgKzE0MTMsMTQgQEAKICAgamJvb2xlYW4gaWdub3JlVW5yZWNvZ25p emVkOwogfSBKYXZhVk1Jbml0QXJnczsKIAorDAorLyogS2VlcCBjLWZvbnQtbG9jay1leHRy YS10eXBlcyBpbiBhbHBoYWJldGljYWwgb3JkZXIuICovCisvKiBMb2NhbCBWYXJpYWJsZXM6 ICovCisvKiBjLWZvbnQtbG9jay1leHRyYS10eXBlczogKCJcXHN3K190IiAKKyAgICJKTklF bnYiICJKTklOYXRpdmVNZXRob2QiICJKYXZhVk0iICJKYXZhVk1PcHRpb24iICJqYXJyYXki CisgICAiamJvb2xlYW4iICJqYm9vbGVhbkFycmF5IiAiamJ5dGUiICJqYnl0ZUFycmF5IiAi amNoYXIiICAiamNoYXJBcnJheSIgCisgICAiamNsYXNzIiAiamRvdWJsZSIgImpkb3VibGVB cnJheSIgImpmaWVsZElEIiAiamZsb2F0IiAiamZsb2F0QXJyYXkiCisgICAiamludCIgImpp bnRBcnJheSIgImpsb25nIiAiamxvbmdBcnJheSIgImptZXRob2RJRCIgImpvYmplY3QiICJq c3RyaW5nIiAianRocm93YWJsZSIgCisgICAianZhbHVlIiAiandlYWsiKSAqLworLyogRW5k OiAqLwogI2VuZGlmIC8qIF9fQ0xBU1NQQVRIX0pOSV9IX18gKi8KSW5kZXg6IG5hdGl2ZS9q bmkvZ3RrLXBlZXIvZ3RocmVhZC1qbmkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz cm9vdC9jbGFzc3BhdGgvY2xhc3NwYXRoL25hdGl2ZS9qbmkvZ3RrLXBlZXIvZ3RocmVhZC1q bmkuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMgpkaWZmIC1JKi5jbGFzcyAtdSAtcjEu MTIgZ3RocmVhZC1qbmkuYwotLS0gbmF0aXZlL2puaS9ndGstcGVlci9ndGhyZWFkLWpuaS5j CTYgSnVuIDIwMDQgMDQ6MTQ6MTMgLTAwMDAJMS4xMgorKysgbmF0aXZlL2puaS9ndGstcGVl ci9ndGhyZWFkLWpuaS5jCTcgSnVuIDIwMDQgMjE6Mzk6NTAgLTAwMDAKQEAgLTI1MDcsNSAr MjUwNyw1IEBACiAgICAiR1ByaXZhdGUiICJHVGhyZWFkRnVuYyIgIkdUaHJlYWRGdW5jdGlv bnMiICJHVGhyZWFkUHJpb3JpdHkiIAogICAgImd1bG9uZyIgCiAgICAiSk5JRW52IiAKLSAg ICJqYm9vbGVhbiIgImpjbGFzcyIgImppbnQiICJqbG9uZyIgImpvYmplY3QiICJqc3RyaW5n IiAianRocm93YWJsZSIgKSAqLworICAgImpib29sZWFuIiAiamNsYXNzIiAiamZpZWxkSUQi ICJqaW50IiAiamxvbmciICJqbWV0aG9kSUQiICJqb2JqZWN0IiAianN0cmluZyIgImp0aHJv d2FibGUiICkgKi8KIC8qIEVuZDogKi8K --------------050302000802030209080104-- From MAILER-DAEMON Tue Jun 08 00:08:30 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BXXuY-0000BB-9p for mharc-commit-classpath@gnu.org; Tue, 08 Jun 2004 00:08:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BXXuW-0000Az-MY for commit-classpath@gnu.org; Tue, 08 Jun 2004 00:08:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BXXuV-0000An-3L for commit-classpath@gnu.org; Tue, 08 Jun 2004 00:08:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BXXuU-0000Ak-Vn for commit-classpath@gnu.org; Tue, 08 Jun 2004 00:08:27 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BXXtm-0001kC-1z for commit-classpath@gnu.org; Tue, 08 Jun 2004 00:07:42 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 0639E62497 for ; Tue, 8 Jun 2004 04:07:41 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00653-09 for ; Tue, 8 Jun 2004 04:07:40 +0000 (GMT) Received: from reali.dnsalias.net (212-41-78-186.adsl.solnet.ch [212.41.78.186]) by mail01.solnet.ch (Postfix) with ESMTP id C0EFC62477 for ; Tue, 8 Jun 2004 04:07:39 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id E7894DC4A7; Tue, 8 Jun 2004 06:04:31 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040608040431.E7894DC4A7@reali.dnsalias.net> Date: Tue, 8 Jun 2004 06:04:31 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040608 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Jun 2004 04:08:28 -0000 From MAILER-DAEMON Wed Jun 09 00:18:17 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BXuXZ-0001q5-Js for mharc-commit-classpath@gnu.org; Wed, 09 Jun 2004 00:18:17 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BXuXX-0001pz-Ue for commit-classpath@gnu.org; Wed, 09 Jun 2004 00:18:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BXuXW-0001pn-BB for commit-classpath@gnu.org; Wed, 09 Jun 2004 00:18:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BXuXW-0001pk-6k for commit-classpath@gnu.org; Wed, 09 Jun 2004 00:18:14 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BXuWc-0005Zp-BS for commit-classpath@gnu.org; Wed, 09 Jun 2004 00:17:18 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 031DA623CD for ; Wed, 9 Jun 2004 04:17:07 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 23720-02 for ; Wed, 9 Jun 2004 04:17:06 +0000 (GMT) Received: from reali.dnsalias.net (212-41-78-186.adsl.solnet.ch [212.41.78.186]) by mail01.solnet.ch (Postfix) with ESMTP id D35B3623AB for ; Wed, 9 Jun 2004 04:17:05 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id A8FEDDF924; Wed, 9 Jun 2004 06:13:56 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040609041356.A8FEDDF924@reali.dnsalias.net> Date: Wed, 9 Jun 2004 06:13:56 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040609 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Jun 2004 04:18:16 -0000 From MAILER-DAEMON Wed Jun 09 20:35:35 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYDXb-00087v-LG for mharc-commit-classpath@gnu.org; Wed, 09 Jun 2004 20:35:35 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYDXZ-00087k-V1 for commit-classpath@gnu.org; Wed, 09 Jun 2004 20:35:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYDXY-00086q-1Q for commit-classpath@gnu.org; Wed, 09 Jun 2004 20:35:33 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYDXX-00086g-UR for commit-classpath@gnu.org; Wed, 09 Jun 2004 20:35:31 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BYDWe-0006dx-6R for commit-classpath@gnu.org; Wed, 09 Jun 2004 20:34:36 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BYDWN-0004l9-Me for commit-classpath@gnu.org; Wed, 09 Jun 2004 20:34:19 -0400 From: "David Holmes" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:80 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9280 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322) X-Apparently-From: 203.222.72.2 X-Copy-To: Array Message-Id: Date: Wed, 09 Jun 2004 20:35:33 -0400 Subject: [bugs #9280] Closing a socket nulls impl but getImpl() isn't checked for null X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jun 2004 00:35:34 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9280] Full Item Snapshot: URL: Project: classpath Submitted by: David Holmes On: Thu 06/10/2004 at 00:34 Severity: 5 - Average Resolution: None Assigned to: None Status: Open Platform Version: None Summary: Closing a socket nulls impl but getImpl() isn't checked for null Original Submission: java.net.Socket: When a socket is closed impl is set to null. However, some methods use getImpl() without checking for isClosed() first. In particular: - isConnected() will throw NullPointerException if called on a closed socket. Hence so will - getPort - getInetAddress - getRemoteSocketAddress - toString - getLocalAddress() will throw NullPointerException if called on a closed socket. - setReuseAddress() will throw NullPointerException if called on a closed socket. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Wed Jun 09 21:51:10 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYEij-0002Ap-Sq for mharc-commit-classpath@gnu.org; Wed, 09 Jun 2004 21:51:09 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYEii-0002AU-BF for commit-classpath@gnu.org; Wed, 09 Jun 2004 21:51:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYEih-0002AI-H9 for commit-classpath@gnu.org; Wed, 09 Jun 2004 21:51:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYEih-0002AF-Ef for commit-classpath@gnu.org; Wed, 09 Jun 2004 21:51:07 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BYEht-00026x-CA for commit-classpath@gnu.org; Wed, 09 Jun 2004 21:50:17 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5A1oGx85754 for ; Wed, 9 Jun 2004 21:50:16 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5A1oGl66900 for ; Wed, 9 Jun 2004 21:50:16 -0400 Received: from watson.ibm.com (sig-9-65-208-94.mts.ibm.com [9.65.208.94]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5A1oFC80910; Wed, 9 Jun 2004 21:50:15 -0400 Message-ID: <40C7BE47.9010704@watson.ibm.com> Date: Wed, 09 Jun 2004 21:49:59 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------060901050706050703010105" Subject: configure.ac.starquote.patch: OK to commit? X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jun 2004 01:51:08 -0000 This is a multi-part message in MIME format. --------------060901050706050703010105 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------060901050706050703010105 Content-Type: text/plain; name="configure.ac.starquote.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="configure.ac.starquote.patch" OK to commit? This fixes a bug where, if the user had, for some weird reason, created a file or files with names matching the wildcard pattern .*86, the configure process would have broken on non-x86 platforms. Please let me know if I should document this patch anywhere besides in this mailng list message. ChangeLog entry follows: 2004-06-09 Steven Augart * configure.ac: quote '.*86'. Index: configure.ac =================================================================== RCS file: /cvsroot/classpath/classpath/configure.ac,v retrieving revision 1.30 diff -I*.class -u -r1.30 configure.ac --- configure.ac 3 Jun 2004 09:16:56 -0000 1.30 +++ configure.ac 9 Jun 2004 20:32:43 -0000 @@ -14,7 +14,7 @@ dnl ----------------------------------------------------------- dnl Fold all IA-32 CPU architectures into "x86" dnl ----------------------------------------------------------- -if expr ${target_cpu} : .*86 > /dev/null; then target_cpu=x86; fi +if expr ${target_cpu} : '.*86' > /dev/null; then target_cpu=x86; fi dnl ----------------------------------------------------------- dnl We will not track/change lib version until we reach version 1.0 --------------060901050706050703010105-- From MAILER-DAEMON Wed Jun 09 23:02:05 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYFpN-00070i-9C for mharc-commit-classpath@gnu.org; Wed, 09 Jun 2004 23:02:05 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYFpL-0006yt-Ui for commit-classpath@gnu.org; Wed, 09 Jun 2004 23:02:04 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYFpL-0006yA-A0 for commit-classpath@gnu.org; Wed, 09 Jun 2004 23:02:03 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYFpL-0006xr-7r for commit-classpath@gnu.org; Wed, 09 Jun 2004 23:02:03 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BYFoM-0005TH-Rv for commit-classpath@gnu.org; Wed, 09 Jun 2004 23:01:03 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5A312x65838 for ; Wed, 9 Jun 2004 23:01:02 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5A311l81028 for ; Wed, 9 Jun 2004 23:01:01 -0400 Received: from watson.ibm.com (sig-9-65-208-94.mts.ibm.com [9.65.208.94]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5A310C25786; Wed, 9 Jun 2004 23:01:00 -0400 Message-ID: <40C7CEE0.9050909@watson.ibm.com> Date: Wed, 09 Jun 2004 23:00:48 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------070006000109070306080300" Subject: committing: configure.ac-sizeof-void-p.patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jun 2004 03:02:04 -0000 This is a multi-part message in MIME format. --------------070006000109070306080300 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------070006000109070306080300 Content-Type: text/plain; name="configure.ac-sizeof-void-p.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="configure.ac-sizeof-void-p.patch" Patch against GNU Classpath CVS Head, as of 10 June 2004, 2:55 GMT This patch adds a SIZEOF_VOID_P item to include/config.h; that, in turn, means that Double.toString() should work correctly again on 64-bit PowerPC. --Steven Augart ChangeLog entry: 2004-06-09 Steven Augart * configure.ac: Add SIZEOF_VOID_P to include/config.h. Index: configure.ac =================================================================== RCS file: /cvsroot/classpath/classpath/configure.ac,v retrieving revision 1.30 diff -I*.class -u -r1.30 configure.ac --- configure.ac 3 Jun 2004 09:16:56 -0000 1.30 +++ configure.ac 10 Jun 2004 02:54:20 -0000 @@ -98,6 +98,9 @@ if test "x${COMPILE_JNI}" = xyes; then AC_HEADER_STDC + dnl Checking sizeof void * is needed for fdlibm to work properly on ppc64, + dnl at least. + AC_CHECK_SIZEOF(void *) dnl We check for sys/filio.h because Solaris 2.5 defines FIONREAD there. dnl On that system, sys/ioctl.h will not include sys/filio.h unless dnl BSD_COMP is defined; just including sys/filio.h is simpler. --------------070006000109070306080300-- From MAILER-DAEMON Thu Jun 10 00:15:42 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYGyb-0001Cx-Ue for mharc-commit-classpath@gnu.org; Thu, 10 Jun 2004 00:15:41 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYGya-0001Cb-97 for commit-classpath@gnu.org; Thu, 10 Jun 2004 00:15:40 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYGyY-0001CE-GL for commit-classpath@gnu.org; Thu, 10 Jun 2004 00:15:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYGyY-0001C4-DX for commit-classpath@gnu.org; Thu, 10 Jun 2004 00:15:38 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BYGxb-0008KE-5c for commit-classpath@gnu.org; Thu, 10 Jun 2004 00:14:39 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id A04A7622F7 for ; Thu, 10 Jun 2004 04:14:38 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 35970-02 for ; Thu, 10 Jun 2004 04:14:38 +0000 (GMT) Received: from reali.dnsalias.net (212-41-87-138.adsl.solnet.ch [212.41.87.138]) by mail01.solnet.ch (Postfix) with ESMTP id 8C8A5622E9 for ; Thu, 10 Jun 2004 04:14:37 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id DBDEDE2BEE; Thu, 10 Jun 2004 06:11:26 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040610041126.DBDEDE2BEE@reali.dnsalias.net> Date: Thu, 10 Jun 2004 06:11:26 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040610 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jun 2004 04:15:40 -0000 From MAILER-DAEMON Thu Jun 10 09:30:36 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYPdc-0006QO-39 for mharc-commit-classpath@gnu.org; Thu, 10 Jun 2004 09:30:36 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYPda-0006Q6-Cp for commit-classpath@gnu.org; Thu, 10 Jun 2004 09:30:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYPdY-0006Pu-TS for commit-classpath@gnu.org; Thu, 10 Jun 2004 09:30:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYPdY-0006Pr-OG for commit-classpath@gnu.org; Thu, 10 Jun 2004 09:30:32 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BYPcG-0002Az-P3 for commit-classpath@gnu.org; Thu, 10 Jun 2004 09:29:12 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BYPbz-00081a-4t for commit-classpath@gnu.org; Thu, 10 Jun 2004 09:28:55 -0400 From: "Tom Quarendon" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:80 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9286 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705) X-Apparently-From: 193.195.78.165 X-Copy-To: Array Message-Id: Date: Thu, 10 Jun 2004 09:30:34 -0400 Subject: [bugs #9286] Cached encoder/decoder in Charset not checked to see if its for right Charset! X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jun 2004 13:30:34 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9286] Full Item Snapshot: URL: Project: classpath Submitted by: Tom Quarendon On: Thu 06/10/2004 at 13:28 Severity: 5 - Average Resolution: None Assigned to: None Status: Open Platform Version: None Summary: Cached encoder/decoder in Charset not checked to see if its for right Charset! Original Submission: The Charset class has static CharsetEncoder and CharsetDecoder instnaces which are used in the implementations of encode and decode on the Charset class. However if you do the following Charset.forName("charseta").decode(bytes) Charset.forName("charsetb").decode(bytes) then the second decode happens with the decoder for "charseta". Either the decoder should not be cached, or it needs to be checked to see it it is for the right charset. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 10 13:05:25 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYSzU-0004jx-TD for mharc-commit-classpath@gnu.org; Thu, 10 Jun 2004 13:05:24 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYSzT-0004jr-ME for commit-classpath@gnu.org; Thu, 10 Jun 2004 13:05:23 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYSzS-0004jf-5v for commit-classpath@gnu.org; Thu, 10 Jun 2004 13:05:23 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYSzS-0004jc-1h for commit-classpath@gnu.org; Thu, 10 Jun 2004 13:05:22 -0400 Received: from [207.189.223.52] (helo=email3.peakpeak.com) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BYSye-0002BO-6l for commit-classpath@gnu.org; Thu, 10 Jun 2004 13:04:32 -0400 Received: (qmail 23434 invoked from network); 10 Jun 2004 17:19:03 -0000 Received: from tf0089.peakpeak.com (HELO fleche.redhat.com) ([204.144.239.89]) (envelope-sender ) by email3.peakpeak.com (qmail-ldap-1.03) with SMTP for ; 10 Jun 2004 17:19:03 -0000 Received: by fleche.redhat.com (Postfix, from userid 1000) id AED664F80C8; Thu, 10 Jun 2004 10:52:27 -0600 (MDT) To: Steven Augart References: <40C7BE47.9010704@watson.ibm.com> From: Tom Tromey X-Attribution: Tom Date: 10 Jun 2004 10:52:27 -0600 In-Reply-To: <40C7BE47.9010704@watson.ibm.com> Message-ID: <87lliv9wz8.fsf@fleche.redhat.com> Lines: 12 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: commit-classpath@gnu.org Subject: Re: configure.ac.starquote.patch: OK to commit? X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list Reply-To: tromey@redhat.com List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jun 2004 17:05:23 -0000 >>>>> "Steven" == Steven Augart writes: Steven> OK to commit? Looks great, please do check in. Steven> Please let me know if I should document this patch anywhere Steven> besides in this mailng list message. IMO this one is self-explanatory. Tom From MAILER-DAEMON Fri Jun 11 00:14:19 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYdQo-0004dV-Uz for mharc-commit-classpath@gnu.org; Fri, 11 Jun 2004 00:14:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYdQm-0004cu-4d for commit-classpath@gnu.org; Fri, 11 Jun 2004 00:14:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYdQk-0004cO-8a for commit-classpath@gnu.org; Fri, 11 Jun 2004 00:14:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYdQk-0004bt-0v for commit-classpath@gnu.org; Fri, 11 Jun 2004 00:14:14 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BYdPb-0003wx-7H for commit-classpath@gnu.org; Fri, 11 Jun 2004 00:13:03 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 9653662408 for ; Fri, 11 Jun 2004 04:12:51 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 39026-03 for ; Fri, 11 Jun 2004 04:12:50 +0000 (GMT) Received: from reali.dnsalias.net (212-41-87-138.adsl.solnet.ch [212.41.87.138]) by mail01.solnet.ch (Postfix) with ESMTP id 77104623E8 for ; Fri, 11 Jun 2004 04:12:50 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 72165E993E; Fri, 11 Jun 2004 06:09:38 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040611040938.72165E993E@reali.dnsalias.net> Date: Fri, 11 Jun 2004 06:09:38 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040611 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Jun 2004 04:14:16 -0000 From MAILER-DAEMON Fri Jun 11 00:52:08 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYe1Q-0003Ft-GI for mharc-commit-classpath@gnu.org; Fri, 11 Jun 2004 00:52:08 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYe1O-0003Fo-6J for commit-classpath@gnu.org; Fri, 11 Jun 2004 00:52:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYe1K-0003FZ-2i for commit-classpath@gnu.org; Fri, 11 Jun 2004 00:52:05 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYe1J-0003FW-Im for commit-classpath@gnu.org; Fri, 11 Jun 2004 00:52:01 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BYe0L-0006t4-94 for commit-classpath@gnu.org; Fri, 11 Jun 2004 00:51:01 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5B4p0x40194 for ; Fri, 11 Jun 2004 00:51:00 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5B4oxL85016; Fri, 11 Jun 2004 00:50:59 -0400 Message-ID: <40C93A2C.3000501@watson.ibm.com> Date: Fri, 11 Jun 2004 00:50:52 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------010907030904010701050206" Subject: Committed: NEWS addition X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Jun 2004 04:52:06 -0000 This is a multi-part message in MIME format. --------------010907030904010701050206 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------010907030904010701050206 Content-Type: text/plain; name="NEWS-64-bit-powerpc.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="NEWS-64-bit-powerpc.patch" Committed with the following ChangeLog entry: 2004-06-11 Steven Augart * NEWS: Added info on bug fix. Index: NEWS =================================================================== RCS file: /cvsroot/classpath/classpath/NEWS,v retrieving revision 1.40 diff -I*.class -u -r1.40 NEWS --- NEWS 6 Jun 2004 04:14:14 -0000 1.40 +++ NEWS 11 Jun 2004 04:46:58 -0000 @@ -14,6 +14,9 @@ one JNI 1.2 function: GetEnv(), in the JNI Invocation API. If this poses problems, please raise them on the classpath mailing list. +* Double.toString() and Float.toString() now work properly on 64-bit + Linux/PowerPC systems. + New in release 0.09 (2004/02/02) * Includes updated GNU JAXP version from 2004-02-01. --------------010907030904010701050206-- From MAILER-DAEMON Fri Jun 11 22:32:11 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYyJW-0006rB-UC for mharc-commit-classpath@gnu.org; Fri, 11 Jun 2004 22:32:11 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYyJU-0006pq-LN for commit-classpath@gnu.org; Fri, 11 Jun 2004 22:32:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYyJP-0006nY-NL for commit-classpath@gnu.org; Fri, 11 Jun 2004 22:32:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYyJP-0006lb-9b for commit-classpath@gnu.org; Fri, 11 Jun 2004 22:32:03 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BYyHn-0002iQ-1v for commit-classpath@gnu.org; Fri, 11 Jun 2004 22:30:23 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5C2UMx78452 for ; Fri, 11 Jun 2004 22:30:22 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5C2ULN95262; Fri, 11 Jun 2004 22:30:21 -0400 Message-ID: <40CA6AB6.7090803@watson.ibm.com> Date: Fri, 11 Jun 2004 22:30:14 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------040309040203030401070204" Subject: java.lang.String doc fix: committed X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Jun 2004 02:32:09 -0000 This is a multi-part message in MIME format. --------------040309040203030401070204 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------040309040203030401070204 Content-Type: text/plain; name="java.lang.String-doc-fix.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="java.lang.String-doc-fix.patch" Committed with the following ChangeLog comment: * java/lang/String.java: Doc fix. Index: java/lang/String.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/lang/String.java,v retrieving revision 1.56 diff -I*.class -u -r1.56 String.java --- java/lang/String.java 23 Apr 2004 21:13:20 -0000 1.56 +++ java/lang/String.java 12 Jun 2004 02:26:20 -0000 @@ -122,7 +122,7 @@ private int cachedHashCode; /** - * Holds the starting position for characters in str[]. Since + * Holds the starting position for characters in value[]. Since * substring()'s are common, the use of offset allows the operation * to perform in O(1). Package access is granted for use by StringBuffer. */ --------------040309040203030401070204-- From MAILER-DAEMON Sat Jun 12 00:06:38 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BYzmw-0003UZ-Ir for mharc-commit-classpath@gnu.org; Sat, 12 Jun 2004 00:06:38 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BYzmv-0003UU-1O for commit-classpath@gnu.org; Sat, 12 Jun 2004 00:06:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BYzmt-0003UI-K9 for commit-classpath@gnu.org; Sat, 12 Jun 2004 00:06:36 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BYzmt-0003UF-HJ for commit-classpath@gnu.org; Sat, 12 Jun 2004 00:06:35 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BYzlj-0001Ui-8Z for commit-classpath@gnu.org; Sat, 12 Jun 2004 00:05:24 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 5CB9762435 for ; Sat, 12 Jun 2004 04:05:22 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 46165-03 for ; Sat, 12 Jun 2004 04:05:21 +0000 (GMT) Received: from reali.dnsalias.net (212-41-90-237.adsl.solnet.ch [212.41.90.237]) by mail01.solnet.ch (Postfix) with ESMTP id 49EF362409 for ; Sat, 12 Jun 2004 04:05:21 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 058D8F01FE; Sat, 12 Jun 2004 06:02:08 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040612040208.058D8F01FE@reali.dnsalias.net> Date: Sat, 12 Jun 2004 06:02:08 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040612 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Jun 2004 04:06:37 -0000 From MAILER-DAEMON Sat Jun 12 16:33:45 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BZFCD-0007yl-4B for mharc-commit-classpath@gnu.org; Sat, 12 Jun 2004 16:33:45 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BZFCB-0007yg-ON for commit-classpath@gnu.org; Sat, 12 Jun 2004 16:33:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BZFCA-0007yU-9P for commit-classpath@gnu.org; Sat, 12 Jun 2004 16:33:43 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BZFCA-0007yR-6e for commit-classpath@gnu.org; Sat, 12 Jun 2004 16:33:42 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BZFAy-0000zG-1J for commit-classpath@gnu.org; Sat, 12 Jun 2004 16:32:28 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BZFAg-00011q-DY for commit-classpath@gnu.org; Sat, 12 Jun 2004 16:32:10 -0400 From: "Nikolay Fiykov" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3128 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040403 Firefox/0.8 X-Apparently-From: 62.248.201.123 X-Copy-To: Array Message-Id: Date: Sat, 12 Jun 2004 16:33:43 -0400 Subject: [patch #3128] extra imports removed (cp0.09) X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Jun 2004 20:33:44 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3128] Full Item Snapshot: URL: Project: classpath Submitted by: Nikolay Fiykov On: Sat 06/12/2004 at 20:32 Category: None Priority: 5 - Normal Resolution: None Assigned to: None Originator Email: Status: Open Summary: extra imports removed (cp0.09) Original Submission: i did some cleanup of extra imports reported by eclipse compiler (2.1.2). attached is the patch file against classpath 0.09. now remaining warnings are related to obsolute methods. File Attachments ------------------- ------------------------------------------------------- Date: Sat 06/12/2004 at 20:32 Name: extra_imports.patch Size: 41KB By: fikin patch for removing extra import statements http://savannah.gnu.org/patch/download.php?item_id=3128&item_file_id=3358 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Sun Jun 13 00:05:30 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BZMFO-000793-5s for mharc-commit-classpath@gnu.org; Sun, 13 Jun 2004 00:05:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BZMFM-00078L-R6 for commit-classpath@gnu.org; Sun, 13 Jun 2004 00:05:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BZMFK-00077A-NH for commit-classpath@gnu.org; Sun, 13 Jun 2004 00:05:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BZMFK-000776-JH for commit-classpath@gnu.org; Sun, 13 Jun 2004 00:05:26 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BZMEM-0003Jx-Bs for commit-classpath@gnu.org; Sun, 13 Jun 2004 00:04:26 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 6B864623F5 for ; Sun, 13 Jun 2004 04:04:14 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 07972-08 for ; Sun, 13 Jun 2004 04:04:13 +0000 (GMT) Received: from reali.dnsalias.net (212-41-87-243.adsl.solnet.ch [212.41.87.243]) by mail01.solnet.ch (Postfix) with ESMTP id 56555623E0 for ; Sun, 13 Jun 2004 04:04:13 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id A9A03F3562; Sun, 13 Jun 2004 06:00:58 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040613040058.A9A03F3562@reali.dnsalias.net> Date: Sun, 13 Jun 2004 06:00:58 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040613 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Jun 2004 04:05:29 -0000 From MAILER-DAEMON Mon Jun 14 00:04:34 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BZii2-00086P-Jg for mharc-commit-classpath@gnu.org; Mon, 14 Jun 2004 00:04:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BZii0-00085u-KJ for commit-classpath@gnu.org; Mon, 14 Jun 2004 00:04:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BZihz-00085i-5C for commit-classpath@gnu.org; Mon, 14 Jun 2004 00:04:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BZihz-00085f-2D for commit-classpath@gnu.org; Mon, 14 Jun 2004 00:04:31 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BZih2-0002ze-Lz for commit-classpath@gnu.org; Mon, 14 Jun 2004 00:03:32 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id D558362370 for ; Mon, 14 Jun 2004 04:03:31 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 78037-08 for ; Mon, 14 Jun 2004 04:03:31 +0000 (GMT) Received: from reali.dnsalias.net (212-41-87-10.adsl.solnet.ch [212.41.87.10]) by mail01.solnet.ch (Postfix) with ESMTP id BC3786231B for ; Mon, 14 Jun 2004 04:03:30 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 7C752F749B; Mon, 14 Jun 2004 06:00:14 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040614040014.7C752F749B@reali.dnsalias.net> Date: Mon, 14 Jun 2004 06:00:14 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040614 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2004 04:04:32 -0000 From MAILER-DAEMON Mon Jun 14 05:53:56 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BZoA8-00079n-Qu for mharc-commit-classpath@gnu.org; Mon, 14 Jun 2004 05:53:56 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BZoA7-00079V-Ey for commit-classpath@gnu.org; Mon, 14 Jun 2004 05:53:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BZoA5-00079C-Mr for commit-classpath@gnu.org; Mon, 14 Jun 2004 05:53:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BZoA5-000792-KL for commit-classpath@gnu.org; Mon, 14 Jun 2004 05:53:53 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BZo8v-00080F-JM for commit-classpath@gnu.org; Mon, 14 Jun 2004 05:52:41 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BZo8d-0007Ed-HN for commit-classpath@gnu.org; Mon, 14 Jun 2004 05:52:23 -0400 From: "anonymous" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:80 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9331 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Epiphany/1.0.6 X-Apparently-From: 149.229.96.69 X-Copy-To: Array Message-Id: Date: Mon, 14 Jun 2004 05:53:54 -0400 Subject: [bugs #9331] URLStreamHandler does not correcly parse filenames as URL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2004 09:53:55 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9331] Full Item Snapshot: URL: Project: classpath Submitted by: 0 On: Mon 06/14/2004 at 05:52 Severity: 5 - Average Resolution: None Assigned to: None Status: Open Platform Version: None Summary: URLStreamHandler does not correcly parse filenames as URL Original Submission: I found, that java.net.URLStreamHandler does not correctly parse filenames such as "mapping.xml" as URLs. Some applications do such things, like Castor (here I found the error). The problem is, that URLStreamHandler.parseURL looks for "/" and does not check, if a "/" is found. In the case that there is no "/" invalid values are passed to java.lang.String.substring. The attached patch should solve this problem. File Attachments ------------------- ------------------------------------------------------- Date: Mon 06/14/2004 at 05:52 Name: URLStreamHandler.java.patch Size: 682KB By: None solves the error http://savannah.gnu.org/bugs/download.php?item_id=9331&item_file_id=1403 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Mon Jun 14 17:03:37 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BZycD-0001pe-BO for mharc-commit-classpath@gnu.org; Mon, 14 Jun 2004 17:03:37 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BZycB-0001pK-Gg for commit-classpath@gnu.org; Mon, 14 Jun 2004 17:03:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BZyc2-0001ja-7t for commit-classpath@gnu.org; Mon, 14 Jun 2004 17:03:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BZyc2-0001jU-2w for commit-classpath@gnu.org; Mon, 14 Jun 2004 17:03:26 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BZyb1-0004fb-7H for commit-classpath@gnu.org; Mon, 14 Jun 2004 17:02:23 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 668E8622B5 for ; Mon, 14 Jun 2004 21:02:21 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 90316-07 for ; Mon, 14 Jun 2004 21:02:20 +0000 (GMT) Received: from reali.dnsalias.net (212-41-87-10.adsl.solnet.ch [212.41.87.10]) by mail01.solnet.ch (Postfix) with ESMTP id 8B789622A2 for ; Mon, 14 Jun 2004 21:02:19 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 500) id 760053D36D; Mon, 14 Jun 2004 22:59:03 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040614205903.760053D36D@reali.dnsalias.net> Date: Mon, 14 Jun 2004 22:59:03 +0200 (CEST) From: reali@acm.org (Patrik Reali) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: doc/www.gnu.org/newsitems.txt X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2004 21:03:35 -0000 2004-06-14 Patrik Reali * doc/www.gnu.org/newsitems.txt: consistent layout and latest news Index: doc/www.gnu.org/newsitems.txt =================================================================== RCS file: /cvsroot/classpath/classpath/doc/www.gnu.org/newsitems.txt,v retrieving revision 1.7 diff -u -r1.7 newsitems.txt --- doc/www.gnu.org/newsitems.txt 25 May 2004 20:22:39 -0000 1.7 +++ doc/www.gnu.org/newsitems.txt 14 Jun 2004 20:55:33 -0000 @@ -1,13 +1,25 @@ + + + + + + from SableVM. + + + + released + + -JamVM 1.1.4 released () + released -SableVM 1.1.4 released () + released -GNU Classpath 0.09 released [] + released @@ -15,15 +27,15 @@ -SableVM 1.1.3 released (). + released -JC 1.1 released (); upgraded to GNU Classpath 0.08. + released ; upgraded to GNU Classpath 0.08. -Jikes RVM 2.3.2 released (); upgraded to GNU Classpath 0.08 and completely built with free tools! + released ; upgraded to GNU Classpath 0.08 and completely built with free tools! @@ -31,7 +43,7 @@ -JamVM-1.1.2 released () + released @@ -43,7 +55,7 @@ - + released From MAILER-DAEMON Tue Jun 15 00:13:16 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Ba5K0-0003zP-Ld for mharc-commit-classpath@gnu.org; Tue, 15 Jun 2004 00:13:16 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Ba5Jz-0003yO-IG for commit-classpath@gnu.org; Tue, 15 Jun 2004 00:13:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Ba5Jx-0003x6-Rm for commit-classpath@gnu.org; Tue, 15 Jun 2004 00:13:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Ba5Jx-0003x3-PB for commit-classpath@gnu.org; Tue, 15 Jun 2004 00:13:13 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Ba5Ii-0003pI-GR for commit-classpath@gnu.org; Tue, 15 Jun 2004 00:11:56 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 8709A62429 for ; Tue, 15 Jun 2004 04:11:55 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 03377-08 for ; Tue, 15 Jun 2004 04:11:54 +0000 (GMT) Received: from reali.dnsalias.net (212-41-87-10.adsl.solnet.ch [212.41.87.10]) by mail01.solnet.ch (Postfix) with ESMTP id 402D7623F5 for ; Tue, 15 Jun 2004 04:11:54 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id D818AF9B6F; Tue, 15 Jun 2004 06:08:36 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040615040836.D818AF9B6F@reali.dnsalias.net> Date: Tue, 15 Jun 2004 06:08:36 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040615 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2004 04:13:15 -0000 From MAILER-DAEMON Tue Jun 15 10:14:32 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BaEhs-0006BD-Gg for mharc-commit-classpath@gnu.org; Tue, 15 Jun 2004 10:14:32 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BaEhq-0006AK-57 for commit-classpath@gnu.org; Tue, 15 Jun 2004 10:14:30 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BaEhp-0006A8-Bh for commit-classpath@gnu.org; Tue, 15 Jun 2004 10:14:29 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BaEhp-0006A5-8M for commit-classpath@gnu.org; Tue, 15 Jun 2004 10:14:29 -0400 Received: from [212.6.122.115] (helo=mail1.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BaEgL-0000Y6-1I for commit-classpath@gnu.org; Tue, 15 Jun 2004 10:12:57 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-069.ewetel.net [80.228.94.69]) by mail1.ewetel.de (8.12.1/8.12.9) with ESMTP id i5FAdxTa007578 for ; Tue, 15 Jun 2004 12:40:00 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BaBQs-0004Dx-00 for ; Tue, 15 Jun 2004 12:44:46 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Tue, 15 Jun 2004 12:41:14 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_KJtzAhiApsvdTgv" Message-Id: <200406151241.17501.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: java.util.zip X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2004 14:14:30 -0000 --Boundary-00=_KJtzAhiApsvdTgv Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attache patch to merge java.util.zip more with=20 libgcj's version. Michael 2004-06-15 Michael Koch * java/util/zip/DeflaterOutputStream.java: Reformatted. * java/util/zip/InflaterInputStream.java (InflaterInputStream): Removed redundant initialization of len to 0. (available): Check for closed stream. (read): Likewise. (skip): Check for closed stream, simplified implementation. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAztJNWSOgCCdjSDsRAoqwAJ99XE13m4jN4DRINcd2Xd+8x9zclQCeKxW4 anHG123BzlwGLdhYsMHKDss=3D =3DOrEg =2D----END PGP SIGNATURE----- --Boundary-00=_KJtzAhiApsvdTgv Content-Type: text/x-diff; charset="iso-8859-15"; name="zip.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="zip.diff" Index: java/util/zip/DeflaterOutputStream.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/zip/DeflaterOutputStream.java,v retrieving revision 1.6 diff -u -b -B -r1.6 DeflaterOutputStream.java --- java/util/zip/DeflaterOutputStream.java 12 Apr 2004 12:30:57 -0000 1.6 +++ java/util/zip/DeflaterOutputStream.java 15 Jun 2004 10:35:53 -0000 @@ -76,7 +76,7 @@ * def.deflate() until all bytes from the input buffers * are processed. */ - protected void deflate () throws IOException + protected void deflate() throws IOException { while (! def.needsInput()) { @@ -97,9 +97,9 @@ * default buffer size. * @param out the output stream where deflated output should be written. */ - public DeflaterOutputStream (OutputStream out) + public DeflaterOutputStream(OutputStream out) { - this (out, new Deflater (), 512); + this(out, new Deflater(), 512); } /** @@ -108,9 +108,9 @@ * @param out the output stream where deflated output should be written. * @param defl the underlying deflater. */ - public DeflaterOutputStream (OutputStream out, Deflater defl) + public DeflaterOutputStream(OutputStream out, Deflater defl) { - this (out, defl, 512); + this(out, defl, 512); } /** @@ -123,7 +123,7 @@ */ public DeflaterOutputStream(OutputStream out, Deflater defl, int bufsize) { - super (out); + super(out); if (bufsize <= 0) throw new IllegalArgumentException("bufsize <= 0"); buf = new byte[bufsize]; @@ -148,10 +148,10 @@ * was the only way to ensure that all bytes are flushed in Sun's * JDK. */ - public void finish () throws IOException + public void finish() throws IOException { def.finish(); - while (! def.finished ()) + while (! def.finished()) { int len = def.deflate(buf, 0, buf.length); if (len <= 0) @@ -164,7 +164,7 @@ } /** - * Calls finish () and closes the stream. + * Calls finish() and closes the stream. */ public void close() throws IOException { Index: java/util/zip/InflaterInputStream.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/zip/InflaterInputStream.java,v retrieving revision 1.12 diff -u -b -B -r1.12 InflaterInputStream.java --- java/util/zip/InflaterInputStream.java 30 Apr 2004 19:21:35 -0000 1.12 +++ java/util/zip/InflaterInputStream.java 15 Jun 2004 10:35:53 -0000 @@ -109,14 +109,13 @@ public InflaterInputStream(InputStream in, Inflater inf, int size) { super(in); - this.len = 0; if (in == null) - throw new NullPointerException ("in may not be null"); + throw new NullPointerException("in may not be null"); if (inf == null) - throw new NullPointerException ("inf may not be null"); + throw new NullPointerException("inf may not be null"); if (size < 0) - throw new IllegalArgumentException ("size may not be negative"); + throw new IllegalArgumentException("size may not be negative"); this.inf = inf; this.buf = new byte [size]; @@ -130,6 +129,8 @@ { // According to the JDK 1.2 docs, this should only ever return 0 // or 1 and should not be relied upon by Java programs. + if (inf == null) + throw new IOException("stream closed"); return inf.finished() ? 0 : 1; } @@ -183,12 +184,14 @@ */ public int read(byte[] b, int off, int len) throws IOException { + if (inf == null) + throw new IOException("stream closed"); if (len == 0) return 0; + int count = 0; for (;;) { - int count; try { @@ -219,27 +222,28 @@ */ public long skip(long n) throws IOException { + if (inf == null) + throw new IOException("stream closed"); if (n < 0) throw new IllegalArgumentException(); if (n == 0) return 0; - // Implementation copied from InputStream - // Throw away n bytes by reading them into a temp byte[]. - // Limit the temp array to 2Kb so we don't grab too much memory. - final int buflen = n > 2048 ? 2048 : (int) n; + int buflen = (int) Math.min(n, 2048); byte[] tmpbuf = new byte[buflen]; - final long origN = n; + long skipped = 0L; while (n > 0L) { - int numread = read(tmpbuf, 0, n > buflen ? buflen : (int) n); + int numread = read(tmpbuf, 0, buflen); if (numread <= 0) break; n -= numread; + skipped += numread; + buflen = (int) Math.min(n, 2048); } - return origN - n; + return skipped; } } --Boundary-00=_KJtzAhiApsvdTgv-- From MAILER-DAEMON Tue Jun 15 10:47:16 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BaFDY-00057F-57 for mharc-commit-classpath@gnu.org; Tue, 15 Jun 2004 10:47:16 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BaFDW-00056w-Vt for commit-classpath@gnu.org; Tue, 15 Jun 2004 10:47:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BaFDW-00056k-Ah for commit-classpath@gnu.org; Tue, 15 Jun 2004 10:47:14 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BaFDW-00056h-7d for commit-classpath@gnu.org; Tue, 15 Jun 2004 10:47:14 -0400 Received: from [212.6.122.105] (helo=mail0.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BaFCQ-0003MT-F2 for commit-classpath@gnu.org; Tue, 15 Jun 2004 10:46:06 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-069.ewetel.net [80.228.94.69]) by mail0.ewetel.de (8.12.1/8.12.9) with ESMTP id i5FEk4kv020446 for ; Tue, 15 Jun 2004 16:46:05 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BaFH1-0004jX-00 for ; Tue, 15 Jun 2004 16:50:51 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Tue, 15 Jun 2004 16:47:19 +0200 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_3vwzAbAGwG7KTAm" Message-Id: <200406151647.22540.konqueror@gmx.de> X-CheckCompat: OK Subject: Patch: java.util: SimpleTimeZone and GregorianCalendar X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2004 14:47:15 -0000 --Boundary-00=_3vwzAbAGwG7KTAm Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi list, I just commited the attached patch to merge fixes made by Jerry Quinn=20 in libgcj. Michael 2004-06-15 Jerry Quinn * java/util/GregorianCalendar.java (computeTime): Skip buggy=20 formulae when we already know the answer. * java/util/SimpleTimeZone.java (serialVersionOnStream): Bump to 2. (setStartRule,setEndRule): Don't take abs of day number. (getOffset): Clarify docs. Add argument checks. (isBefore): Take abs of day number in DOW_LE_DOM_MODE. (equals,hasSameRules,toString,readObject): Use startTimeMode and endTimeMode. =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAzwv6WSOgCCdjSDsRAj9QAKCLgZSisl2aloW968ibg1n0wUvVMwCeJ8lU wn/4Liyt7MoFve7FO1kHHYI=3D =3DAy3O =2D----END PGP SIGNATURE----- --Boundary-00=_3vwzAbAGwG7KTAm Content-Type: text/x-diff; charset="iso-8859-15"; name="util.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="util.diff" Index: java/util/GregorianCalendar.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/GregorianCalendar.java,v retrieving revision 1.24 diff -u -b -B -r1.24 GregorianCalendar.java --- java/util/GregorianCalendar.java 15 Jun 2004 14:14:36 -0000 1.24 +++ java/util/GregorianCalendar.java 15 Jun 2004 14:43:10 -0000 @@ -1,5 +1,6 @@ /* java.util.GregorianCalendar - Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -442,8 +443,15 @@ ? fields[ZONE_OFFSET] : zone.getRawOffset(); int dayOfYear = daysOfYear[0] + daysOfYear[1]; - int month = (dayOfYear * 5 + 3) / (31 + 30 + 31 + 30 + 31); - int day = (6 + (dayOfYear * 5 + 3) % (31 + 30 + 31 + 30 + 31)) / 5; + // This formula isn't right, so check for month as a quick fix. + // It doesn't compensate for leap years and puts day 30 in month 1 + // instead of month 0. + int month = isSet[MONTH] + ? fields[MONTH] : (dayOfYear * 5 + 3) / (31 + 30 + 31 + 30 + 31); + // This formula isn't right, so check for day as a quick fix. It + // doesn't compensate for leap years, either. + int day = isSet[DAY_OF_MONTH] ? fields[DAY_OF_MONTH] + : (6 + (dayOfYear * 5 + 3) % (31 + 30 + 31 + 30 + 31)) / 5; int weekday = ((int) (time / (24 * 60 * 60 * 1000L)) + THURSDAY) % 7; if (weekday <= 0) weekday += 7; Index: java/util/SimpleTimeZone.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/SimpleTimeZone.java,v retrieving revision 1.17 diff -u -b -B -r1.17 SimpleTimeZone.java --- java/util/SimpleTimeZone.java 7 May 2004 14:48:31 -0000 1.17 +++ java/util/SimpleTimeZone.java 15 Jun 2004 14:43:10 -0000 @@ -234,7 +234,7 @@ * @serial * @since JDK1.1.4 */ - private int serialVersionOnStream = 1; + private int serialVersionOnStream = 2; private static final long serialVersionUID = -403250971215465050L; @@ -477,9 +477,7 @@ { this.startMode = checkRule(month, day, dayOfWeek); this.startMonth = month; - // FIXME: XXX: JDK 1.2 allows negative values and has 2 new variations - // of this method. - this.startDay = Math.abs(day); + this.startDay = day; this.startDayOfWeek = Math.abs(dayOfWeek); if (this.startTimeMode == WALL_TIME || this.startTimeMode == STANDARD_TIME) this.startTime = time; @@ -570,9 +568,7 @@ { this.endMode = checkRule(month, day, dayOfWeek); this.endMonth = month; - // FIXME: XXX: JDK 1.2 allows negative values and has 2 new variations - // of this method. - this.endDay = Math.abs(day); + this.endDay = day; this.endDayOfWeek = Math.abs(dayOfWeek); if (this.endTimeMode == WALL_TIME) this.endTime = time; @@ -660,21 +656,33 @@ * offset = cal.get(Calendar.ZONE_OFFSET) * + cal.get(Calendar.DST_OFFSET); * - * You could also use in - * * This version doesn't suffer this inaccuracy. * + * The arguments don't follow the approach for setting start and end rules. + * The day must be a positive number and dayOfWeek must be a positive value + * from Calendar. dayOfWeek is redundant, but must match the other values + * or an inaccurate result may be returned. + * * @param era the era of the given date * @param year the year of the given date * @param month the month of the given date, 0 for January. * @param day the day of month - * @param dayOfWeek the day of week; this must be matching the - * other fields. + * @param dayOfWeek the day of week; this must match the other fields. * @param millis the millis in the day (in local standard time) - * @return the time zone offset in milliseconds. */ + * @return the time zone offset in milliseconds. + * @throws IllegalArgumentException if arguments are incorrect. + */ public int getOffset(int era, int year, int month, int day, int dayOfWeek, int millis) { + int daysInMonth = getDaysInMonth(month, year); + if (day < 1 || day > daysInMonth) + throw new IllegalArgumentException("day out of range"); + if (dayOfWeek < Calendar.SUNDAY || dayOfWeek > Calendar.SATURDAY) + throw new IllegalArgumentException("dayOfWeek out of range"); + if (month < Calendar.JANUARY || month > Calendar.DECEMBER) + throw new IllegalArgumentException("month out of range"); + // This method is called by Calendar, so we mustn't use that class. int daylightSavings = 0; if (useDaylight && era == GregorianCalendar.AD && year >= startYear) @@ -785,7 +793,7 @@ /** * Checks if the date given in calXXXX, is before the change between * dst and standard time. - * @param calYear the year of the date to check (for leap day cheking). + * @param calYear the year of the date to check (for leap day checking). * @param calMonth the month of the date to check. * @param calDay the day of month of the date to check. * @param calDayOfWeek the day of week of the date to check. @@ -870,7 +878,7 @@ case DOW_LE_DOM_MODE: // The greatest sunday before or equal December, 12 // is the same as smallest sunday after or equal December, 6. - day -= 6; + day = Math.abs(day) - 6; case DOW_GE_DOM_MODE: @@ -931,10 +939,12 @@ && startDay == zone.startDay && startDayOfWeek == zone.startDayOfWeek && startTime == zone.startTime + && startTimeMode == zone.startTimeMode && endMonth == zone.endMonth && endDay == zone.endDay && endDayOfWeek == zone.endDayOfWeek - && endTime == zone.endTime); + && endTime == zone.endTime + && endTimeMode == zone.endTimeMode); } /** @@ -962,9 +972,12 @@ && startDay == zone.startDay && startDayOfWeek == zone.startDayOfWeek && startTime == zone.startTime + && startTimeMode == zone.startTimeMode && endMonth == zone.endMonth && endDay == zone.endDay - && endDayOfWeek == zone.endDayOfWeek && endTime == zone.endTime); + && endDayOfWeek == zone.endDayOfWeek + && endTime == zone.endTime + && endTimeMode == zone.endTimeMode); } /** @@ -987,11 +1000,14 @@ + ",startDay=" + startDay + ",startDayOfWeek=" + startDayOfWeek + ",startTime=" + startTime + + ",startTimeMode=" + startTimeMode + ",endMode=" + endMode + ",endMonth=" + endMonth + ",endDay=" + endDay + ",endDayOfWeek=" + endDayOfWeek - + ",endTime=" + endTime : "") + "]"; + + ",endTime=" + endTime + + ",endTimeMode=" + endTimeMode + : "") + "]"; } /** @@ -1008,8 +1024,9 @@ dstSavings = 60 * 60 * 1000; endMode = DOW_IN_MONTH_MODE; startMode = DOW_IN_MONTH_MODE; - serialVersionOnStream = 1; - } + startTimeMode = WALL_TIME; + endTimeMode = WALL_TIME; + serialVersionOnStream = 2; } else { int length = input.readInt(); --Boundary-00=_3vwzAbAGwG7KTAm-- From MAILER-DAEMON Tue Jun 15 18:41:36 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BaMca-0003Dg-NX for mharc-commit-classpath@gnu.org; Tue, 15 Jun 2004 18:41:36 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BaMcY-0003DE-VK for commit-classpath@gnu.org; Tue, 15 Jun 2004 18:41:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BaMcY-0003D2-FG for commit-classpath@gnu.org; Tue, 15 Jun 2004 18:41:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BaMcY-0003Cz-CE for commit-classpath@gnu.org; Tue, 15 Jun 2004 18:41:34 -0400 Received: from [219.160.177.9] (helo=asao.gcd.org) by monty-python.gnu.org with smtp (Exim 4.34) id 1BaMbL-0000Ba-8h for commit-classpath@gnu.org; Tue, 15 Jun 2004 18:40:19 -0400 Received: (qmail 17177 invoked by uid 10); 16 Jun 2004 07:33:36 +0900 Received: (qmail 63174 invoked by uid 1000); 15 Jun 2004 22:33:17 -0000 Message-ID: <20040615223317.63173.qmail@maczuka.gcd.org> From: Ito Kazumitsu To: classpath@gnu.org, commit-classpath@gnu.org User-Agent: EMH/1.10.0 SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.2 (i386-unknown-freebsd4.7) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: text/plain; charset=US-ASCII Date: Wed, 16 Jun 2004 07:33:16 +0900 Sender: kaz@maczuka.gcd.org Cc: Subject: Bug: java/text/MessageFormat.java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2004 22:41:35 -0000 Hi, As reported to the Kaffe mailing list: http://www.kaffe.org/pipermail/kaffe/2004-June/046657.html java/text/MessageFormat.java has a bug. This is my suggested patch. Changelog entry: 2004-06-15 Ito Kazumitsu * java/text/MessageFormat.java (formatInternal): Append "{n}" if argument n is unavailable. --- java/text/MessageFormat.java.orig Mon May 10 00:17:30 2004 +++ java/text/MessageFormat.java Wed Jun 16 07:16:42 2004 @@ -157,7 +157,7 @@ * This is the attribute set for all characters produced * by MessageFormat during a formatting. */ - public static final MessageFormat.Field ARGUMENT = new Field("argument"); + public static final MessageFormat.Field ARGUMENT = new MessageFormat.Field("argument"); // For deserialization private Field() @@ -414,10 +414,13 @@ for (int i = 0; i < elements.length; ++i) { - if (elements[i].argNumber >= arguments.length) - throw new IllegalArgumentException("Not enough arguments given"); + Object thisArg = null; + boolean unavailable = false; + if (arguments == null || elements[i].argNumber >= arguments.length) + unavailable = true; + else + thisArg = arguments[elements[i].argNumber]; - Object thisArg = arguments[elements[i].argNumber]; AttributedCharacterIterator iterator = null; Format formatter = null; @@ -425,22 +428,27 @@ if (fp != null && i == fp.getField() && fp.getFieldAttribute() == Field.ARGUMENT) fp.setBeginIndex(appendBuf.length()); - if (elements[i].setFormat != null) - formatter = elements[i].setFormat; - else if (elements[i].format != null) + if (unavailable) + appendBuf.append("{" + elements[i].argNumber + "}"); + else { - if (elements[i].formatClass != null - && ! elements[i].formatClass.isInstance(thisArg)) - throw new IllegalArgumentException("Wrong format class"); + if (elements[i].setFormat != null) + formatter = elements[i].setFormat; + else if (elements[i].format != null) + { + if (elements[i].formatClass != null + && ! elements[i].formatClass.isInstance(thisArg)) + throw new IllegalArgumentException("Wrong format class"); - formatter = elements[i].format; + formatter = elements[i].format; + } + else if (thisArg instanceof Number) + formatter = NumberFormat.getInstance(locale); + else if (thisArg instanceof Date) + formatter = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale); + else + appendBuf.append(thisArg); } - else if (thisArg instanceof Number) - formatter = NumberFormat.getInstance(locale); - else if (thisArg instanceof Date) - formatter = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale); - else - appendBuf.append(thisArg); if (fp != null && fp.getField() == i && fp.getFieldAttribute() == Field.ARGUMENT) fp.setEndIndex(appendBuf.length()); From MAILER-DAEMON Wed Jun 16 00:09:48 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BaRkB-0007Gq-T4 for mharc-commit-classpath@gnu.org; Wed, 16 Jun 2004 00:09:47 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BaRk9-0007GC-Uk for commit-classpath@gnu.org; Wed, 16 Jun 2004 00:09:46 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BaRk8-0007Ft-GW for commit-classpath@gnu.org; Wed, 16 Jun 2004 00:09:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BaRk8-0007Fq-E1 for commit-classpath@gnu.org; Wed, 16 Jun 2004 00:09:44 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BaRiu-00080Q-CH for commit-classpath@gnu.org; Wed, 16 Jun 2004 00:08:28 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 97C69623CD for ; Wed, 16 Jun 2004 04:08:27 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27384-04 for ; Wed, 16 Jun 2004 04:08:26 +0000 (GMT) Received: from reali.dnsalias.net (212-41-87-10.adsl.solnet.ch [212.41.87.10]) by mail01.solnet.ch (Postfix) with ESMTP id 7DF2362329 for ; Wed, 16 Jun 2004 04:08:26 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id E2D14FCE87; Wed, 16 Jun 2004 06:05:08 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040616040508.E2D14FCE87@reali.dnsalias.net> Date: Wed, 16 Jun 2004 06:05:08 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040616 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2004 04:09:46 -0000 From MAILER-DAEMON Wed Jun 16 05:53:54 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BaX78-0005Yu-DU for mharc-commit-classpath@gnu.org; Wed, 16 Jun 2004 05:53:51 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BaX76-0005Yj-Nk for commit-classpath@gnu.org; Wed, 16 Jun 2004 05:53:48 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BaX74-0005YQ-J0 for commit-classpath@gnu.org; Wed, 16 Jun 2004 05:53:48 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BaX74-0005YN-98 for commit-classpath@gnu.org; Wed, 16 Jun 2004 05:53:46 -0400 Received: from [139.19.1.2] (helo=francois.mpi-sb.mpg.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BaX5V-0000KW-FW for commit-classpath@gnu.org; Wed, 16 Jun 2004 05:52:19 -0400 Received: from amavis by francois.mpi-sb.mpg.de with scanned-ok (Exim 3.35 #1 (Debian)) id 1BaX5U-0004gI-00 for ; Wed, 16 Jun 2004 11:52:08 +0200 Received: from data ([139.19.90.238] helo=mpi-sb.mpg.de) by francois.mpi-sb.mpg.de with esmtp (Exim 3.35 #1 (Debian)) id 1BaX5R-0004g3-00 for ; Wed, 16 Jun 2004 11:52:05 +0200 Received: from [139.19.20.12] (topic@mpiat2003 [139.19.20.12]) by mpi-sb.mpg.de (8.12.9+Sun/8.12.9) with ESMTP id i5G9q47D022601 for ; Wed, 16 Jun 2004 11:52:05 +0200 (MEST) Message-ID: <40D01844.1030501@kaffe.org> Date: Wed, 16 Jun 2004 11:52:04 +0200 From: Dalibor Topic User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040608 X-Accept-Language: en-us, en MIME-Version: 1.0 To: commit-classpath Content-Type: multipart/mixed; boundary="------------030705070906090208070100" X-Virus-Scanned: by AMaViS perl-11 Subject: NIO error checking improvements and javadoc fixes X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2004 09:53:49 -0000 This is a multi-part message in MIME format. --------------030705070906090208070100 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi all, I've committed the attached patch with this changelog: 2003-06-15 Dalibor Topic * java/nio/Buffer.java, java/nio/ByteBuffer.java, java/nio/ByteBufferHelper.java, java/nio/ByteBufferImpl.java, java/nio/CharBuffer.java, java/nio/CharBufferImpl.java, java/nio/CharViewBufferImpl.java, java/nio/DirectByteBufferImpl.java, java/nio/DoubleBuffer.java, java/nio/DoubleBufferImpl.java, java/nio/DoubleViewBufferImpl.java, java/nio/FloatBuffer.java, java/nio/FloatBufferImpl.java, java/nio/FloatViewBufferImpl.java, java/nio/IntBuffer.java, java/nio/IntBufferImpl.java, java/nio/IntViewBufferImpl.java, java/nio/LongBuffer.java, java/nio/LongBufferImpl.java, java/nio/LongViewBufferImpl.java, java/nio/MappedByteBufferImpl.java, java/nio/ShortBuffer.java, java/nio/ShortBufferImpl.java, java/nio/ShortViewBufferImpl.java: Fixed javadocs all over. Improved input error checking. * java/nio/Buffer.java (checkForUnderflow, checkForOverflow, checkIndex, checkIfReadOnly, checkArraySize): New helper methods for error checking. * java/nio/ByteBufferHelper.java (checkRemainingForRead, checkRemainingForWrite, checkAvailableForRead, checkAvailableForWrite): Removed no longer needed methods. cheers, dalibor topic --------------030705070906090208070100 Content-Type: text/plain; name="classpath-nio.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="classpath-nio.diff" ? compile Index: java/nio/Buffer.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/Buffer.java,v retrieving revision 1.11 diff -u -r1.11 Buffer.java --- java/nio/Buffer.java 26 May 2004 22:11:50 -0000 1.11 +++ java/nio/Buffer.java 15 Jun 2004 16:44:47 -0000 @@ -233,7 +233,7 @@ * Rewinds this buffer. The position is set to zero and the mark * is discarded. * - * @this buffer + * @return this buffer */ public final Buffer rewind() { @@ -241,4 +241,115 @@ mark = -1; return this; } + + /** + * Checks for underflow. This method is used internally to check + * whether a buffer has enough elements left to satisfy a read + * request. + * + * @exception BufferUnderflowException If there are no remaining + * elements in this buffer. + */ + final void checkForUnderflow() + { + if (!hasRemaining()) + throw new BufferUnderflowException(); + } + + /** + * Checks for underflow. This method is used internally to check + * whether a buffer has enough elements left to satisfy a read + * request for a given number of elements. + * + * @param length The length of a sequence of elements. + * + * @exception BufferUnderflowException If there are not enough + * remaining elements in this buffer. + */ + final void checkForUnderflow(int length) + { + if (remaining() < length) + throw new BufferUnderflowException(); + } + + /** + * Checks for overflow. This method is used internally to check + * whether a buffer has enough space left to satisfy a write + * request. + * + * @exception BufferOverflowException If there is no remaining + * space in this buffer. + */ + final void checkForOverflow() + { + if (!hasRemaining()) + throw new BufferOverflowException(); + } + + /** + * Checks for overflow. This method is used internally to check + * whether a buffer has enough space left to satisfy a write + * request for a given number of elements. + * + * @param length The length of a sequence of elements. + * + * @exception BufferUnderflowException If there is not enough + * remaining space in this buffer. + */ + final void checkForOverflow(int length) + { + if (remaining() < length) + throw new BufferOverflowException(); + } + + /** + * Checks if index is negative or not smaller than the buffer's + * limit. This method is used internally to check whether + * an indexed request can be fulfilled. + * + * @param index The requested position in the buffer. + * + * @exception IndexOutOfBoundsException If index is negative or not smaller + * than the buffer's limit. + */ + final void checkIndex(int index) + { + if (index < 0 + || index >= limit ()) + throw new IndexOutOfBoundsException (); + } + + /** + * Checks if buffer is read-only. This method is used internally to + * check if elements can be put into a buffer. + * + * @exception ReadOnlyBufferException If this buffer is read-only. + */ + final void checkIfReadOnly() + { + if (isReadOnly()) + throw new ReadOnlyBufferException (); + } + + /** + * Checks whether an array is large enough to hold the given number of + * elements at the given offset. This method is used internally to + * check if an array is big enough. + * + * @param arraylength The length of the array. + * @param offset The offset within the array of the first byte to be read; + * must be non-negative and no larger than arraylength. + * @param length The number of bytes to be read from the given array; + * must be non-negative and no larger than arraylength - offset. + * + * @exception IndexOutOfBoundsException If the preconditions on the offset + * and length parameters do not hold + */ + final static void checkArraySize(int arraylength, int offset, int length) + { + if ((offset < 0) || + (length < 0) || + (arraylength < length + offset)) + throw new IndexOutOfBoundsException (); + } } Index: java/nio/ByteBuffer.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/ByteBuffer.java,v retrieving revision 1.20 diff -u -r1.20 ByteBuffer.java --- java/nio/ByteBuffer.java 29 Apr 2004 18:04:46 -0000 1.20 +++ java/nio/ByteBuffer.java 15 Jun 2004 16:44:47 -0000 @@ -100,8 +100,9 @@ } /** - * This method transfers bytes from this buffer into the given - * destination array. + * This method transfers bytes from this buffer into the given + * destination array. Before the transfer, it checks if there are fewer than + * length bytes remaining in this buffer. * * @param dst The destination array * @param offset The offset within the array of the first byte @@ -110,16 +111,14 @@ * must be non-negative and no larger than dst.length - offset. * * @exception BufferUnderflowException If there are fewer than length - * bytes remaining in this buffer. + * bytes remaining in this buffer. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold. */ public ByteBuffer get (byte[] dst, int offset, int length) { - if (offset < 0 || length < 0 || offset + length > dst.length) - throw new IndexOutOfBoundsException (); - if (length > remaining()) - throw new BufferUnderflowException(); + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); for (int i = offset; i < offset + length; i++) { @@ -130,13 +129,13 @@ } /** - * This method transfers bytes from this buffer into the given + * This method transfers bytes from this buffer into the given * destination array. * * @param dst The byte array to write into. * * @exception BufferUnderflowException If there are fewer than dst.length - * bytes remaining in this buffer. + * bytes remaining in this buffer. */ public ByteBuffer get (byte[] dst) { @@ -145,12 +144,13 @@ /** * Writes the content of the the ByteBUFFER src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * src.remaining() space remaining in this buffer. * * @param src The source data. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining bytes in the source buffer. + * buffer for the remaining bytes in the source buffer. * @exception IllegalArgumentException If the source buffer is this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ @@ -159,8 +159,7 @@ if (src == this) throw new IllegalArgumentException (); - if (src.remaining () > remaining ()) - throw new BufferOverflowException (); + checkForOverflow(src.remaining()); if (src.remaining () > 0) { @@ -174,7 +173,8 @@ /** * Writes the content of the the byte array src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * length space remaining in this buffer. * * @param src The array to copy into the buffer. * @param offset The offset within the array of the first byte to be read; @@ -183,18 +183,15 @@ * must be non-negative and no larger than src.length - offset. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining bytes in the source array. + * buffer for the remaining bytes in the source array. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold * @exception ReadOnlyBufferException If this buffer is read-only. */ public ByteBuffer put (byte[] src, int offset, int length) { - if ((offset < 0) || - (offset > src.length) || - (length < 0) || - (length > src.length - offset)) - throw new IndexOutOfBoundsException (); + checkArraySize(src.length, offset, length); + checkForOverflow(length); for (int i = offset; i < offset + length; i++) put (src [i]); @@ -209,7 +206,7 @@ * @param src The array to copy into the buffer. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining bytes in the source array. + * buffer for the remaining bytes in the source array. * @exception ReadOnlyBufferException If this buffer is read-only. */ public final ByteBuffer put (byte[] src) @@ -239,8 +236,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return backing_buffer; } @@ -257,8 +253,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return array_offset; } @@ -338,7 +333,7 @@ * and then increments the position. * * @exception BufferUnderflowException If there are no remaining - * bytes in this buffer. + * bytes in this buffer. */ public abstract byte get (); @@ -347,7 +342,7 @@ * and then increments the position. * * @exception BufferOverflowException If there no remaining - * bytes in this buffer. + * bytes in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public abstract ByteBuffer put (byte b); Index: java/nio/ByteBufferHelper.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/ByteBufferHelper.java,v retrieving revision 1.4 diff -u -r1.4 ByteBufferHelper.java --- java/nio/ByteBufferHelper.java 11 Feb 2004 19:05:14 -0000 1.4 +++ java/nio/ByteBufferHelper.java 15 Jun 2004 16:44:47 -0000 @@ -42,32 +42,6 @@ */ final class ByteBufferHelper { - private static void checkRemainingForRead (ByteBuffer buffer, int bytes) - { - if (buffer.remaining() < bytes) - throw new BufferUnderflowException(); - } - - private static void checkRemainingForWrite (ByteBuffer buffer, int bytes) - { - if (buffer.remaining() < bytes) - throw new BufferOverflowException(); - } - - private static void checkAvailableForRead (ByteBuffer buffer, - int index, int bytes) - { - if (buffer.limit() < (index + bytes)) - throw new BufferUnderflowException(); - } - - private static void checkAvailableForWrite (ByteBuffer buffer, - int index, int bytes) - { - if (buffer.limit() < (index + bytes)) - throw new BufferOverflowException(); - } - public static char getChar (ByteBuffer buffer, ByteOrder order) { return (char) getShort (buffer, order); @@ -91,7 +65,7 @@ public static short getShort (ByteBuffer buffer, ByteOrder order) { - checkRemainingForRead (buffer, 2); + buffer.checkForUnderflow(2); if (order == ByteOrder.LITTLE_ENDIAN) { @@ -105,7 +79,7 @@ public static void putShort (ByteBuffer buffer, short value, ByteOrder order) { - checkRemainingForWrite (buffer, 2); + buffer.checkForOverflow(2); if (order == ByteOrder.LITTLE_ENDIAN) { @@ -122,8 +96,6 @@ public static short getShort (ByteBuffer buffer, int index, ByteOrder order) { - checkAvailableForRead (buffer, index, 2); - if (order == ByteOrder.LITTLE_ENDIAN) { return (short) ((buffer.get (index) & 0xff) @@ -137,8 +109,6 @@ public static void putShort (ByteBuffer buffer, int index, short value, ByteOrder order) { - checkAvailableForWrite (buffer, index, 2); - if (order == ByteOrder.LITTLE_ENDIAN) { buffer.put (index, (byte) value); @@ -153,7 +123,7 @@ public static int getInt (ByteBuffer buffer, ByteOrder order) { - checkRemainingForRead (buffer, 4); + buffer.checkForUnderflow(4); if (order == ByteOrder.LITTLE_ENDIAN) { @@ -171,7 +141,7 @@ public static void putInt (ByteBuffer buffer, int value, ByteOrder order) { - checkRemainingForWrite (buffer, 4); + buffer.checkForOverflow(4); if (order == ByteOrder.LITTLE_ENDIAN) { @@ -191,8 +161,6 @@ public static int getInt (ByteBuffer buffer, int index, ByteOrder order) { - checkAvailableForRead (buffer, index, 4); - if (order == ByteOrder.LITTLE_ENDIAN) { return ((buffer.get (index) & 0xff) @@ -210,8 +178,6 @@ public static void putInt (ByteBuffer buffer, int index, int value, ByteOrder order) { - checkAvailableForWrite (buffer, index, 4); - if (order == ByteOrder.LITTLE_ENDIAN) { buffer.put (index, (byte) value); @@ -230,7 +196,7 @@ public static long getLong (ByteBuffer buffer, ByteOrder order) { - checkRemainingForRead (buffer, 8); + buffer.checkForUnderflow(8); if (order == ByteOrder.LITTLE_ENDIAN) { @@ -256,7 +222,7 @@ public static void putLong (ByteBuffer buffer, long value, ByteOrder order) { - checkRemainingForWrite (buffer, 8); + buffer.checkForOverflow(8); if (order == ByteOrder.LITTLE_ENDIAN) { @@ -284,8 +250,6 @@ public static long getLong (ByteBuffer buffer, int index, ByteOrder order) { - checkAvailableForRead (buffer, index, 8); - if (order == ByteOrder.LITTLE_ENDIAN) { return ((buffer.get (index) & 0xff) @@ -311,8 +275,6 @@ public static void putLong (ByteBuffer buffer, int index, long value, ByteOrder order) { - checkAvailableForWrite (buffer, index, 8); - if (order == ByteOrder.LITTLE_ENDIAN) { buffer.put (index, (byte) value); Index: java/nio/ByteBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/ByteBufferImpl.java,v retrieving revision 1.6 diff -u -r1.6 ByteBufferImpl.java --- java/nio/ByteBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.6 +++ java/nio/ByteBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -129,10 +129,16 @@ } /** - * Relative get method. Reads the next byte from the buffer. + * Reads the byte at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * bytes in this buffer. */ public byte get () { + checkForUnderflow(); + byte result = backing_buffer [position () + array_offset]; position (position () + 1); return result; @@ -141,13 +147,15 @@ /** * Relative put method. Writes value to the next position * in the buffer. - * + * + * @exception BufferOverflowException If there is no remaining + * space in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public ByteBuffer put (byte value) { - if (readOnly) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); + checkForOverflow(); int pos = position(); backing_buffer [pos + array_offset] = value; @@ -164,6 +172,8 @@ */ public byte get (int index) { + checkIndex(index); + return backing_buffer [index + array_offset]; } @@ -177,9 +187,9 @@ */ public ByteBuffer put (int index, byte value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkIndex(index); + backing_buffer [index + array_offset] = value; return this; } Index: java/nio/CharBuffer.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/CharBuffer.java,v retrieving revision 1.20 diff -u -r1.20 CharBuffer.java --- java/nio/CharBuffer.java 26 May 2004 22:16:36 -0000 1.20 +++ java/nio/CharBuffer.java 15 Jun 2004 16:44:47 -0000 @@ -137,8 +137,9 @@ } /** - * This method transfers chars from this buffer into the given - * destination array. + * This method transfers chars from this buffer into the given + * destination array. Before the transfer, it checks if there are fewer than + * length chars remaining in this buffer. * * @param dst The destination array * @param offset The offset within the array of the first char @@ -147,12 +148,15 @@ * must be non-negative and no larger than dst.length - offset. * * @exception BufferUnderflowException If there are fewer than length - * chars remaining in this buffer. + * chars remaining in this buffer. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold. */ public CharBuffer get (char[] dst, int offset, int length) { + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); + for (int i = offset; i < offset + length; i++) { dst [i] = get (); @@ -162,13 +166,13 @@ } /** - * This method transfers chars from this buffer into the given + * This method transfers chars from this buffer into the given * destination array. * * @param dst The byte array to write into. * * @exception BufferUnderflowException If there are fewer than dst.length - * chars remaining in this buffer. + * chars remaining in this buffer. */ public CharBuffer get (char[] dst) { @@ -177,12 +181,13 @@ /** * Writes the content of the the CharBUFFER src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * src.remaining() space remaining in this buffer. * * @param src The source data. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining chars in the source buffer. + * buffer for the remaining chars in the source buffer. * @exception IllegalArgumentException If the source buffer is this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ @@ -191,8 +196,7 @@ if (src == this) throw new IllegalArgumentException (); - if (src.remaining () > remaining ()) - throw new BufferOverflowException (); + checkForOverflow(src.remaining()); if (src.remaining () > 0) { @@ -206,7 +210,8 @@ /** * Writes the content of the the char array src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * length space remaining in this buffer. * * @param src The array to copy into the buffer. * @param offset The offset within the array of the first byte to be read; @@ -215,22 +220,15 @@ * must be non-negative and no larger than src.length - offset. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining chars in the source array. + * buffer for the remaining chars in the source array. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold * @exception ReadOnlyBufferException If this buffer is read-only. */ public CharBuffer put (char[] src, int offset, int length) { - if (offset < 0 - || offset >= src.length - || length < 0 - || length > (src.length - offset)) - throw new IndexOutOfBoundsException (); - - // Put nothing into this buffer when not enough space left. - if (length > remaining ()) - throw new BufferOverflowException (); + checkArraySize(src.length, offset, length); + checkForOverflow(length); for (int i = offset; i < offset + length; i++) put (src [i]); @@ -245,7 +243,7 @@ * @param src The array to copy into the buffer. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining chars in the source array. + * buffer for the remaining chars in the source array. * @exception ReadOnlyBufferException If this buffer is read-only. */ public final CharBuffer put (char[] src) @@ -275,9 +273,8 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + return backing_buffer; } @@ -293,8 +290,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return array_offset; } @@ -362,7 +358,7 @@ * and then increments the position. * * @exception BufferUnderflowException If there are no remaining - * chars in this buffer. + * chars in this buffer. */ public abstract char get (); @@ -371,7 +367,7 @@ * and then increments the position. * * @exception BufferOverflowException If there no remaining - * chars in this buffer. + * chars in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public abstract CharBuffer put (char b); Index: java/nio/CharBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/CharBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 CharBufferImpl.java --- java/nio/CharBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/CharBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -1,5 +1,5 @@ /* CharBufferImpl.java -- - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -116,10 +116,16 @@ } /** - * Relative get method. Reads the next char from the buffer. + * Reads the char at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * chars in this buffer. */ public char get () { + checkForUnderflow(); + char result = backing_buffer [position ()]; position (position () + 1); return result; @@ -133,8 +139,7 @@ */ public CharBuffer put (char value) { - if (readOnly) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); backing_buffer [position ()] = value; position (position () + 1); @@ -145,20 +150,20 @@ * Absolute get method. Reads the char at position * index. * + * @param index Position to read the char from. + * * @exception IndexOutOfBoundsException If index is negative or not smaller * than the buffer's limit. */ public char get (int index) { - if (index < 0 - || index >= limit ()) - throw new IndexOutOfBoundsException (); + checkIndex(index); return backing_buffer [index]; } /** - * Absolute put method. Writes value to position + * Absolute put method. Writes value to position * index in the buffer. * * @exception IndexOutOfBoundsException If index is negative or not smaller @@ -167,12 +172,8 @@ */ public CharBuffer put (int index, char value) { - if (index < 0 - || index >= limit ()) - throw new IndexOutOfBoundsException (); - - if (readOnly) - throw new ReadOnlyBufferException (); + checkIndex(index); + checkIfReadOnly(); backing_buffer [index] = value; return this; Index: java/nio/CharViewBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/CharViewBufferImpl.java,v retrieving revision 1.3 diff -u -r1.3 CharViewBufferImpl.java --- java/nio/CharViewBufferImpl.java 17 Feb 2004 21:44:54 -0000 1.3 +++ java/nio/CharViewBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -66,6 +66,13 @@ this.endian = endian; } + /** + * Reads the char at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * chars in this buffer. + */ public char get () { int p = position(); @@ -74,6 +81,15 @@ return result; } + /** + * Absolute get method. Reads the char at position + * index. + * + * @param index Position to read the char from. + * + * @exception IndexOutOfBoundsException If index is negative or not smaller + * than the buffer's limit. + */ public char get (int index) { return ByteBufferHelper.getChar(bb, (index << 1) + offset, endian); Index: java/nio/DirectByteBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/DirectByteBufferImpl.java,v retrieving revision 1.10 diff -u -r1.10 DirectByteBufferImpl.java --- java/nio/DirectByteBufferImpl.java 22 Apr 2004 07:28:17 -0000 1.10 +++ java/nio/DirectByteBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -86,9 +86,9 @@ public byte get () { + checkForUnderflow(); + int pos = position(); - if (pos >= limit()) - throw new BufferUnderflowException(); byte result = getImpl (address, pos); position (pos + 1); return result; @@ -96,8 +96,8 @@ public byte get (int index) { - if (index >= limit()) - throw new BufferUnderflowException(); + checkIndex(index); + return getImpl (address, index); } @@ -106,10 +106,8 @@ public ByteBuffer get (byte[] dst, int offset, int length) { - if (offset < 0 || length < 0 || offset + length > dst.length) - throw new IndexOutOfBoundsException (); - if (length > remaining()) - throw new BufferUnderflowException(); + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); int index = position(); getImpl(address, index, dst, offset, length); @@ -120,9 +118,10 @@ public ByteBuffer put (byte value) { + checkIfReadOnly(); + checkForOverflow(); + int pos = position(); - if (pos >= limit()) - throw new BufferUnderflowException(); putImpl (address, pos, value); position (pos + 1); return this; @@ -130,8 +129,9 @@ public ByteBuffer put (int index, byte value) { - if (index >= limit()) - throw new BufferUnderflowException(); + checkIfReadOnly(); + checkIndex(index); + putImpl (address, index, value); return this; } Index: java/nio/DoubleBuffer.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/DoubleBuffer.java,v retrieving revision 1.15 diff -u -r1.15 DoubleBuffer.java --- java/nio/DoubleBuffer.java 29 Apr 2004 18:04:46 -0000 1.15 +++ java/nio/DoubleBuffer.java 15 Jun 2004 16:44:47 -0000 @@ -83,8 +83,9 @@ } /** - * This method transfers doubles from this buffer into the given - * destination array. + * This method transfers doubles from this buffer into the given + * destination array. Before the transfer, it checks if there are fewer than + * length doubles remaining in this buffer. * * @param dst The destination array * @param offset The offset within the array of the first double @@ -93,12 +94,15 @@ * must be non-negative and no larger than dst.length - offset. * * @exception BufferUnderflowException If there are fewer than length - * doubles remaining in this buffer. + * doubles remaining in this buffer. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold. */ public DoubleBuffer get (double[] dst, int offset, int length) { + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); + for (int i = offset; i < offset + length; i++) { dst [i] = get (); @@ -108,13 +112,13 @@ } /** - * This method transfers doubles from this buffer into the given + * This method transfers doubles from this buffer into the given * destination array. * * @param dst The byte array to write into. * * @exception BufferUnderflowException If there are fewer than dst.length - * doubles remaining in this buffer. + * doubles remaining in this buffer. */ public DoubleBuffer get (double[] dst) { @@ -123,12 +127,13 @@ /** * Writes the content of the the DoubleBUFFER src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * src.remaining() space remaining in this buffer. * * @param src The source data. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining doubles in the source buffer. + * buffer for the remaining doubles in the source buffer. * @exception IllegalArgumentException If the source buffer is this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ @@ -137,8 +142,7 @@ if (src == this) throw new IllegalArgumentException (); - if (src.remaining () > remaining ()) - throw new BufferOverflowException (); + checkForOverflow(src.remaining ()); if (src.remaining () > 0) { @@ -152,7 +156,8 @@ /** * Writes the content of the the double array src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * length space remaining in this buffer. * * @param src The array to copy into the buffer. * @param offset The offset within the array of the first byte to be read; @@ -161,13 +166,16 @@ * must be non-negative and no larger than src.length - offset. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining doubles in the source array. + * buffer for the remaining doubles in the source array. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold * @exception ReadOnlyBufferException If this buffer is read-only. */ public DoubleBuffer put (double[] src, int offset, int length) { + checkArraySize(src.length, offset, length); + checkForOverflow(length); + for (int i = offset; i < offset + length; i++) put (src [i]); @@ -181,7 +189,7 @@ * @param src The array to copy into the buffer. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining doubles in the source array. + * buffer for the remaining doubles in the source array. * @exception ReadOnlyBufferException If this buffer is read-only. */ public final DoubleBuffer put (double[] src) @@ -211,8 +219,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return backing_buffer; } @@ -229,8 +236,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return array_offset; } @@ -298,7 +304,7 @@ * and then increments the position. * * @exception BufferUnderflowException If there are no remaining - * doubles in this buffer. + * doubles in this buffer. */ public abstract double get (); @@ -307,7 +313,7 @@ * and then increments the position. * * @exception BufferOverflowException If there no remaining - * doubles in this buffer. + * doubles in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public abstract DoubleBuffer put (double b); Index: java/nio/DoubleBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/DoubleBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 DoubleBufferImpl.java --- java/nio/DoubleBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/DoubleBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -1,5 +1,5 @@ /* DoubleBufferImpl.java -- - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -98,10 +98,16 @@ } /** - * Relative get method. Reads the next double from the buffer. + * Reads the double at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * doubles in this buffer. */ public double get () { + checkForUnderflow(); + double result = backing_buffer [position ()]; position (position () + 1); return result; @@ -110,13 +116,15 @@ /** * Relative put method. Writes value to the next position * in the buffer. - * + * + * @exception BufferOverflowException If there no remaining + * space in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public DoubleBuffer put (double value) { - if (readOnly) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); + checkForOverflow(); backing_buffer [position ()] = value; position (position () + 1); @@ -132,6 +140,8 @@ */ public double get (int index) { + checkIndex(index); + return backing_buffer [index]; } @@ -145,9 +155,9 @@ */ public DoubleBuffer put (int index, double value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkIndex(index); + backing_buffer [index] = value; return this; } Index: java/nio/DoubleViewBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/DoubleViewBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 DoubleViewBufferImpl.java --- java/nio/DoubleViewBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/DoubleViewBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -66,6 +66,13 @@ this.endian = endian; } + /** + * Reads the double at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * doubles in this buffer. + */ public double get () { int p = position(); @@ -74,6 +81,13 @@ return result; } + /** + * Absolute get method. Reads the double at position + * index. + * + * @exception IndexOutOfBoundsException If index is negative or not smaller + * than the buffer's limit. + */ public double get (int index) { return ByteBufferHelper.getDouble(bb, (index << 3) + offset, endian); Index: java/nio/FloatBuffer.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/FloatBuffer.java,v retrieving revision 1.15 diff -u -r1.15 FloatBuffer.java --- java/nio/FloatBuffer.java 29 Apr 2004 18:04:46 -0000 1.15 +++ java/nio/FloatBuffer.java 15 Jun 2004 16:44:47 -0000 @@ -83,8 +83,9 @@ } /** - * This method transfers floats from this buffer into the given - * destination array. + * This method transfers floats from this buffer into the given + * destination array. Before the transfer, it checks if there are fewer than + * length floats remaining in this buffer. * * @param dst The destination array * @param offset The offset within the array of the first float @@ -93,12 +94,15 @@ * must be non-negative and no larger than dst.length - offset. * * @exception BufferUnderflowException If there are fewer than length - * floats remaining in this buffer. + * floats remaining in this buffer. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold. */ public FloatBuffer get (float[] dst, int offset, int length) { + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); + for (int i = offset; i < offset + length; i++) { dst [i] = get (); @@ -108,13 +112,13 @@ } /** - * This method transfers floats from this buffer into the given + * This method transfers floats from this buffer into the given * destination array. * * @param dst The byte array to write into. * * @exception BufferUnderflowException If there are fewer than dst.length - * floats remaining in this buffer. + * floats remaining in this buffer. */ public FloatBuffer get (float[] dst) { @@ -123,12 +127,13 @@ /** * Writes the content of the the FloatBUFFER src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * src.remaining() space remaining in this buffer. * * @param src The source data. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining floats in the source buffer. + * buffer for the remaining floats in the source buffer. * @exception IllegalArgumentException If the source buffer is this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ @@ -137,8 +142,7 @@ if (src == this) throw new IllegalArgumentException (); - if (src.remaining () > remaining ()) - throw new BufferOverflowException (); + checkForOverflow(src.remaining()); if (src.remaining () > 0) { @@ -152,7 +156,8 @@ /** * Writes the content of the the float array src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * length space remaining in this buffer. * * @param src The array to copy into the buffer. * @param offset The offset within the array of the first byte to be read; @@ -161,13 +166,16 @@ * must be non-negative and no larger than src.length - offset. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining floats in the source array. + * buffer for the remaining floats in the source array. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold * @exception ReadOnlyBufferException If this buffer is read-only. */ public FloatBuffer put (float[] src, int offset, int length) { + checkArraySize(src.length, offset, length); + checkForOverflow(length); + for (int i = offset; i < offset + length; i++) put (src [i]); @@ -181,7 +189,7 @@ * @param src The array to copy into the buffer. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining floats in the source array. + * buffer for the remaining floats in the source array. * @exception ReadOnlyBufferException If this buffer is read-only. */ public final FloatBuffer put (float[] src) @@ -211,8 +219,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return backing_buffer; } @@ -229,8 +236,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return array_offset; } @@ -298,7 +304,7 @@ * and then increments the position. * * @exception BufferUnderflowException If there are no remaining - * floats in this buffer. + * floats in this buffer. */ public abstract float get (); @@ -307,7 +313,7 @@ * and then increments the position. * * @exception BufferOverflowException If there no remaining - * floats in this buffer. + * floats in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public abstract FloatBuffer put (float b); Index: java/nio/FloatBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/FloatBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 FloatBufferImpl.java --- java/nio/FloatBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/FloatBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -1,5 +1,5 @@ /* FloatBufferImpl.java -- - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -98,10 +98,16 @@ } /** - * Relative get method. Reads the next float from the buffer. + * Reads the float at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * floats in this buffer. */ public float get () { + checkForUnderflow(); + float result = backing_buffer [position ()]; position (position () + 1); return result; @@ -111,13 +117,15 @@ * Relative put method. Writes value to the next position * in the buffer. * + * @exception BufferOverflowException If there no remaining + * space in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public FloatBuffer put (float value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkForOverflow(); + backing_buffer [position ()] = value; position (position () + 1); return this; @@ -132,6 +140,8 @@ */ public float get (int index) { + checkIndex(index); + return backing_buffer [index]; } @@ -145,9 +155,9 @@ */ public FloatBuffer put (int index, float value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkIndex(index); + backing_buffer [index] = value; return this; } Index: java/nio/FloatViewBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/FloatViewBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 FloatViewBufferImpl.java --- java/nio/FloatViewBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/FloatViewBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -66,6 +66,13 @@ this.endian = endian; } + /** + * Reads the float at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * floats in this buffer. + */ public float get () { int p = position(); @@ -74,6 +81,13 @@ return result; } + /** + * Absolute get method. Reads the float at position + * index. + * + * @exception IndexOutOfBoundsException If index is negative or not smaller + * than the buffer's limit. + */ public float get (int index) { return ByteBufferHelper.getFloat(bb, (index << 2) + offset, endian); Index: java/nio/IntBuffer.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/IntBuffer.java,v retrieving revision 1.15 diff -u -r1.15 IntBuffer.java --- java/nio/IntBuffer.java 29 Apr 2004 18:04:46 -0000 1.15 +++ java/nio/IntBuffer.java 15 Jun 2004 16:44:47 -0000 @@ -83,8 +83,9 @@ } /** - * This method transfers ints from this buffer into the given - * destination array. + * This method transfers ints from this buffer into the given + * destination array. Before the transfer, it checks if there are fewer than + * length ints remaining in this buffer. * * @param dst The destination array * @param offset The offset within the array of the first int @@ -93,12 +94,15 @@ * must be non-negative and no larger than dst.length - offset. * * @exception BufferUnderflowException If there are fewer than length - * ints remaining in this buffer. + * ints remaining in this buffer. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold. */ public IntBuffer get (int[] dst, int offset, int length) { + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); + for (int i = offset; i < offset + length; i++) { dst [i] = get (); @@ -108,13 +112,13 @@ } /** - * This method transfers ints from this buffer into the given + * This method transfers ints from this buffer into the given * destination array. * * @param dst The byte array to write into. * * @exception BufferUnderflowException If there are fewer than dst.length - * ints remaining in this buffer. + * ints remaining in this buffer. */ public IntBuffer get (int[] dst) { @@ -123,12 +127,13 @@ /** * Writes the content of the the IntBUFFER src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * src.remaining() space remaining in this buffer. * * @param src The source data. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining ints in the source buffer. + * buffer for the remaining ints in the source buffer. * @exception IllegalArgumentException If the source buffer is this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ @@ -137,8 +142,7 @@ if (src == this) throw new IllegalArgumentException (); - if (src.remaining () > remaining ()) - throw new BufferOverflowException (); + checkForOverflow(src.remaining ()); if (src.remaining () > 0) { @@ -152,7 +156,8 @@ /** * Writes the content of the the int array src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * length space remaining in this buffer. * * @param src The array to copy into the buffer. * @param offset The offset within the array of the first byte to be read; @@ -161,13 +166,16 @@ * must be non-negative and no larger than src.length - offset. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining ints in the source array. + * buffer for the remaining ints in the source array. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold * @exception ReadOnlyBufferException If this buffer is read-only. */ public IntBuffer put (int[] src, int offset, int length) { + checkArraySize(src.length, offset, length); + checkForOverflow(length); + for (int i = offset; i < offset + length; i++) put (src [i]); @@ -181,7 +189,7 @@ * @param src The array to copy into the buffer. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining ints in the source array. + * buffer for the remaining ints in the source array. * @exception ReadOnlyBufferException If this buffer is read-only. */ public final IntBuffer put (int[] src) @@ -211,8 +219,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return backing_buffer; } @@ -229,8 +236,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return array_offset; } @@ -298,7 +304,7 @@ * and then increments the position. * * @exception BufferUnderflowException If there are no remaining - * ints in this buffer. + * ints in this buffer. */ public abstract int get (); @@ -307,7 +313,7 @@ * and then increments the position. * * @exception BufferOverflowException If there no remaining - * ints in this buffer. + * ints in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public abstract IntBuffer put (int b); Index: java/nio/IntBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/IntBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 IntBufferImpl.java --- java/nio/IntBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/IntBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -1,5 +1,5 @@ /* IntBufferImpl.java -- - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -98,10 +98,16 @@ } /** - * Relative get method. Reads the next int from the buffer. + * Reads the int at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * ints in this buffer. */ public int get () { + checkForUnderflow(); + int result = backing_buffer [position ()]; position (position () + 1); return result; @@ -110,14 +116,16 @@ /** * Relative put method. Writes value to the next position * in the buffer. - * + * + * @exception BufferOverflowException If there no remaining + * space in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public IntBuffer put (int value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkForOverflow(); + backing_buffer [position ()] = value; position (position () + 1); return this; @@ -132,6 +140,8 @@ */ public int get (int index) { + checkIndex(index); + return backing_buffer [index]; } @@ -145,9 +155,9 @@ */ public IntBuffer put (int index, int value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkIndex(index); + backing_buffer [index] = value; return this; } Index: java/nio/IntViewBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/IntViewBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 IntViewBufferImpl.java --- java/nio/IntViewBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/IntViewBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -66,6 +66,13 @@ this.endian = endian; } + /** + * Reads the int at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * ints in this buffer. + */ public int get () { int p = position(); @@ -74,6 +81,13 @@ return result; } + /** + * Absolute get method. Reads the int at position + * index. + * + * @exception IndexOutOfBoundsException If index is negative or not smaller + * than the buffer's limit. + */ public int get (int index) { return ByteBufferHelper.getInt(bb, (index << 2) + offset, endian); Index: java/nio/LongBuffer.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/LongBuffer.java,v retrieving revision 1.15 diff -u -r1.15 LongBuffer.java --- java/nio/LongBuffer.java 29 Apr 2004 18:04:46 -0000 1.15 +++ java/nio/LongBuffer.java 15 Jun 2004 16:44:47 -0000 @@ -83,8 +83,9 @@ } /** - * This method transfers longs from this buffer into the given - * destination array. + * This method transfers longs from this buffer into the given + * destination array. Before the transfer, it checks if there are fewer than + * length longs remaining in this buffer. * * @param dst The destination array * @param offset The offset within the array of the first long @@ -93,12 +94,15 @@ * must be non-negative and no larger than dst.length - offset. * * @exception BufferUnderflowException If there are fewer than length - * longs remaining in this buffer. + * longs remaining in this buffer. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold. */ public LongBuffer get (long[] dst, int offset, int length) { + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); + for (int i = offset; i < offset + length; i++) { dst [i] = get (); @@ -108,13 +112,13 @@ } /** - * This method transfers longs from this buffer into the given + * This method transfers longs from this buffer into the given * destination array. * * @param dst The byte array to write into. * * @exception BufferUnderflowException If there are fewer than dst.length - * longs remaining in this buffer. + * longs remaining in this buffer. */ public LongBuffer get (long[] dst) { @@ -123,12 +127,13 @@ /** * Writes the content of the the LongBUFFER src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * src.remaining() space remaining in this buffer. * * @param src The source data. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining longs in the source buffer. + * buffer for the remaining longs in the source buffer. * @exception IllegalArgumentException If the source buffer is this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ @@ -137,8 +142,7 @@ if (src == this) throw new IllegalArgumentException (); - if (src.remaining () > remaining ()) - throw new BufferOverflowException (); + checkForOverflow(src.remaining ()); if (src.remaining () > 0) { @@ -152,7 +156,8 @@ /** * Writes the content of the the long array src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * length space remaining in this buffer. * * @param src The array to copy into the buffer. * @param offset The offset within the array of the first byte to be read; @@ -161,13 +166,16 @@ * must be non-negative and no larger than src.length - offset. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining longs in the source array. + * buffer for the remaining longs in the source array. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold * @exception ReadOnlyBufferException If this buffer is read-only. */ public LongBuffer put (long[] src, int offset, int length) { + checkArraySize(src.length, offset, length); + checkForOverflow(length); + for (int i = offset; i < offset + length; i++) put (src [i]); @@ -181,7 +189,7 @@ * @param src The array to copy into the buffer. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining longs in the source array. + * buffer for the remaining longs in the source array. * @exception ReadOnlyBufferException If this buffer is read-only. */ public final LongBuffer put (long[] src) @@ -211,8 +219,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return backing_buffer; } @@ -229,8 +236,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return array_offset; } @@ -298,7 +304,7 @@ * and then increments the position. * * @exception BufferUnderflowException If there are no remaining - * longs in this buffer. + * longs in this buffer. */ public abstract long get (); @@ -307,7 +313,7 @@ * and then increments the position. * * @exception BufferOverflowException If there no remaining - * longs in this buffer. + * longs in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public abstract LongBuffer put (long b); Index: java/nio/LongBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/LongBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 LongBufferImpl.java --- java/nio/LongBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/LongBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -1,5 +1,5 @@ /* LongBufferImpl.java -- - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -98,10 +98,16 @@ } /** - * Relative get method. Reads the next long from the buffer. + * Reads the long at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * longs in this buffer. */ public long get () { + checkForUnderflow(); + long result = backing_buffer [position ()]; position (position () + 1); return result; @@ -110,14 +116,16 @@ /** * Relative put method. Writes value to the next position * in the buffer. - * + * + * @exception BufferOverflowException If there is insufficient space in this + * buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public LongBuffer put (long value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkForOverflow(); + backing_buffer [position ()] = value; position (position () + 1); return this; @@ -132,6 +140,8 @@ */ public long get (int index) { + checkIndex(index); + return backing_buffer [index]; } @@ -145,9 +155,9 @@ */ public LongBuffer put (int index, long value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkIndex(index); + backing_buffer [index] = value; return this; } Index: java/nio/LongViewBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/LongViewBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 LongViewBufferImpl.java --- java/nio/LongViewBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/LongViewBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -66,6 +66,13 @@ this.endian = endian; } + /** + * Reads the long at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * longs in this buffer. + */ public long get () { int p = position(); @@ -74,6 +81,13 @@ return result; } + /** + * Absolute get method. Reads the long at position + * index. + * + * @exception IndexOutOfBoundsException If index is negative or not smaller + * than the buffer's limit. + */ public long get (int index) { return ByteBufferHelper.getLong(bb, (index << 3) + offset, endian); Index: java/nio/MappedByteBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/MappedByteBufferImpl.java,v retrieving revision 1.9 diff -u -r1.9 MappedByteBufferImpl.java --- java/nio/MappedByteBufferImpl.java 22 Apr 2004 07:28:17 -0000 1.9 +++ java/nio/MappedByteBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -68,9 +68,9 @@ public byte get () { + checkForUnderflow(); + int pos = position(); - if (pos >= limit()) - throw new BufferUnderflowException(); byte result = DirectByteBufferImpl.getImpl(address, pos); position (pos + 1); return result; @@ -78,9 +78,10 @@ public ByteBuffer put (byte value) { + checkIfReadOnly(); + checkForOverflow(); + int pos = position(); - if (pos >= limit()) - throw new BufferUnderflowException(); DirectByteBufferImpl.putImpl(address, pos, value); position(pos + 1); return this; @@ -88,17 +89,15 @@ public byte get (int index) { - if (index >= limit()) - throw new BufferUnderflowException(); + checkIndex(index); + return DirectByteBufferImpl.getImpl(address, index); } public ByteBuffer get (byte[] dst, int offset, int length) { - if (offset < 0 || length < 0 || offset + length > dst.length) - throw new IndexOutOfBoundsException (); - if (length > remaining()) - throw new BufferUnderflowException(); + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); int index = position(); DirectByteBufferImpl.getImpl(address, index, dst, offset, length); @@ -109,8 +108,9 @@ public ByteBuffer put (int index, byte value) { - if (index >= limit()) - throw new BufferUnderflowException(); + checkIfReadOnly(); + checkIndex(index); + DirectByteBufferImpl.putImpl(address, index, value); return this; } Index: java/nio/ShortBuffer.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/ShortBuffer.java,v retrieving revision 1.16 diff -u -r1.16 ShortBuffer.java --- java/nio/ShortBuffer.java 29 Apr 2004 18:04:46 -0000 1.16 +++ java/nio/ShortBuffer.java 15 Jun 2004 16:44:47 -0000 @@ -83,8 +83,9 @@ } /** - * This method transfers shorts from this buffer into the given - * destination array. + * This method transfers shorts from this buffer into the given + * destination array. Before the transfer, it checks if there are fewer than + * length shorts remaining in this buffer. * * @param dst The destination array * @param offset The offset within the array of the first short @@ -93,12 +94,15 @@ * must be non-negative and no larger than dst.length - offset. * * @exception BufferUnderflowException If there are fewer than length - * shorts remaining in this buffer. + * shorts remaining in this buffer. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold. */ public ShortBuffer get (short[] dst, int offset, int length) { + checkArraySize(dst.length, offset, length); + checkForUnderflow(length); + for (int i = offset; i < offset + length; i++) { dst [i] = get (); @@ -108,13 +112,13 @@ } /** - * This method transfers shorts from this buffer into the given + * This method transfers shorts from this buffer into the given * destination array. * * @param dst The byte array to write into. * * @exception BufferUnderflowException If there are fewer than dst.length - * shorts remaining in this buffer. + * shorts remaining in this buffer. */ public ShortBuffer get (short[] dst) { @@ -123,12 +127,13 @@ /** * Writes the content of the the ShortBUFFER src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * src.remaining() space remaining in this buffer. * * @param src The source data. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining shorts in the source buffer. + * buffer for the remaining shorts in the source buffer. * @exception IllegalArgumentException If the source buffer is this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ @@ -137,8 +142,7 @@ if (src == this) throw new IllegalArgumentException (); - if (src.remaining () > remaining ()) - throw new BufferOverflowException (); + checkForOverflow(src.remaining ()); if (src.remaining () > 0) { @@ -152,7 +156,8 @@ /** * Writes the content of the the short array src - * into the buffer. + * into the buffer. Before the transfer, it checks if there is fewer than + * length space remaining in this buffer. * * @param src The array to copy into the buffer. * @param offset The offset within the array of the first byte to be read; @@ -161,13 +166,16 @@ * must be non-negative and no larger than src.length - offset. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining shorts in the source array. + * buffer for the remaining shorts in the source array. * @exception IndexOutOfBoundsException If the preconditions on the offset * and length parameters do not hold * @exception ReadOnlyBufferException If this buffer is read-only. */ public ShortBuffer put (short[] src, int offset, int length) { + checkArraySize(src.length, offset, length); + checkForOverflow(length); + for (int i = offset; i < offset + length; i++) put (src [i]); @@ -181,7 +189,7 @@ * @param src The array to copy into the buffer. * * @exception BufferOverflowException If there is insufficient space in this - * buffer for the remaining shorts in the source array. + * buffer for the remaining shorts in the source array. * @exception ReadOnlyBufferException If this buffer is read-only. */ public final ShortBuffer put (short[] src) @@ -211,8 +219,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return backing_buffer; } @@ -229,8 +236,7 @@ if (backing_buffer == null) throw new UnsupportedOperationException (); - if (isReadOnly ()) - throw new ReadOnlyBufferException (); + checkIfReadOnly(); return array_offset; } @@ -298,7 +304,7 @@ * and then increments the position. * * @exception BufferUnderflowException If there are no remaining - * shorts in this buffer. + * shorts in this buffer. */ public abstract short get (); @@ -307,7 +313,7 @@ * and then increments the position. * * @exception BufferOverflowException If there no remaining - * shorts in this buffer. + * shorts in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public abstract ShortBuffer put (short b); Index: java/nio/ShortBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/ShortBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 ShortBufferImpl.java --- java/nio/ShortBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/ShortBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -1,5 +1,5 @@ /* ShortBufferImpl.java -- - Copyright (C) 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -98,10 +98,16 @@ } /** - * Relative get method. Reads the next short from the buffer. + * Reads the short at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * shorts in this buffer. */ public short get () { + checkForUnderflow(); + short result = backing_buffer [position ()]; position (position () + 1); return result; @@ -110,14 +116,16 @@ /** * Relative put method. Writes value to the next position * in the buffer. - * + * + * @exception BufferOverflowException If there no remaining + * space in this buffer. * @exception ReadOnlyBufferException If this buffer is read-only. */ public ShortBuffer put (short value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkForOverflow(); + backing_buffer [position ()] = value; position (position () + 1); return this; @@ -132,6 +140,8 @@ */ public short get (int index) { + checkIndex(index); + return backing_buffer [index]; } @@ -145,9 +155,9 @@ */ public ShortBuffer put (int index, short value) { - if (readOnly) - throw new ReadOnlyBufferException (); - + checkIfReadOnly(); + checkIndex(index); + backing_buffer [index] = value; return this; } Index: java/nio/ShortViewBufferImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/nio/ShortViewBufferImpl.java,v retrieving revision 1.4 diff -u -r1.4 ShortViewBufferImpl.java --- java/nio/ShortViewBufferImpl.java 8 Apr 2004 20:45:13 -0000 1.4 +++ java/nio/ShortViewBufferImpl.java 15 Jun 2004 16:44:47 -0000 @@ -66,6 +66,13 @@ this.endian = endian; } + /** + * Reads the short at this buffer's current position, + * and then increments the position. + * + * @exception BufferUnderflowException If there are no remaining + * shorts in this buffer. + */ public short get () { int p = position(); @@ -74,6 +81,13 @@ return result; } + /** + * Absolute get method. Reads the short at position + * index. + * + * @exception IndexOutOfBoundsException If index is negative or not smaller + * than the buffer's limit. + */ public short get (int index) { return ByteBufferHelper.getShort(bb, (index << 1) + offset, endian); --------------030705070906090208070100-- From MAILER-DAEMON Wed Jun 16 16:39:34 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BahC2-0002uL-8Q for mharc-commit-classpath@gnu.org; Wed, 16 Jun 2004 16:39:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BahC0-0002tP-8K for commit-classpath@gnu.org; Wed, 16 Jun 2004 16:39:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BahBy-0002sy-JW for commit-classpath@gnu.org; Wed, 16 Jun 2004 16:39:31 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BahBy-0002sk-FS for commit-classpath@gnu.org; Wed, 16 Jun 2004 16:39:30 -0400 Received: from [139.19.1.2] (helo=francois.mpi-sb.mpg.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BahAp-0006IX-3U for commit-classpath@gnu.org; Wed, 16 Jun 2004 16:38:19 -0400 Received: from amavis by francois.mpi-sb.mpg.de with scanned-ok (Exim 3.35 #1 (Debian)) id 1BahAo-0005y7-00 for ; Wed, 16 Jun 2004 22:38:18 +0200 Received: from data ([139.19.90.238] helo=mpi-sb.mpg.de) by francois.mpi-sb.mpg.de with esmtp (Exim 3.35 #1 (Debian)) id 1BahAm-0005xw-00 for ; Wed, 16 Jun 2004 22:38:16 +0200 Received: from [139.19.20.12] (topic@mpiat2003 [139.19.20.12]) by mpi-sb.mpg.de (8.12.9+Sun/8.12.9) with ESMTP id i5GKcF7D022719 for ; Wed, 16 Jun 2004 22:38:15 +0200 (MEST) Message-ID: <40D0AFB6.6020700@kaffe.org> Date: Wed, 16 Jun 2004 22:38:14 +0200 From: Dalibor Topic User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040608 X-Accept-Language: en-us, en MIME-Version: 1.0 To: commit-classpath Content-Type: multipart/mixed; boundary="------------050209090406060000070405" X-Virus-Scanned: by AMaViS perl-11 Subject: patch to improve javadoc and exception message in DateFormat.parse X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2004 20:39:32 -0000 This is a multi-part message in MIME format. --------------050209090406060000070405 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi all, attached is small patch for DateFormat.parse and its changelog. OK to commit? cheers, dalibor topic --------------050209090406060000070405 Content-Type: text/plain; name="classpath-date-format-exception.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="classpath-date-format-exception.diff" --- /tmp/topic/classpath/java/text/DateFormat.java Wed Jun 16 20:37:28 2004 +++ java/text/DateFormat.java Wed Jun 16 21:54:41 2004 @@ -591,6 +591,7 @@ /** * This method parses the specified date/time string. * + * @param source The string to parse. * @return The resultant date. * * @exception ParseException If the specified string cannot be parsed. @@ -604,7 +605,7 @@ int index = pos.getErrorIndex(); if (index < 0) index = pos.getIndex(); - throw new ParseException("invalid Date syntax", index); + throw new ParseException("invalid Date syntax in string \"" + source + '\"', index); } return result; } --------------050209090406060000070405 Content-Type: text/plain; name="classpath-date-format-exception.diff.changelog" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="classpath-date-format-exception.diff.changelog" 2003-06-16 Dalibor Topic * java/text/DateFormat.java (parse) Improved javadoc. Improved exception message. --------------050209090406060000070405-- From MAILER-DAEMON Wed Jun 16 18:43:22 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Baj7q-0000aU-9L for mharc-commit-classpath@gnu.org; Wed, 16 Jun 2004 18:43:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Baj7p-0000Zn-4X for commit-classpath@gnu.org; Wed, 16 Jun 2004 18:43:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Baj7n-0000ZO-QA for commit-classpath@gnu.org; Wed, 16 Jun 2004 18:43:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Baj7n-0000ZE-OA for commit-classpath@gnu.org; Wed, 16 Jun 2004 18:43:19 -0400 Received: from [139.19.1.2] (helo=francois.mpi-sb.mpg.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Baj6k-0004qV-8M for commit-classpath@gnu.org; Wed, 16 Jun 2004 18:42:14 -0400 Received: from amavis by francois.mpi-sb.mpg.de with scanned-ok (Exim 3.35 #1 (Debian)) id 1Baj6j-0004iK-00 for ; Thu, 17 Jun 2004 00:42:13 +0200 Received: from data ([139.19.90.238] helo=mpi-sb.mpg.de) by francois.mpi-sb.mpg.de with esmtp (Exim 3.35 #1 (Debian)) id 1Baj6e-0004hX-00; Thu, 17 Jun 2004 00:42:08 +0200 Received: from [139.19.20.12] (topic@mpiat2003 [139.19.20.12]) by mpi-sb.mpg.de (8.12.9+Sun/8.12.9) with ESMTP id i5GMg77D004346; Thu, 17 Jun 2004 00:42:07 +0200 (MEST) Message-ID: <40D0CCBF.1020107@kaffe.org> Date: Thu, 17 Jun 2004 00:42:07 +0200 From: Dalibor Topic User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040608 X-Accept-Language: en-us, en MIME-Version: 1.0 To: commit-classpath , "Jeroen Frijters" Content-Type: multipart/mixed; boundary="------------050504050605000101020603" X-Virus-Scanned: by AMaViS perl-11 Cc: Subject: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2004 22:43:21 -0000 This is a multi-part message in MIME format. --------------050504050605000101020603 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi all, I've implemented VMThread.holdLock in java. It's is probably quite slow, and wakes up the ocassional thread without much use, but hey, it's in java, so that's one less method to implement. OK to commit? cheers, dalibor topic --------------050504050605000101020603 Content-Type: text/plain; name="classpath-holds-lock.diff.changelog" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="classpath-holds-lock.diff.changelog" 2003-06-16 Dalibor Topic * vm/reference/java/lang/VMThread.java (holdsLock) Implemented in java. --------------050504050605000101020603 Content-Type: text/plain; name="classpath-holds-lock.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="classpath-holds-lock.diff" Index: vm/reference/java/lang/VMThread.java =================================================================== RCS file: /cvsroot/classpath/classpath/vm/reference/java/lang/VMThread.java,v retrieving revision 1.1 diff -u -r1.1 VMThread.java --- vm/reference/java/lang/VMThread.java 29 Aug 2003 12:43:07 -0000 1.1 +++ vm/reference/java/lang/VMThread.java 16 Jun 2004 22:39:19 -0000 @@ -58,7 +58,6 @@ *

  • static native void yield(); *
  • static native void sleep(long ms, int ns) throws InterruptedException; *
  • static native boolean interrupted(); - *
  • static native boolean holdsLock(Object obj); * * All other methods may be implemented to make Thread handling more efficient * or to implement some optional (and sometimes deprecated) behaviour. Default @@ -66,6 +65,7 @@ * for a specific VM. * * @author Jeroen Frijters (jeroen@frijters.net) + * @author Dalibor Topic (robilad@kaffe.org) */ final class VMThread { @@ -389,5 +389,22 @@ * @return true if the current thread is currently synchronized on obj * @throws NullPointerException if obj is null */ - static native boolean holdsLock(Object obj); + static boolean holdsLock(Object obj) + { + /* Use obj.notify to check if the current thread holds + * the monitor of the object. + * If it doesn't, notify will throw an exception. + */ + try + { + obj.notify(); + // okay, current thread holds lock + return true; + } + catch (IllegalMonitorStateException e) + { + // it doesn't hold the lock + return false; + } + } } --------------050504050605000101020603-- From MAILER-DAEMON Wed Jun 16 19:33:21 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BajuC-0005zO-Ve for mharc-commit-classpath@gnu.org; Wed, 16 Jun 2004 19:33:21 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BajuB-0005zD-Kq for commit-classpath@gnu.org; Wed, 16 Jun 2004 19:33:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BajuA-0005z1-4C for commit-classpath@gnu.org; Wed, 16 Jun 2004 19:33:19 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BajuA-0005yy-0r for commit-classpath@gnu.org; Wed, 16 Jun 2004 19:33:18 -0400 Received: from [209.225.28.207] (helo=mxsf07.cluster1.charter.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bajsl-0003kr-Fg for commit-classpath@gnu.org; Wed, 16 Jun 2004 19:31:51 -0400 Received: from mxip14.cluster1.charter.net (mxip14a.cluster1.charter.net [209.225.28.144]) by mxsf07.cluster1.charter.net (8.12.11/8.12.11) with ESMTP id i5GNURU7098364 for ; Wed, 16 Jun 2004 19:30:27 -0400 (EDT) Received: from cable-24-196-25-11.mtv.al.charter.com (HELO InterJet.dellroad.org) (24.196.25.11) by mxip14.cluster1.charter.net with ESMTP; 16 Jun 2004 19:30:24 -0400 Received: from arch20m.dellroad.org (arch20m.dellroad.org [10.2.2.20]) by InterJet.dellroad.org (8.9.1a/8.9.1) with ESMTP id SAA04306; Wed, 16 Jun 2004 18:28:08 -0500 (CDT) Received: from arch20m.dellroad.org (localhost [127.0.0.1]) by arch20m.dellroad.org (8.12.9p2/8.12.6) with ESMTP id i5GNS8m6000539; Wed, 16 Jun 2004 18:28:08 -0500 (CDT) (envelope-from archie@arch20m.dellroad.org) Received: (from archie@localhost) by arch20m.dellroad.org (8.12.9p2/8.12.9/Submit) id i5GNS7YL000538; Wed, 16 Jun 2004 18:28:07 -0500 (CDT) (envelope-from archie) From: Archie Cobbs Message-Id: <200406162328.i5GNS7YL000538@arch20m.dellroad.org> In-Reply-To: <40D0CCBF.1020107@kaffe.org> To: Dalibor Topic Date: Wed, 16 Jun 2004 18:28:07 -0500 (CDT) X-Mailer: ELM [version 2.4ME+ PL99b (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2004 23:33:19 -0000 Dalibor Topic wrote: > I've implemented VMThread.holdLock in java. It's is probably quite slow, > and wakes up the ocassional thread without much use, but hey, it's in > java, so that's one less method to implement. OK to commit? Java in theory guarantees that threads are woken up only when notified via notify(), though not all VMs follow this (typically because they rely on pthread_cond variables, which don't provide this guarantee). So it your implementation potentially could produce bugs in otherwise correct programs. This is not a reason to not add it, but at the minimum a comment should be included with a warning, etc. -Archie __________________________________________________________________________ Archie Cobbs * CTO, Awarix * http://www.awarix.com From MAILER-DAEMON Thu Jun 17 03:25:28 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BarH6-0003Ui-MS for mharc-commit-classpath@gnu.org; Thu, 17 Jun 2004 03:25:28 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BarH5-0003Sl-GM for commit-classpath@gnu.org; Thu, 17 Jun 2004 03:25:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BarH3-0003Qf-Rx for commit-classpath@gnu.org; Thu, 17 Jun 2004 03:25:27 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BarH3-0003QZ-Dv for commit-classpath@gnu.org; Thu, 17 Jun 2004 03:25:25 -0400 Received: from [62.177.154.238] (helo=lembu.sumatrasoftware.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BarFy-0002ij-U4 for commit-classpath@gnu.org; Thu, 17 Jun 2004 03:24:19 -0400 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Date: Thu, 17 Jun 2004 09:24:11 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 Message-ID: <788B535AB1F9CB49BB9C229372B50ACC10CC4F@LEMBU.sumatrasoftware.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Patch: Thread.holdLock implementation in java Thread-Index: AcRT+qcMZy/uSacGTMSMyUZ4jz+l4wAQHNuw From: "Jeroen Frijters" To: "Archie Cobbs" , "Dalibor Topic" Cc: commit-classpath Subject: RE: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2004 07:25:27 -0000 Archie Cobbs wrote: > Dalibor Topic wrote: > > I've implemented VMThread.holdLock in java. It's is=20 > probably quite slow,=20 > > and wakes up the ocassional thread without much use, but=20 > hey, it's in=20 > > java, so that's one less method to implement. OK to commit? >=20 > Java in theory guarantees that threads are woken up only when > notified via notify(), though not all VMs follow this (typically > because they rely on pthread_cond variables, which don't provide > this guarantee). So it your implementation potentially could produce > bugs in otherwise correct programs. >=20 > This is not a reason to not add it, but at the minimum a=20 > comment should be included with a warning, etc. Agreed. I use a slight variant, which has a different set of problems: static boolean holdsLock(Object obj) { if(obj =3D=3D null) { throw new NullPointerException(); } try { // HACK this is a lame way of doing this, but I can't see any other way // NOTE Wait causes the lock to be released temporarily, which isn't what we want if(false) throw new IllegalMonitorStateException(); if(false) throw new InterruptedException(); cli.System.Threading.Monitor.Wait(obj, 0); return true; } catch(IllegalMonitorStateException x) { return false; } catch(InterruptedException x1) { // since we "consumed" the interrupt, we have to interrupt ourself again cli.System.Threading.Thread.get_CurrentThread().Interrupt(); return true; } } Note that the .NET Monitor.Wait(obj, 0) waits 0 ms, not indefinitely like Java. I think that the (potential) temporary release of the lock isn't as bad as a spurious notify Regards, Jeroen From MAILER-DAEMON Thu Jun 17 12:13:12 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BazVn-0000Cq-U2 for mharc-commit-classpath@gnu.org; Thu, 17 Jun 2004 12:13:11 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BazVm-0000BV-NI for commit-classpath@gnu.org; Thu, 17 Jun 2004 12:13:10 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BazVk-000090-Fs for commit-classpath@gnu.org; Thu, 17 Jun 2004 12:13:09 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BazVk-00008A-Bp for commit-classpath@gnu.org; Thu, 17 Jun 2004 12:13:08 -0400 Received: from [139.19.1.1] (helo=interferon.mpi-sb.mpg.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BazUc-0007F8-6J for commit-classpath@gnu.org; Thu, 17 Jun 2004 12:11:58 -0400 Received: from amavis by interferon.mpi-sb.mpg.de with scanned-ok (Exim 3.35 #1 (Debian)) id 1BazUa-0006rj-00 for ; Thu, 17 Jun 2004 18:11:56 +0200 Received: from data ([139.19.90.238] helo=mpi-sb.mpg.de) by interferon.mpi-sb.mpg.de with esmtp (Exim 3.35 #1 (Debian)) id 1BazCE-0003il-02; Thu, 17 Jun 2004 17:52:58 +0200 Received: from [139.19.20.12] (topic@mpiat2003 [139.19.20.12]) by mpi-sb.mpg.de (8.12.9+Sun/8.12.9) with ESMTP id i5HEAR3Q029511; Thu, 17 Jun 2004 16:10:27 +0200 (MEST) Message-ID: <40D1A652.2020709@kaffe.org> Date: Thu, 17 Jun 2004 16:10:26 +0200 From: Dalibor Topic User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040608 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Jeroen Frijters References: <788B535AB1F9CB49BB9C229372B50ACC10CC4F@LEMBU.sumatrasoftware.com> In-Reply-To: <788B535AB1F9CB49BB9C229372B50ACC10CC4F@LEMBU.sumatrasoftware.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by AMaViS perl-11 Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2004 16:13:11 -0000 Hi Jeroen, Jeroen Frijters wrote: > Archie Cobbs wrote: > >>Dalibor Topic wrote: >> >>>I've implemented VMThread.holdLock in java. It's is >> >>probably quite slow, >> >>>and wakes up the ocassional thread without much use, but >> >>hey, it's in >> >>>java, so that's one less method to implement. OK to commit? >> >>Java in theory guarantees that threads are woken up only when >>notified via notify(), though not all VMs follow this (typically >>because they rely on pthread_cond variables, which don't provide >>this guarantee). So it your implementation potentially could produce >>bugs in otherwise correct programs. >> >>This is not a reason to not add it, but at the minimum a >>comment should be included with a warning, etc. > > > Agreed. > > I use a slight variant, which has a different set of problems: > > static boolean holdsLock(Object obj) > { > if(obj == null) > { > throw new NullPointerException(); > } > try > { > // HACK this is a lame way of doing this, but I can't see any other > way > // NOTE Wait causes the lock to be released temporarily, which isn't > what we want > if(false) throw new IllegalMonitorStateException(); > if(false) throw new InterruptedException(); > cli.System.Threading.Monitor.Wait(obj, 0); > return true; > } > catch(IllegalMonitorStateException x) > { > return false; > } > catch(InterruptedException x1) > { > // since we "consumed" the interrupt, we have to interrupt ourself > again > cli.System.Threading.Thread.get_CurrentThread().Interrupt(); > return true; > } > } > > Note that the .NET Monitor.Wait(obj, 0) waits 0 ms, not indefinitely > like Java. > > I think that the (potential) temporary release of the lock isn't as bad > as a spurious notify I'm not convinced that wait is the lesser evil. The release of the lock can lead to a spurious deadlock, as wait just releases the locks a thread holds for the single object. If the thread holds another lock B on a different object, and the next thread acquiring the lock wants to acquire lock B as well, before it releases both locks, then we have a spurious deadlock. Notify doesn't have that problem, as it releases no locks. cheers, dalibor topic From MAILER-DAEMON Thu Jun 17 13:30:34 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bb0ig-0006VD-KX for mharc-commit-classpath@gnu.org; Thu, 17 Jun 2004 13:30:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bb0ie-0006Ut-Rm for commit-classpath@gnu.org; Thu, 17 Jun 2004 13:30:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bb0ic-0006UB-SC for commit-classpath@gnu.org; Thu, 17 Jun 2004 13:30:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bb0ic-0006U5-QR for commit-classpath@gnu.org; Thu, 17 Jun 2004 13:30:30 -0400 Received: from [139.19.1.2] (helo=francois.mpi-sb.mpg.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bb0hW-00061x-KK for commit-classpath@gnu.org; Thu, 17 Jun 2004 13:29:23 -0400 Received: from amavis by francois.mpi-sb.mpg.de with scanned-ok (Exim 3.35 #1 (Debian)) id 1Bb0hV-0000zA-00 for ; Thu, 17 Jun 2004 19:29:21 +0200 Received: from data ([139.19.90.238] helo=mpi-sb.mpg.de) by francois.mpi-sb.mpg.de with esmtp (Exim 3.35 #1 (Debian)) id 1BawgD-0007NT-00; Thu, 17 Jun 2004 15:11:45 +0200 Received: from [139.19.20.12] (topic@mpiat2003 [139.19.20.12]) by mpi-sb.mpg.de (8.12.9+Sun/8.12.9) with ESMTP id i5HDBj7D027829; Thu, 17 Jun 2004 15:11:45 +0200 (MEST) Message-ID: <40D19890.2050306@kaffe.org> Date: Thu, 17 Jun 2004 15:11:44 +0200 From: Dalibor Topic User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040608 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Archie Cobbs References: <200406162328.i5GNS7YL000538@arch20m.dellroad.org> In-Reply-To: <200406162328.i5GNS7YL000538@arch20m.dellroad.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by AMaViS perl-11 Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2004 17:30:33 -0000 Hi Archie, Archie Cobbs wrote: > Dalibor Topic wrote: > >>I've implemented VMThread.holdLock in java. It's is probably quite slow, >>and wakes up the ocassional thread without much use, but hey, it's in >>java, so that's one less method to implement. OK to commit? > > > Java in theory guarantees that threads are woken up only when > notified via notify(), though not all VMs follow this (typically > because they rely on pthread_cond variables, which don't provide > this guarantee). So it your implementation potentially could produce > bugs in otherwise correct programs. I don't think Java's threading model guarantees that. The new Java Memory model spec explicitely allows spurious wakeups, from what I've seen by googling their mailing list. In any case JDK 1.5's javadoc is very clear that spurious wakepus can happen. See http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long) Also check out doug lea's book on concurrent programming,2nd edition, section 3.2.3: http://www.awprofessional.com/articles/article.asp?p=31539&seqNum=2 "Condition checks must be placed in while loops. When an action is resumed, the waiting task doesn't know whether the condition it is waiting for is actually true; it only knows that it has been woken up. So, in order to maintain safety properties, it must check again. As a matter of programming practice, this style should be used even if the class contains only a single instance of wait that waits for a single condition. It is never acceptable to write code that assumes an object is in some particular state when it resumes after a given wait. One reason is that such code could fail just because some other unrelated object invoked notify or notifyAll on the target object by mistake. (These are public methods defined on all objects.) Additionally, it is wise to avoid breakage in the case of spurious wakeups in which waits are released by the system without any explicit call to a notification method4. However, a more important consideration is that without re-evaluation, such code will start failing in peculiar ways if people define additional methods (perhaps in subclasses of your class) that also use waits and notifications for other purposes." For another reference, see Joshua Bloch's Effective Java, Item 50: Never invoke wait outside a loop. [1] So I think all my implementation could do is to expose bugs in programs where developers made flawed assumptions about the threading model. Which is, well, their problem ;) cheers, dalibor topic [1] I've got most of my references from http://www.cs.rug.nl/~wim/pub/whh241b.pdf From MAILER-DAEMON Thu Jun 17 14:17:30 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bb1S6-0001dB-BH for mharc-commit-classpath@gnu.org; Thu, 17 Jun 2004 14:17:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bb1S4-0001cy-Ck for commit-classpath@gnu.org; Thu, 17 Jun 2004 14:17:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bb1S3-0001cm-Ng for commit-classpath@gnu.org; Thu, 17 Jun 2004 14:17:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bb1S3-0001cj-Le for commit-classpath@gnu.org; Thu, 17 Jun 2004 14:17:27 -0400 Received: from [209.225.28.217] (helo=mxsf17.cluster1.charter.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bb1QW-0005vH-IC for commit-classpath@gnu.org; Thu, 17 Jun 2004 14:15:52 -0400 Received: from mxip07.cluster1.charter.net (mxip07a.cluster1.charter.net [209.225.28.137]) by mxsf17.cluster1.charter.net (8.12.11/8.12.11) with ESMTP id i5HI9tLC032189 for ; Thu, 17 Jun 2004 14:09:55 -0400 (EDT) Received: from cable-24-196-25-11.mtv.al.charter.com (HELO InterJet.dellroad.org) (24.196.25.11) by mxip07.cluster1.charter.net with ESMTP; 17 Jun 2004 14:09:55 -0400 Received: from arch20m.dellroad.org ([10.104.180.64]) by InterJet.dellroad.org (8.9.1a/8.9.1) with ESMTP id MAA14385; Thu, 17 Jun 2004 12:59:54 -0500 (CDT) Received: from arch20m.dellroad.org (localhost [127.0.0.1]) by arch20m.dellroad.org (8.12.9p2/8.12.9) with ESMTP id i5HHxpNb041121; Thu, 17 Jun 2004 12:59:52 -0500 (CDT) (envelope-from archie@arch20m.dellroad.org) Received: (from archie@localhost) by arch20m.dellroad.org (8.12.9p2/8.12.9/Submit) id i5HHxoIw041120; Thu, 17 Jun 2004 12:59:50 -0500 (CDT) (envelope-from archie) From: Archie Cobbs Message-Id: <200406171759.i5HHxoIw041120@arch20m.dellroad.org> In-Reply-To: <40D19890.2050306@kaffe.org> To: Dalibor Topic Date: Thu, 17 Jun 2004 12:59:50 -0500 (CDT) X-Mailer: ELM [version 2.4ME+ PL99b (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2004 18:17:28 -0000 Dalibor Topic wrote: > I don't think Java's threading model guarantees that. The new Java > Memory model spec explicitely allows spurious wakeups, from what I've > seen by googling their mailing list. > > In any case JDK 1.5's javadoc is very clear that spurious wakepus can > happen. See > http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long) That description is ambiguous. It seems to me that "spurious wakeups" are an artifact of certain programming practices, not the VM itself. E.g., I don't see spurious wakeups listed in the four bullet points that descripe the possible wakeup conditions, which seems like the more normative list. The fact that they refer to books about good programming practice would seem to bolster my point. So at best, it's not clear what the "spec" is. I'd be conservative. (In any case, it's not a big deal to me personally because JC already implements this method natively). > Also check out doug lea's book on concurrent programming,2nd edition, > section 3.2.3: > http://www.awprofessional.com/articles/article.asp?p=31539&seqNum=2 > > "Condition checks must be placed in while loops. When an action is > resumed, the waiting task doesn't know whether the condition it is > waiting for is actually true; it only knows that it has been woken up. > So, in order to maintain safety properties, it must check again. > > As a matter of programming practice, this style should be used even if > the class contains only a single instance of wait that waits for a > single condition. It is never acceptable to write code that assumes an > object is in some particular state when it resumes after a given wait. > One reason is that such code could fail just because some other > unrelated object invoked notify or notifyAll on the target object by > mistake. (These are public methods defined on all objects.) > Additionally, it is wise to avoid breakage in the case of spurious > wakeups in which waits are released by the system without any explicit > call to a notification method4. However, a more important consideration > is that without re-evaluation, such code will start failing in peculiar > ways if people define additional methods (perhaps in subclasses of your > class) that also use waits and notifications for other purposes." > > For another reference, see Joshua Bloch's Effective Java, Item 50: > Never invoke wait outside a loop. [1] All of this is fine and agreeable but completely beside the point. We're talking about what the specified VM behavior is, not what is good programming practice. > So I think all my implementation could do is to expose bugs in programs > where developers made flawed assumptions about the threading model. No, you'd create bugs in perfectly valid programs that rely on the specified behavior like the class below: public class Event { private boolean triggered = false; public synchronized void waitFor() throws InterruptedException { if (triggered) return; wait(); } public synchronized void trigger() { triggered = true; notify(); } } -Archie __________________________________________________________________________ Archie Cobbs * CTO, Awarix * http://www.awarix.com From MAILER-DAEMON Fri Jun 18 02:17:02 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbCgQ-0007p1-7I for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 02:17:02 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbCgO-0007mX-KB for commit-classpath@gnu.org; Fri, 18 Jun 2004 02:17:00 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbCgM-0007jG-VR for commit-classpath@gnu.org; Fri, 18 Jun 2004 02:17:00 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbCgM-0007j1-Qe for commit-classpath@gnu.org; Fri, 18 Jun 2004 02:16:58 -0400 Received: from [62.177.154.238] (helo=lembu.sumatrasoftware.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbCfD-0004nR-Na for commit-classpath@gnu.org; Fri, 18 Jun 2004 02:15:47 -0400 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Date: Fri, 18 Jun 2004 08:15:43 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 Message-ID: <788B535AB1F9CB49BB9C229372B50ACC10CC60@LEMBU.sumatrasoftware.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Patch: Thread.holdLock implementation in java Thread-Index: AcRUlxmvN9O2iyw9Q466aN4mioCfVwAZDlsw From: "Jeroen Frijters" To: "Archie Cobbs" , "Dalibor Topic" Cc: commit-classpath Subject: RE: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 06:17:01 -0000 Archie Cobbs wrote: > That description is ambiguous. It seems to me that "spurious wakeups" > are an artifact of certain programming practices, not the VM itself. I totally agree with Archie. Good programming practices !=3D VM spec. Upon reflection, it might be best not to provide a Java implementation of holdsLock, since it will never be correct. I, however, am forced to continue to use my broken implementation :-( Regards, Jeroen From MAILER-DAEMON Fri Jun 18 09:01:16 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbIzX-0006KF-19 for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 09:01:11 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbIzQ-0006GI-QO for commit-classpath@gnu.org; Fri, 18 Jun 2004 09:01:05 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbIzF-0006CA-SS for commit-classpath@gnu.org; Fri, 18 Jun 2004 09:00:56 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbIzC-0006B2-Lq for commit-classpath@gnu.org; Fri, 18 Jun 2004 09:00:51 -0400 Received: from [139.19.1.2] (helo=francois.mpi-sb.mpg.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbIxd-0005lt-MQ for commit-classpath@gnu.org; Fri, 18 Jun 2004 08:59:14 -0400 Received: from amavis by francois.mpi-sb.mpg.de with scanned-ok (Exim 3.35 #1 (Debian)) id 1BbIxd-0004JE-00 for ; Fri, 18 Jun 2004 14:59:13 +0200 Received: from data ([139.19.90.238] helo=mpi-sb.mpg.de) by francois.mpi-sb.mpg.de with esmtp (Exim 3.35 #1 (Debian)) id 1BbIxY-0004IZ-00; Fri, 18 Jun 2004 14:59:08 +0200 Received: from [139.19.20.12] (topic@mpiat2003 [139.19.20.12]) by mpi-sb.mpg.de (8.12.9+Sun/8.12.9) with ESMTP id i5ICx7n7010361; Fri, 18 Jun 2004 14:59:07 +0200 (MEST) Message-ID: <40D2E718.5020101@kaffe.org> Date: Fri, 18 Jun 2004 14:59:04 +0200 From: Dalibor Topic User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040608 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Archie Cobbs References: <200406171759.i5HHxoIw041120@arch20m.dellroad.org> In-Reply-To: <200406171759.i5HHxoIw041120@arch20m.dellroad.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by AMaViS perl-11 Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 13:01:08 -0000 Hi Archie, Archie Cobbs wrote: > Dalibor Topic wrote: > >>I don't think Java's threading model guarantees that. The new Java >>Memory model spec explicitely allows spurious wakeups, from what I've >>seen by googling their mailing list. >> >>In any case JDK 1.5's javadoc is very clear that spurious wakepus can >>happen. See >>http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long) > > > That description is ambiguous. It seems to me that "spurious wakeups" > are an artifact of certain programming practices, not the VM itself. > > E.g., I don't see spurious wakeups listed in the four bullet points that > descripe the possible wakeup conditions, which seems like the more > normative list. The fact that they refer to books about good programming > practice would seem to bolster my point. > > So at best, it's not clear what the "spec" is. I'd be conservative. > > (In any case, it's not a big deal to me personally because JC already > implements this method natively). Wait, I've got more :) The JSR 133 (the java memory model) drafts http://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf explicitely list spurious wakeups, page 38. "Otherwise, the following sequence occurs: 1. Thread t is added to the wait set of object m, and performs n unlock actions on m. 2. Thread t does not execute any further Java instructions until it has been removed from m s wait set. The thread may be removed from the wait set due to any one of the following actions, and will resume sometime afterward. A notify action being performed on m in which t is selected for removal from the wait set. A notifyAll action being performed on m. An interrupt action being performed on t. If this is a timed wait, an internal action removing t from m s wait set that occurs after at least millisecs milliseconds plus nanosecs nanoseconds elapse since the beginning of this wait action. An internal action by the Java JVM implementation. Implementations are permitted, although not encouraged, to perform spurious wake-ups to remove threads from wait sets and thus enable resumption without explicit Java instructions to do so. Notice that this provision necessitates the Java coding practice of using wait only within loops that terminate only when some logical condition that the thread is waiting for holds." Looking at the pthreads spec, yep, pthread_cond_wait explicitely allows spurious wakeups http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cond_wait.html : "When using condition variables there is always a Boolean predicate involving shared variables associated with each condition wait that is true if the thread should proceed. Spurious wakeups from the pthread_cond_timedwait() or pthread_cond_wait() functions may occur. Since the return from pthread_cond_timedwait() or pthread_cond_wait() does not imply anything about the value of this predicate, the predicate should be re-evaluated upon such return." Finally, from the Bug Database for Java: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4308396 "Evaluation The spec should and will be clarified to indicate that spurious wakeups can occur. This is one of the many reasons that wait should *always* be used inside a loop (See Item 50 in Bloch's "Effective Java.") Note that this does not affect the JLS, which no longer contains the specifications for the core libraries. It will affect only the documentation of the Object.wait method. xxxxx@xxxxx 2003-01-21" Looks like a bug/omission in the spec to me. I particular after reading a lot of the mail on the Java memory model mailing list regarding spurious wakeups. Some people have been fighting hard against them being explicitely allowed in the specification while others have heavily argued for it;) See http://www.cs.umd.edu/~pugh/java/memoryModel/archive/1721.html "Spurious wakeups should always have been allowed. There was no deliberate intent in the API docs to preclude spurious wakeups, the lack of mention of them was simply an omission. I wish we had fixed this back in 1996/1997 but we didn't. :( " from David Holmes, for example. There are also some nice quotes from Doug Lea in the mailing list archives. cheers, dalibor topic From MAILER-DAEMON Fri Jun 18 10:42:49 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbKZs-0000oY-Nn for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 10:42:48 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbKZq-0000mo-QY for commit-classpath@gnu.org; Fri, 18 Jun 2004 10:42:46 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbKZp-0000mA-PO for commit-classpath@gnu.org; Fri, 18 Jun 2004 10:42:46 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbKZp-0000m0-Ld for commit-classpath@gnu.org; Fri, 18 Jun 2004 10:42:45 -0400 Received: from [209.225.28.219] (helo=mxsf19.cluster1.charter.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbKYa-0004Gn-If for commit-classpath@gnu.org; Fri, 18 Jun 2004 10:41:28 -0400 Received: from mxip06.cluster1.charter.net (mxip06a.cluster1.charter.net [209.225.28.136]) by mxsf19.cluster1.charter.net (8.12.11/8.12.11) with ESMTP id i5IEU7ah063750 for ; Fri, 18 Jun 2004 10:30:07 -0400 (EDT) Received: from cable-24-196-25-11.mtv.al.charter.com (HELO InterJet.dellroad.org) (24.196.25.11) by mxip06.cluster1.charter.net with ESMTP; 18 Jun 2004 10:30:05 -0400 Received: from arch20m.dellroad.org (arch20m.dellroad.org [10.2.2.20]) by InterJet.dellroad.org (8.9.1a/8.9.1) with ESMTP id JAA25634; Fri, 18 Jun 2004 09:24:48 -0500 (CDT) Received: from arch20m.dellroad.org (localhost [127.0.0.1]) by arch20m.dellroad.org (8.12.9p2/8.12.6) with ESMTP id i5IEOlvH047968; Fri, 18 Jun 2004 09:24:47 -0500 (CDT) (envelope-from archie@arch20m.dellroad.org) Received: (from archie@localhost) by arch20m.dellroad.org (8.12.9p2/8.12.9/Submit) id i5IEOl62047967; Fri, 18 Jun 2004 09:24:47 -0500 (CDT) (envelope-from archie) From: Archie Cobbs Message-Id: <200406181424.i5IEOl62047967@arch20m.dellroad.org> In-Reply-To: <40D2E718.5020101@kaffe.org> To: Dalibor Topic Date: Fri, 18 Jun 2004 09:24:47 -0500 (CDT) X-Mailer: ELM [version 2.4ME+ PL99b (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 14:42:47 -0000 Dalibor Topic wrote: > > So at best, it's not clear what the "spec" is. I'd be conservative. > > > > (In any case, it's not a big deal to me personally because JC already > > implements this method natively). > > Wait, I've got more :) The JSR 133 (the java memory model) drafts > http://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf explicitely list > spurious wakeups, page 38. > > "Otherwise, the following sequence occurs: 1. Thread t is added to the > wait set of object m, and performs n unlock actions on m. 2. Thread t > does not execute any further Java instructions until it has been removed > from m s wait set. The thread may be removed from the wait set due to > any one of the following actions, and will resume sometime afterward. > A notify action being performed on m in which t is selected for > removal from the wait set. > A notifyAll action being performed on m. > An interrupt action being performed on t. > If this is a timed wait, an internal action removing t from m s wait > set that occurs after at least millisecs milliseconds plus nanosecs > nanoseconds elapse since the beginning of this wait action. > An internal action by the Java JVM implementation. Implementations > are permitted, although not encouraged, to perform spurious wake-ups > to remove threads from wait sets and thus enable resumption without > explicit Java instructions to do so. Notice that this provision > necessitates the Java coding practice of using wait only within loops > that terminate only when some logical condition that the thread is > waiting for holds." > > Looking at the pthreads spec, yep, pthread_cond_wait explicitely allows > spurious wakeups > http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cond_wait.html > : > > "When using condition variables there is always a Boolean predicate > involving shared variables associated with each condition wait that is > true if the thread should proceed. Spurious wakeups from the > pthread_cond_timedwait() or pthread_cond_wait() functions may occur. > Since the return from pthread_cond_timedwait() or pthread_cond_wait() > does not imply anything about the value of this predicate, the predicate > should be re-evaluated upon such return." > > Finally, from the Bug Database for Java: > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4308396 > > "Evaluation > > The spec should and will be clarified to indicate that spurious wakeups > can occur. This is one of the many reasons that wait should *always* be > used inside a loop (See Item 50 in Bloch's "Effective Java.") > > Note that this does not affect the JLS, which no longer contains the > specifications for the core libraries. It will affect only the > documentation of the Object.wait method. > > xxxxx@xxxxx 2003-01-21" > > Looks like a bug/omission in the spec to me. I particular after reading > a lot of the mail on the Java memory model mailing list regarding > spurious wakeups. Some people have been fighting hard against them being > explicitely allowed in the specification while others have heavily > argued for it;) > > See http://www.cs.umd.edu/~pugh/java/memoryModel/archive/1721.html > > "Spurious wakeups should always have been allowed. > There was no deliberate intent in the API docs to preclude spurious > wakeups, the lack of mention of them was simply an omission. I wish we > had fixed this back in 1996/1997 but we didn't. :( " > > from David Holmes, for example. There are also some nice quotes from > Doug Lea in the mailing list archives. Dalibor you get an A+ for research :-) So it's clear that now they have resolved the issue as allowing spurious wakeups, but it's also clear that in the past this was not made clear (like a lot of other "small details" in the spec). Personally, I think that nothing should ever be "spurious", but it looks like I already lost that argument :-) Thanks, -Archie __________________________________________________________________________ Archie Cobbs * CTO, Awarix * http://www.awarix.com From MAILER-DAEMON Fri Jun 18 11:48:28 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbLbQ-0004kr-HJ for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 11:48:28 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbLbO-0004iE-Ud for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:48:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbLbN-0004h9-IH for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:48:26 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbLbN-0004gg-FF for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:48:25 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbLa2-00061N-HI for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:47:03 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id D252D625DD for ; Fri, 18 Jun 2004 15:46:39 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 09312-05 for ; Fri, 18 Jun 2004 15:46:38 +0000 (GMT) Received: from reali.dnsalias.net (212-41-91-205.adsl.solnet.ch [212.41.91.205]) by mail01.solnet.ch (Postfix) with ESMTP id 7712E625D5 for ; Fri, 18 Jun 2004 15:46:35 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 4B89D2FD43; Fri, 18 Jun 2004 17:43:13 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040618154313.4B89D2FD43@reali.dnsalias.net> Date: Fri, 18 Jun 2004 17:43:13 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040618 FAILED X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 15:48:27 -0000 cvs update: [14:59:49] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:00:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:00:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:01:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:01:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:02:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:02:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:03:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:03:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:04:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:04:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:05:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:05:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:06:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:06:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:07:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:07:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:08:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:08:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:09:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:09:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:10:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:10:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:11:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:11:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:12:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:12:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:13:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:13:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:14:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:14:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:15:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:15:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:16:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:16:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:17:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:17:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:18:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:18:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:19:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:19:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:20:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:20:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:21:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:21:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:22:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:22:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:23:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:23:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:24:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:24:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:25:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:25:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:26:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:26:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:27:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:27:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:28:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:28:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:29:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:29:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:30:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:30:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:31:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:31:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:32:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:32:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:33:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:33:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:34:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:34:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:35:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:35:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:36:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:36:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:37:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:37:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:38:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:38:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:39:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:39:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:40:20] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:40:50] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:41:21] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:41:51] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:42:21] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:42:51] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:43:21] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:43:51] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:44:21] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:44:51] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:45:21] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:45:51] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:46:21] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:46:51] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:47:21] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:47:51] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common Connection to subversions.gnu.org closed by remote host. cvs [update aborted]: end of file from server (consult above messages if any) delete old source tree From MAILER-DAEMON Fri Jun 18 11:56:40 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbLjM-0006L1-Be for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 11:56:40 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbLjK-0006KY-M1 for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:56:38 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbLjJ-0006KF-RK for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:56:38 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbLjJ-0006KC-NO for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:56:37 -0400 Received: from [199.232.41.8] (helo=mx20.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BbLhw-0007DE-RM for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:55:13 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by mx20.gnu.org with esmtp (Exim 4.34) id 1BbLb4-0004rZ-NU for commit-classpath@gnu.org; Fri, 18 Jun 2004 11:48:07 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 2839C625DE for ; Fri, 18 Jun 2004 15:46:40 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 09194-09 for ; Fri, 18 Jun 2004 15:46:38 +0000 (GMT) Received: from reali.dnsalias.net (212-41-91-205.adsl.solnet.ch [212.41.91.205]) by mail01.solnet.ch (Postfix) with ESMTP id 73CA4625D1 for ; Fri, 18 Jun 2004 15:46:35 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 217DB2FD44; Fri, 18 Jun 2004 17:43:13 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040618154313.217DB2FD44@reali.dnsalias.net> Date: Fri, 18 Jun 2004 17:43:13 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040617 FAILED X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 15:56:38 -0000 cvs update: [14:59:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:00:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:00:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:01:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:01:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:02:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:02:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:03:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:03:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:04:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:04:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:05:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:05:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:06:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:06:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:07:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:07:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:08:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:08:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:09:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:09:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:10:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:10:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:11:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:11:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:12:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:12:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:13:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:13:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:14:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:14:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:15:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:15:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:16:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:16:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:17:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:17:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:18:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:18:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:19:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:19:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:20:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:20:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:21:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:21:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:22:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:22:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:23:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:23:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:24:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:24:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:25:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:25:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:26:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:26:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:27:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:27:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:28:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:28:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:29:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:29:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:30:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:30:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:31:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:31:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:32:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:32:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:33:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:33:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:34:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:34:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:35:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:35:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:36:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:36:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:37:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:37:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:38:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:38:30] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:39:00] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:39:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:40:01] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:40:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:41:01] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:41:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:42:01] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:42:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:43:01] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:43:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:44:01] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:44:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:45:01] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:45:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:46:01] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:46:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:47:01] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common cvs update: [15:47:31] waiting for uid65534's lock in /cvsroot/classpath/classpath/doc/api/xslt/common Connection to subversions.gnu.org closed by remote host. cvs [update aborted]: end of file from server (consult above messages if any) delete old source tree From MAILER-DAEMON Fri Jun 18 12:03:28 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbLpw-0002Kf-F8 for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 12:03:28 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbLpt-0002Jq-SU for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:03:25 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbLpr-0002II-EK for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:03:24 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbLpr-0002IE-B3 for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:03:23 -0400 Received: from [139.19.1.2] (helo=francois.mpi-sb.mpg.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbLoi-0007aq-Df for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:02:13 -0400 Received: from amavis by francois.mpi-sb.mpg.de with scanned-ok (Exim 3.35 #1 (Debian)) id 1BbLoh-0004MP-00 for ; Fri, 18 Jun 2004 18:02:11 +0200 Received: from data ([139.19.90.238] helo=mpi-sb.mpg.de) by francois.mpi-sb.mpg.de with esmtp (Exim 3.35 #1 (Debian)) id 1BbLob-0004LZ-00; Fri, 18 Jun 2004 18:02:05 +0200 Received: from [139.19.20.12] (topic@mpiat2003 [139.19.20.12]) by mpi-sb.mpg.de (8.12.9+Sun/8.12.9) with ESMTP id i5IG24n7019469; Fri, 18 Jun 2004 18:02:05 +0200 (MEST) Message-ID: <40D311FA.6020604@kaffe.org> Date: Fri, 18 Jun 2004 18:02:02 +0200 From: Dalibor Topic User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040608 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Archie Cobbs References: <200406181424.i5IEOl62047967@arch20m.dellroad.org> In-Reply-To: <200406181424.i5IEOl62047967@arch20m.dellroad.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by AMaViS perl-11 Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 16:03:26 -0000 Archie Cobbs wrote: > Dalibor you get an A+ for research :-) Thanks Archie ;) > So it's clear that now they have resolved the issue as allowing > spurious wakeups, but it's also clear that in the past this was > not made clear (like a lot of other "small details" in the spec). Yep.[1] > Personally, I think that nothing should ever be "spurious", but > it looks like I already lost that argument :-) I've got a reference for that, too :) http://www.lambdacs.com/cpt/FAQ.html#Q94 "Spurious wakeups may sound strange but on some multiprocessor systems, making condition wakeup completely predictable might substantially slow all condition variable operations. [Butenhof]" "Perhaps more importantly, your own program's logic can introduce spurious wakeups which cannot be eliminated. This can start happening as soon as there are more than two threads. You see, a condition waiting thread which has been signaled may have to compete with another thread in order to re-acquire the mutex. If that other thread gets the mutex first, it can change the predicate, so that when finally the original thread acquires it, the predicate is false. This is also a spurious wakeup, for all purposes. To make this form of spurious wakeup go away, the semantics of condition variables would have to change in troublesome ways, back to the original monitors and conditions concept introduced by Quicksort father C. A. R. Hoare. Under Hoare's monitors and conditions signaling a condition would atomically transfer the monitor to the first task waiting on the condition, so that woken task could just assume that the predicate is true: if (!predicate()) wait(&condition); /* okay */" "Also, such atomic transfers of lock ownership are wasteful, especially on a multiprocessor; the ownership transfer spans an entire context switch from one task to another, during which that lock is not available to other tasks. The switch can take thousands of cycles, inflating the length of a small critical region hundreds of times!" cheers, dalibor topic [1] It has taken both C and C++ around 15 years to get standardized, and get somewhat well specified. So I'd expect a nice Java standard by 2010 ;) From MAILER-DAEMON Fri Jun 18 12:50:09 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbMZ7-0005vU-Gf for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 12:50:09 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbMZ6-0005vG-77 for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:50:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbMZ4-0005uI-D4 for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:50:07 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbMZ4-0005uF-AZ for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:50:06 -0400 Received: from [199.232.41.8] (helo=mx20.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BbMXS-0003gV-8i for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:48:26 -0400 Received: from [209.225.28.213] (helo=mxsf13.cluster1.charter.net) by mx20.gnu.org with esmtp (Exim 4.34) id 1BbMJC-0000qv-IY for commit-classpath@gnu.org; Fri, 18 Jun 2004 12:33:43 -0400 Received: from mxip02.cluster1.charter.net (mxip02a.cluster1.charter.net [209.225.28.132]) by mxsf13.cluster1.charter.net (8.12.11/8.12.11) with ESMTP id i5IGU3Mw032530 for ; Fri, 18 Jun 2004 12:30:03 -0400 (EDT) Received: from cable-24-196-25-11.mtv.al.charter.com (HELO InterJet.dellroad.org) (24.196.25.11) by mxip02.cluster1.charter.net with ESMTP; 18 Jun 2004 12:30:02 -0400 Received: from arch20m.dellroad.org ([10.104.180.64]) by InterJet.dellroad.org (8.9.1a/8.9.1) with ESMTP id LAA26925; Fri, 18 Jun 2004 11:21:40 -0500 (CDT) Received: from arch20m.dellroad.org (localhost [127.0.0.1]) by arch20m.dellroad.org (8.12.9p2/8.12.9) with ESMTP id i5IGLVcU003460; Fri, 18 Jun 2004 11:21:33 -0500 (CDT) (envelope-from archie@arch20m.dellroad.org) Received: (from archie@localhost) by arch20m.dellroad.org (8.12.9p2/8.12.9/Submit) id i5IGLT9T003456; Fri, 18 Jun 2004 11:21:29 -0500 (CDT) (envelope-from archie) From: Archie Cobbs Message-Id: <200406181621.i5IGLT9T003456@arch20m.dellroad.org> In-Reply-To: <40D311FA.6020604@kaffe.org> To: Dalibor Topic Date: Fri, 18 Jun 2004 11:21:29 -0500 (CDT) X-Mailer: ELM [version 2.4ME+ PL99b (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 16:50:08 -0000 Dalibor Topic wrote: > > Personally, I think that nothing should ever be "spurious", but > > it looks like I already lost that argument :-) > > I've got a reference for that, too :) > > http://www.lambdacs.com/cpt/FAQ.html#Q94 > > "Spurious wakeups may sound strange but on some multiprocessor systems, > making condition wakeup completely predictable might substantially slow > all condition variable operations. [Butenhof]" Ah.. that's a very good point that I didn't think of.. OK I'm convinced :-) -Archie __________________________________________________________________________ Archie Cobbs * CTO, Awarix * http://www.awarix.com From MAILER-DAEMON Fri Jun 18 14:10:22 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbNoj-0006Q5-Un for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 14:10:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbNoi-0006PC-6v for commit-classpath@gnu.org; Fri, 18 Jun 2004 14:10:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbNog-0006Ot-I4 for commit-classpath@gnu.org; Fri, 18 Jun 2004 14:10:19 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbNog-0006Oq-Du for commit-classpath@gnu.org; Fri, 18 Jun 2004 14:10:18 -0400 Received: from [139.19.1.2] (helo=francois.mpi-sb.mpg.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbNnS-0003S1-3E for commit-classpath@gnu.org; Fri, 18 Jun 2004 14:09:02 -0400 Received: from amavis by francois.mpi-sb.mpg.de with scanned-ok (Exim 3.35 #1 (Debian)) id 1BbNnQ-0006wY-00 for ; Fri, 18 Jun 2004 20:09:00 +0200 Received: from data ([139.19.90.238] helo=mpi-sb.mpg.de) by francois.mpi-sb.mpg.de with esmtp (Exim 3.35 #1 (Debian)) id 1BbNnL-0006w5-00; Fri, 18 Jun 2004 20:08:55 +0200 Received: from [139.19.20.12] (topic@mpiat2003 [139.19.20.12]) by mpi-sb.mpg.de (8.12.9+Sun/8.12.9) with ESMTP id i5II8tn7015242; Fri, 18 Jun 2004 20:08:55 +0200 (MEST) Message-ID: <40D32FB5.8050400@kaffe.org> Date: Fri, 18 Jun 2004 20:08:53 +0200 From: Dalibor Topic User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040608 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Archie Cobbs References: <200406181621.i5IGLT9T003456@arch20m.dellroad.org> In-Reply-To: <200406181621.i5IGLT9T003456@arch20m.dellroad.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by AMaViS perl-11 Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 18:10:20 -0000 Archie Cobbs wrote: > Dalibor Topic wrote: > >>>Personally, I think that nothing should ever be "spurious", but >>>it looks like I already lost that argument :-) >> >>I've got a reference for that, too :) >> >>http://www.lambdacs.com/cpt/FAQ.html#Q94 >> >>"Spurious wakeups may sound strange but on some multiprocessor systems, >>making condition wakeup completely predictable might substantially slow >>all condition variable operations. [Butenhof]" > > > Ah.. that's a very good point that I didn't think of.. OK I'm convinced :-) One down, one to go ... ;) Jeroen, have I managed to convince you, too? cheers, dalibor topic From MAILER-DAEMON Fri Jun 18 14:16:46 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbNuw-0000TR-4P for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 14:16:46 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbNus-0000RR-6Q for commit-classpath@gnu.org; Fri, 18 Jun 2004 14:16:42 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbNuo-0000Od-GX for commit-classpath@gnu.org; Fri, 18 Jun 2004 14:16:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbNuo-0000OQ-DL for commit-classpath@gnu.org; Fri, 18 Jun 2004 14:16:38 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbNtQ-0001sD-Ve for commit-classpath@gnu.org; Fri, 18 Jun 2004 14:15:13 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5IIF6o81686 for ; Fri, 18 Jun 2004 14:15:06 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5IIFBG36310; Fri, 18 Jun 2004 14:15:11 -0400 Message-ID: <40D3312E.3000901@watson.ibm.com> Date: Fri, 18 Jun 2004 14:15:10 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------050107060605090504040205" Subject: --enable-gtk-peer: trivial configure patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 18:16:43 -0000 This is a multi-part message in MIME format. --------------050107060605090504040205 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------050107060605090504040205 Content-Type: text/plain; name="configure-gtk-peers.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="configure-gtk-peers.patch" T0sgdG8gY29tbWl0PyAgSWYgdGhpcyBwYXRjaCBoYWQgYmVlbiBpbiBwbGFjZSwgSSB3b3Vs ZCBoYXZlIHNhdmVkIGNsb3NlIHRvCmFuIGhvdXIncyB3b3J0aCBvZiB0aW1lIHllc3RlcmRh eSBhbmQgdG9kYXkuCgotLVN0ZXZlIEF1Z2FydAoKQ2hhbmdlbG9nIEVudHJ5OgoKMjAwNC0w Ni0xOCAgU3RldmVuIEF1Z2FydCAgPGF1Z2FydEB3YXRzb24uaWJtLmNvbT4KCgkqIGNvbmZp Z3VyZS5hYzogQ29tcGxhaW4gYWJvdXQgaW5jb3JyZWN0ICItLWVuYWJsZS1ndGstcGVlcnMi LgoKSW5kZXg6IGNvbmZpZ3VyZS5hYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9v dC9jbGFzc3BhdGgvY2xhc3NwYXRoL2NvbmZpZ3VyZS5hYyx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4zMQpkaWZmIC1JKi5jbGFzcyAtdSAtcjEuMzEgY29uZmlndXJlLmFjCi0tLSBjb25m aWd1cmUuYWMJMTAgSnVuIDIwMDQgMDM6MDQ6MTcgLTAwMDAJMS4zMQorKysgY29uZmlndXJl LmFjCTE4IEp1biAyMDA0IDE4OjEyOjMzIC0wMDAwCkBAIC02OCw2ICs2OCwxMCBAQAogICAg ICAgICAgICAgICBbQ09NUElMRV9HVEtfUEVFUj15ZXNdKQogQU1fQ09ORElUSU9OQUwoQ1JF QVRFX0dUS19QRUVSX0xJQlJBUklFUywgdGVzdCAieCR7Q09NUElMRV9HVEtfUEVFUn0iID0g eHllcykKIAorZG5sIEdUSyBuYXRpdmUgcGVlciBlcnJvciBjaGVja2luZyAKK0FDX0FSR19F TkFCTEUoW2d0ay1wZWVyc10sLEFDX01TR19FUlJPUihbTm8gLS1lbmFibGUtZ3RrLXBlZXJz IChvciAtLWRpc2FibGUtZ3RrLXBlZXJzKSBvcHRpb247IHlvdSB3YW50IC0tZW5hYmxlLWd0 ay1wZWVyXSkpCisKKwogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgUmVnZW5lcmF0ZSBoZWFkZXJzIGF0IGJ1 aWxkIHRpbWUgKGRpc2FibGVkIGJ5IGRlZmF1bHQpCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K --------------050107060605090504040205-- From MAILER-DAEMON Fri Jun 18 17:11:22 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbQdu-0003Gm-1H for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 17:11:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbQds-0003GK-VU for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:11:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbQdq-0003Fg-OY for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:11:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbQdq-0003FL-I4 for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:11:18 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbQcA-0002OM-JJ for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:09:34 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5IL9Qo51472; Fri, 18 Jun 2004 17:09:26 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5IL9UD22212; Fri, 18 Jun 2004 17:09:30 -0400 Message-ID: <40D35A0A.7030300@watson.ibm.com> Date: Fri, 18 Jun 2004 17:09:30 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: Dalibor Topic References: <40D0CCBF.1020107@kaffe.org> In-Reply-To: <40D0CCBF.1020107@kaffe.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 21:11:21 -0000 Dalibor Topic wrote: > Hi all, > > I've implemented VMThread.holdLock in java. It's is probably quite slow, > and wakes up the ocassional thread without much use, but hey, it's in > java, so that's one less method to implement. OK to commit? I strongly support committing this patch. I am now convinced that it does not violate Java semantics. I attended a presentation by Doug Lea a few months ago (benefit of working at Watson) where he pointed out that no Java implementation, including Sun's, implements the Java memory model as specified. He didn't mention this in particular, but it fits in with the spirit of his talk. Dalibor, you did a great job on researching this and on arguing your case. It was informative for me to read the references you carefully looked up. --Steve Augart From MAILER-DAEMON Fri Jun 18 17:30:20 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbQwG-0002Op-AX for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 17:30:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbQwE-0002Oj-NQ for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:30:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbQw9-0002OJ-3q for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:30:18 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbQw9-0002OG-0x for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:30:13 -0400 Received: from [207.189.223.52] (helo=email3.peakpeak.com) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BbQun-0007rE-RK for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:28:50 -0400 Received: (qmail 27771 invoked from network); 18 Jun 2004 21:45:59 -0000 Received: from tf0089.peakpeak.com (HELO fleche.redhat.com) ([204.144.239.89]) (envelope-sender ) by email3.peakpeak.com (qmail-ldap-1.03) with SMTP for ; 18 Jun 2004 21:45:59 -0000 Received: by fleche.redhat.com (Postfix, from userid 1000) id 1FE774F82A0; Fri, 18 Jun 2004 15:16:05 -0600 (MDT) To: Steven Augart References: <40D3312E.3000901@watson.ibm.com> From: Tom Tromey X-Attribution: Tom Date: 18 Jun 2004 15:16:05 -0600 In-Reply-To: <40D3312E.3000901@watson.ibm.com> Message-ID: <87fz8sworu.fsf@fleche.redhat.com> Lines: 8 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: commit-classpath@gnu.org Subject: Re: --enable-gtk-peer: trivial configure patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list Reply-To: tromey@redhat.com List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 21:30:18 -0000 >>>>> "Steven" == Steven Augart writes: Steven> OK to commit? If this patch had been in place, I would have Steven> saved close to an hour's worth of time yesterday and today. It is fine by me, I'm sure it will save other folks some time too. Tom From MAILER-DAEMON Fri Jun 18 17:59:10 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbROA-0003wz-Ki for mharc-commit-classpath@gnu.org; Fri, 18 Jun 2004 17:59:10 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbRO9-0003vi-0i for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:59:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbRO5-0003vW-DC for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:59:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbRO5-0003vT-B0 for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:59:05 -0400 Received: from [62.177.154.238] (helo=lembu.sumatrasoftware.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbRMf-0007Rp-Pq for commit-classpath@gnu.org; Fri, 18 Jun 2004 17:57:38 -0400 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Date: Fri, 18 Jun 2004 23:57:32 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 Message-ID: <788B535AB1F9CB49BB9C229372B50ACC10CC7D@LEMBU.sumatrasoftware.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Patch: Thread.holdLock implementation in java Thread-Index: AcRVX7rLAGhiWBX4QJ6q0JP0BVtqXQAH0/Kw From: "Jeroen Frijters" To: "Dalibor Topic" , "Archie Cobbs" Cc: commit-classpath Subject: RE: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2004 21:59:09 -0000 Dalibor Topic wrote: > Jeroen, have I managed to convince you, too? Yes! I'm changing my implementation as well. Thanks for taking the time to investigate this so thoroughly. Regards, Jeroen From MAILER-DAEMON Sat Jun 19 07:27:07 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bbe03-0003Q8-Pe for mharc-commit-classpath@gnu.org; Sat, 19 Jun 2004 07:27:07 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bbe03-0003Q3-5c for commit-classpath@gnu.org; Sat, 19 Jun 2004 07:27:07 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bbe01-0003PX-Kk for commit-classpath@gnu.org; Sat, 19 Jun 2004 07:27:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bbe01-0003PU-Gf for commit-classpath@gnu.org; Sat, 19 Jun 2004 07:27:05 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bbdyl-0003qm-BK for commit-classpath@gnu.org; Sat, 19 Jun 2004 07:25:47 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 7738B62435 for ; Sat, 19 Jun 2004 11:25:46 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 57333-08 for ; Sat, 19 Jun 2004 11:25:45 +0000 (GMT) Received: from reali.dnsalias.net (212-41-72-162.adsl.solnet.ch [212.41.72.162]) by mail01.solnet.ch (Postfix) with ESMTP id 538C4623FD for ; Sat, 19 Jun 2004 11:25:45 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 3819A104926; Sat, 19 Jun 2004 13:22:22 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040619112222.3819A104926@reali.dnsalias.net> Date: Sat, 19 Jun 2004 13:22:22 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040619 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2004 11:27:07 -0000 From MAILER-DAEMON Sat Jun 19 20:21:36 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bbq5Y-0005Uj-Os for mharc-commit-classpath@gnu.org; Sat, 19 Jun 2004 20:21:36 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bbq5W-0005UX-V1 for commit-classpath@gnu.org; Sat, 19 Jun 2004 20:21:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bbq5U-0005UL-2W for commit-classpath@gnu.org; Sat, 19 Jun 2004 20:21:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bbq5T-0005UI-Ux for commit-classpath@gnu.org; Sat, 19 Jun 2004 20:21:32 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bbq4B-0007PZ-Kt for commit-classpath@gnu.org; Sat, 19 Jun 2004 20:20:12 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5K0K1o65914 for ; Sat, 19 Jun 2004 20:20:01 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5K0K8X46278 for ; Sat, 19 Jun 2004 20:20:08 -0400 Received: from watson.ibm.com (sig-9-65-236-129.mts.ibm.com [9.65.236.129]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5K0K7f24996; Sat, 19 Jun 2004 20:20:07 -0400 Message-ID: <40D4D833.1030501@watson.ibm.com> Date: Sat, 19 Jun 2004 20:20:03 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------080000070603030502060500" Subject: dynamic-portable-native-sync-1.patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2004 00:21:35 -0000 This is a multi-part message in MIME format. --------------080000070603030502060500 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit OK to commit? -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------080000070603030502060500 Content-Type: text/plain; name="dynamic-portable-native-sync-1.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="dynamic-portable-native-sync-1.patch" This patch makes the portable-native-sync no longer need build-time configuration. Instead, we configure it at run-time. Build-time sets the defaults. Please commit it with the following ChangeLog entry: 2004-06-19 Steven Augart * gnu/java/awtk/peer/gtk/GtkMainThread.java (run): Pass the value of the gnu.classpath.awt.gtk.portable.native.sync system property to C. * configure.ac: Correct description of PORTABLE_NATIVE_SYNC config.h definition. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c, include/gnu_java_awt_peer_gtk_GtkMainThread.h (Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit): New argument, portableNativeSync. Delegate PORTABLE_NATIVE_SYNC work to init_glib_threads. (init_glib_threads): New function. * doc/vmintegration.texinfo (VM Threading Model): Explain the gnu.classpath.awt.gtk.portable.native.sync system property. Index: configure.ac =================================================================== RCS file: /cvsroot/classpath/classpath/configure.ac,v retrieving revision 1.32 diff -I*.class -u -r1.32 configure.ac --- configure.ac 19 Jun 2004 19:51:12 -0000 1.32 +++ configure.ac 20 Jun 2004 00:19:01 -0000 @@ -274,11 +274,15 @@ CLASSPATH_ENABLE_GJDOC dnl ----------------------------------------------------------- +dnl This sets the build-time default, which can now be overridden +dnl by setting the system property gnu.classpath.awt.gtk.portable.native.sync +dnl to "true" or "false". +dnl ----------------------------------------------------------- AC_ARG_ENABLE([portable-native-sync], [AS_HELP_STRING(--enable-portable-native-sync,synchronize VM threads portably)], [case "${enableval}" in yes) - AC_DEFINE(PORTABLE_NATIVE_SYNC, 1, [Define to 1 if you want to synchronize VM threads portably]) + AC_DEFINE(PORTABLE_NATIVE_SYNC, 1, [Define if you want to synchronize VM threads portably by default; undef otherwise]) ;; no) ;; *) Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c,v retrieving revision 1.18 diff -I*.class -u -r1.18 gnu_java_awt_peer_gtk_GtkMainThread.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c 6 Jun 2004 04:14:13 -0000 1.18 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c 20 Jun 2004 00:19:01 -0000 @@ -65,13 +65,20 @@ GtkWindowGroup *global_gtk_window_group; -/* +static void init_glib_threads(JNIEnv *, jint); + +/** * Call gtk_init. It is very important that this happen before any other * gtk calls. + * + * portableNativeSync: 1 if the Java property + * gnu.classpath.awt.gtk.portable.native.sync is set to "true". 0 if it is + * set to "false". -1 if unset. */ JNIEXPORT void JNICALL -Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit (JNIEnv *env, jclass clazz) +Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit (JNIEnv *env, jclass clazz, + jint portableNativeSync) { int argc = 1; char **argv; @@ -95,16 +102,7 @@ #endif argv[1] = NULL; - /* until we have JDK 1.2 JNI, assume we have a VM with threads that - match what GLIB was compiled for */ -#ifdef PORTABLE_NATIVE_SYNC - (*env)->GetJavaVM( env, &the_vm ); - g_thread_init ( &portable_native_sync_jni_functions ); - /* Debugging progress message; uncomment if needed: */ - /* printf("called gthread init\n"); */ -#else - g_thread_init ( NULL ); -#endif + init_glib_threads(env, portableNativeSync); /* From GDK 2.0 onwards we have to explicitly call gdk_threads_init */ gdk_threads_init(); @@ -198,6 +196,37 @@ global_gtk_window_group = gtk_window_group_new (); } + +/** Initialize GLIB's threads properly, based on the value of the + gnu.classpath.awt.gtk.portable.native.sync Java system property. If + that's unset, use the PORTABLE_NATIVE_SYNC config.h macro. (In a + subsequent release, the config.h macro can go away.) + */ +static void +init_glib_threads(JNIEnv *env, jint portableNativeSync) +{ + if (portableNativeSync < 0) + { +#ifdef PORTABLE_NATIVE_SYNC /* Default value, if not set by the Java system + property */ + portableNativeSync = 1; +#else + portableNativeSync = 0; +#endif + } + + (*env)->GetJavaVM( env, &the_vm ); + if (portableNativeSync) + g_thread_init ( &portable_native_sync_jni_functions ); + else + g_thread_init ( NULL ); + + /* Debugging progress message; uncomment if needed: */ + /* printf("called gthread init\n"); */ +} + + + /* * Run gtk_main and block. */ Index: include/gnu_java_awt_peer_gtk_GtkMainThread.h =================================================================== RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkMainThread.h,v retrieving revision 1.3 diff -I*.class -u -r1.3 gnu_java_awt_peer_gtk_GtkMainThread.h --- include/gnu_java_awt_peer_gtk_GtkMainThread.h 28 May 2004 17:27:53 -0000 1.3 +++ include/gnu_java_awt_peer_gtk_GtkMainThread.h 20 Jun 2004 00:19:01 -0000 @@ -10,7 +10,7 @@ { #endif -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit (JNIEnv *env, jclass); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit (JNIEnv *env, jclass, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkMain (JNIEnv *env, jobject); #ifdef __cplusplus Index: gnu/java/awt/peer/gtk/GtkMainThread.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkMainThread.java,v retrieving revision 1.11 diff -I*.class -u -r1.11 GtkMainThread.java --- gnu/java/awt/peer/gtk/GtkMainThread.java 22 Jan 2002 22:26:56 -0000 1.11 +++ gnu/java/awt/peer/gtk/GtkMainThread.java 20 Jun 2004 00:19:01 -0000 @@ -43,7 +43,15 @@ private static Thread mainThread = null; private static Object mainThreadLock = new Object(); - static native void gtkInit(); + /** + * Call gtk_init. It is very important that this happen before any other + * gtk calls. + * + * @param portableNativeSync 1 if the Java property + * gnu.classpath.awt.gtk.portable.native.sync is set to "true". 0 if it is + * set to "false". -1 if unset. + */ + static native void gtkInit(int portableNativeSync); native void gtkMain(); public GtkMainThread() @@ -67,9 +75,22 @@ public void run() { + /* Pass the value of the gnu.classpath.awt.gtk.portable.native.sync system + * property to C. */ + int portableNativeSync; + String portNatSyncProp = + System.getProperty("gnu.classpath.awt.gtk.portable.native.sync"); + + if (portNatSyncProp == null) + portableNativeSync = -1; // unset + else if (Boolean.valueOf(portNatSyncProp).booleanValue()) + portableNativeSync = 1; // true + else + portableNativeSync = 0; // false + synchronized (this) { - gtkInit(); + gtkInit(portableNativeSync); notify(); } gtkMain(); Index: doc/vmintegration.texinfo =================================================================== RCS file: /cvsroot/classpath/classpath/doc/vmintegration.texinfo,v retrieving revision 1.11 diff -I*.class -u -r1.11 vmintegration.texinfo --- doc/vmintegration.texinfo 6 Jun 2004 04:36:54 -0000 1.11 +++ doc/vmintegration.texinfo 20 Jun 2004 00:19:01 -0000 @@ -261,7 +261,7 @@ done. No harm will come, as long as you follow the guidelines in the @pxref{Initialization} section. -@emph{Note: this is written in anticipation of 1.2 support and does not +@emph{Note: this is written in anticipation of Java 1.2 support and does not apply just yet.} @item Top-level Exception Handler @* @@ -321,12 +321,43 @@ @comment node-name, next, previous, up @section VM Threading Model -Classpath's AWT peers use GTK+. GTK+ uses GLIB. GLIB by default uses -the platform's native threading model -- pthreads in most cases. +Classpath's AWT peers use GTK+. GTK+ uses GLIB. Normally, Classpath +will initialize GLIB's @dfn{gthreads} to use +the platform's native threading model@footnote{The native threading +model is pthreads on Linux and AIX, the two platforms Classpath +currently runs on.} If the Java runtime doesn't use the native threading model, then you -should specify --portable-native-sync when configuring Classpath, so -that GLIB will use the Java threading primitives instead. +will want Classpath to tell GLIB to + use the Java threading primitives instead. Otherwise, +GLIB would use the native threading model to perform operations such as +creating thread-local data, and that just doesn't work on systems +(such as Kaffe in some configurations, and such as Jikes RVM) that use +@i{m}:@i{n} threading. + +Historically, enabling the Java threading primitives had been done at +build time, by configuring classpath with the +@option{--portable-native-sync} option. This had bad consequences, +though -- it meant that the prebuild GNU Classpath package distributed +with Debian GNU/Linux would not be usable with VMs that could +otherwise have used it. Instead, we encourage +the use of the Java system property +@code{gnu.classpath.awt.gtk.portable.native.sync}. A VM that wants +GLIB to use the Java threading primitives should modify +@code{VMRuntime.insertSystemProperties()} to include code like the +following: + +@example +static void insertSystemProperties(Properties @var{p}) +@end example +... +@example +@var{p}.put("gnu.classpath.awt.gtk.portable.native.sync", "true"); +@end example + +So, the configure option +@option{--portable-native-sync} is deprecated, and should go away in a +subsequent release of GNU Classpath. @bye --------------080000070603030502060500-- From MAILER-DAEMON Sun Jun 20 00:05:12 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BbtZw-0008MR-9y for mharc-commit-classpath@gnu.org; Sun, 20 Jun 2004 00:05:12 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BbtZv-0008Lj-E4 for commit-classpath@gnu.org; Sun, 20 Jun 2004 00:05:11 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BbtZo-0008LX-TA for commit-classpath@gnu.org; Sun, 20 Jun 2004 00:05:11 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BbtZo-0008LU-Pd for commit-classpath@gnu.org; Sun, 20 Jun 2004 00:05:04 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BbtYR-0007Hk-0Y for commit-classpath@gnu.org; Sun, 20 Jun 2004 00:03:40 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 1C773623F3 for ; Sun, 20 Jun 2004 04:03:31 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00596-06 for ; Sun, 20 Jun 2004 04:03:30 +0000 (GMT) Received: from reali.dnsalias.net (212-41-83-149.adsl.solnet.ch [212.41.83.149]) by mail01.solnet.ch (Postfix) with ESMTP id 02107623EA for ; Sun, 20 Jun 2004 04:03:30 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 681BE105565; Sun, 20 Jun 2004 06:00:05 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040620040005.681BE105565@reali.dnsalias.net> Date: Sun, 20 Jun 2004 06:00:05 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040620 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2004 04:05:11 -0000 From MAILER-DAEMON Sun Jun 20 08:33:57 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bc1WH-0005sb-NH for mharc-commit-classpath@gnu.org; Sun, 20 Jun 2004 08:33:57 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bc1WG-0005sV-Qy for commit-classpath@gnu.org; Sun, 20 Jun 2004 08:33:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bc1WF-0005sI-8b for commit-classpath@gnu.org; Sun, 20 Jun 2004 08:33:56 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bc1WF-0005sF-4M for commit-classpath@gnu.org; Sun, 20 Jun 2004 08:33:55 -0400 Received: from [82.161.94.186] (helo=localhost) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bc1Uk-0004fH-7l for commit-classpath@gnu.org; Sun, 20 Jun 2004 08:32:22 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26] ident=mark) by localhost with esmtp (Exim 3.35 #1 (Debian)) id 1Bc1UO-0003gX-00 for ; Sun, 20 Jun 2004 14:32:00 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-6/ZSj2WQCpTWlUtxkws0" Message-Id: <1087734735.1151.121.camel@elsschot.wildebeest.org> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sun, 20 Jun 2004 14:32:15 +0200 Subject: gtk-peer Makefile fixlets X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2004 12:33:57 -0000 --=-6/ZSj2WQCpTWlUtxkws0 Content-Type: multipart/mixed; boundary="=-8lze0Dh9EO9aYsZf3XX8" --=-8lze0Dh9EO9aYsZf3XX8 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, I needed to following to make make distcheck happy: 2004-06-20 Mark Wielaard * native/jni/gtk-peer/Makefile.am (EXTRA_DIST): Add gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h. (libgtkpeer_la_SOURCES): Add gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c. * gnu/java/awt/peer/gtk/Makefile.am (EXTRA_DIST): Add GThreadNativeMethodRunner.java and GThreadMutex.java Committed. We will include the generated .h file for now since most javah, gcjh implementations out there have some subtle bugs. Maybe when gcj 3.5 is out we can build them from source during build automatically again. Cheers, Mark --=-8lze0Dh9EO9aYsZf3XX8 Content-Disposition: inline; filename=Makefile.diff Content-Type: text/x-patch; name=Makefile.diff; charset=us-ascii Content-Transfer-Encoding: quoted-printable --=-8lze0Dh9EO9aYsZf3XX8-- --=-6/ZSj2WQCpTWlUtxkws0 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA1YPPxVhZCJWr9QwRAm7PAJ9881uobm61TeUq4mDe/AtxLcljkgCfed8D GdgmiEK29s28/vMfUQbwxLg= =gXcO -----END PGP SIGNATURE----- --=-6/ZSj2WQCpTWlUtxkws0-- From MAILER-DAEMON Sun Jun 20 11:21:57 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bc48p-0002Js-Rk for mharc-commit-classpath@gnu.org; Sun, 20 Jun 2004 11:21:57 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bc48o-0002Jg-MX for commit-classpath@gnu.org; Sun, 20 Jun 2004 11:21:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bc48m-0002JG-Mq for commit-classpath@gnu.org; Sun, 20 Jun 2004 11:21:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bc48m-0002JD-JS for commit-classpath@gnu.org; Sun, 20 Jun 2004 11:21:52 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bc47P-0000XA-70 for commit-classpath@gnu.org; Sun, 20 Jun 2004 11:20:27 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5KFK1o21088; Sun, 20 Jun 2004 11:20:01 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5KFK9x34766; Sun, 20 Jun 2004 11:20:09 -0400 Message-ID: <40D5AB1F.2030906@watson.ibm.com> Date: Sun, 20 Jun 2004 11:19:59 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: tromey@redhat.com References: <40D3312E.3000901@watson.ibm.com> <87fz8sworu.fsf@fleche.redhat.com> In-Reply-To: <87fz8sworu.fsf@fleche.redhat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: commit-classpath@gnu.org Subject: Re: --enable-gtk-peer: trivial configure patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2004 15:21:54 -0000 Tom Tromey wrote: >>>>>>"Steven" == Steven Augart writes: > > > Steven> OK to commit? If this patch had been in place, I would have > Steven> saved close to an hour's worth of time yesterday and today. > > It is fine by me, I'm sure it will save other folks some time too. Thanks for the quick feedback, Tom. I have committed this change. --Steve -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm From MAILER-DAEMON Sun Jun 20 12:35:54 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bc5IQ-00026x-M1 for mharc-commit-classpath@gnu.org; Sun, 20 Jun 2004 12:35:54 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bc5IO-00026P-NM for commit-classpath@gnu.org; Sun, 20 Jun 2004 12:35:52 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bc5IN-00025z-Qi for commit-classpath@gnu.org; Sun, 20 Jun 2004 12:35:52 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bc5IN-00025w-O1 for commit-classpath@gnu.org; Sun, 20 Jun 2004 12:35:51 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bc5Gn-0008D0-87 for commit-classpath@gnu.org; Sun, 20 Jun 2004 12:34:13 -0400 Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [129.34.20.41]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5KGY1o53830 for ; Sun, 20 Jun 2004 12:34:01 -0400 Received: from watson.ibm.com (localhost [127.0.0.1]) by sp1n293en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5KGYAF32120; Sun, 20 Jun 2004 12:34:10 -0400 Message-ID: <40D5BC77.3020604@watson.ibm.com> Date: Sun, 20 Jun 2004 12:33:59 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7b) Gecko/20040421 X-Accept-Language: ast, gl, en-us, en, it, eo, pt, es-ec, es-us, es, fr, de, el MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------010101010109050504000502" Subject: nio-caching.patch (last call for comments) X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2004 16:35:52 -0000 This is a multi-part message in MIME format. --------------010101010109050504000502 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------010101010109050504000502 Content-Type: text/plain; name="nio-caching-2.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="nio-caching-2.patch" This patch was posted to the "classpath" list by David Grove on May 7, 2004. There's been no comment on it since then. I approve of it, with formatting changes to meet the GNU Coding Standards (made in this version of the patch). Does anyone else have feedback on it before I commit it? The patch's context was that Dave had noticed a performance degradation of 10% on Jikes RVM's performance on _288_jack on Classpath 0.09 versus Classpath 0.08. Part of Dave's original message was: Here's a patch. Works with Jikes RVM and reduces our classpath 0.09 performance degradation on _228_jack to a slightly more tolerable 5%. ChangeLog entry: 2004-06-20 David Grove and Steven Augart * native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c: Trivial formatting (trim trailing spaces). (native_fd_fieldID): New variable. (Java_gnu_java_nio_channels_FileChannelImpl_init): Cache native_fd_fieldID. Fix "return with value in function returning void" warning. (get_native_fd): Use cached native_fd_fieldID. Index: native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c,v retrieving revision 1.10 diff -I*.class -u -r1.10 gnu_java_nio_channels_FileChannelImpl.c --- native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c 1 May 2004 10:40:56 -0000 1.10 +++ native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c 20 Jun 2004 16:35:22 -0000 @@ -7,7 +7,7 @@ it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU @@ -87,26 +87,13 @@ #define CONVERT_SSIZE_T_TO_JINT(x) ((jint)(x & 0xFFFFFFFF)) #define CONVERT_JINT_TO_SSIZE_T(x) (x) -static jint get_native_fd(JNIEnv *env, jobject obj) -{ - jclass clazz_fc; - jfieldID field_fd; +/* cached fieldID of gnu.java.nio.channels.FileChannelImpl.fd */ +static jfieldID native_fd_fieldID; - clazz_fc = (*env)->FindClass (env, "gnu/java/nio/channels/FileChannelImpl"); - if (!clazz_fc) - { - JCL_ThrowException(env, IO_EXCEPTION, "Internal error"); - return -1; - } - - field_fd = (*env)->GetFieldID (env, clazz_fc, "fd", "I"); - if (!field_fd) - { - JCL_ThrowException(env, IO_EXCEPTION, "Internal error"); - return -1; - } - - return (*env)->GetIntField (env, obj, field_fd); +static jint +get_native_fd (JNIEnv *env, jobject obj) +{ + return (*env)->GetIntField (env, obj, native_fd_fieldID); } /* @@ -116,10 +103,28 @@ JNIEXPORT void JNICALL Java_gnu_java_nio_channels_FileChannelImpl_init (JNIEnv *env, jclass clazz) { + jclass clazz_fc; jfieldID field; jmethodID constructor; jobject obj; + /* Initialize native_fd_fieldID so we only compute it once! */ + clazz_fc = (*env)->FindClass (env, "gnu/java/nio/channels/FileChannelImpl"); + if (!clazz_fc) + { + JCL_ThrowException(env, IO_EXCEPTION, "Internal error"); + return; + } + + field = (*env)->GetFieldID (env, clazz_fc, "fd", "I"); + if (!field) + { + JCL_ThrowException(env, IO_EXCEPTION, "Internal error"); + return; + } + + native_fd_fieldID = field; + constructor = (*env)->GetMethodID (env, clazz, "", "(II)V"); if (! constructor) return; @@ -226,7 +231,7 @@ int result; native_fd = get_native_fd(env, obj); - + TARGET_NATIVE_FILE_CLOSE(native_fd,result); if (result != TARGET_NATIVE_OK) { @@ -247,7 +252,7 @@ int result; native_fd = get_native_fd(env, obj); - + TARGET_NATIVE_FILE_AVAILABLE(native_fd,bytes_available,result); if (result != TARGET_NATIVE_OK) { @@ -330,13 +335,13 @@ /* FIXME: What do we do if offset > the max value of off_t on this 32bit * system? How do we detect that and what do we do? */ - if (CONVERT_OFF_T_TO_JLONG(native_offset) != offset) + if (CONVERT_OFF_T_TO_JLONG(native_offset) != offset) { JCL_ThrowException(env, IO_EXCEPTION, "Cannot represent position correctly on this system"); } #endif /* 0 */ - + result = TARGET_NATIVE_ERROR; new_offset = TARGET_NATIVE_MATH_INT_INT64_CONST_MINUS_1; TARGET_NATIVE_FILE_SEEK_BEGIN(native_fd, offset, new_offset, result); @@ -377,7 +382,7 @@ /* FIXME: What do we do if len > the max value of off_t on this 32bit * system? How do we detect that and what do we do? */ - if (CONVERT_OFF_T_TO_JLONG(native_len) != len) + if (CONVERT_OFF_T_TO_JLONG(native_len) != len) { JCL_ThrowException(env, IO_EXCEPTION, "Cannot represent position correctly on this system"); @@ -494,7 +499,7 @@ int native_fd; char data; ssize_t bytes_read; - int result; + int result; native_fd = get_native_fd(env, obj); @@ -530,7 +535,7 @@ jbyte *bufptr; ssize_t bytes_read; ssize_t n; - int result; + int result; native_fd = get_native_fd(env, obj); @@ -554,7 +559,7 @@ (*env)->ReleaseByteArrayElements(env, buffer, bufptr, 0); if (bytes_read == 0) return -1; /* Signal end of file to Java */ - else + else return CONVERT_SSIZE_T_TO_JINT(bytes_read); } if ((result != TARGET_NATIVE_OK) @@ -583,7 +588,7 @@ int native_fd; char native_data; ssize_t bytes_written; - int result; + int result; native_fd = get_native_fd(env, obj); native_data = (char)(CONVERT_JINT_TO_INT(b) & 0xFF); @@ -612,10 +617,10 @@ jbyte *bufptr; ssize_t bytes_written; ssize_t n; - int result; + int result; native_fd = get_native_fd(env, obj); - + bufptr = (*env)->GetByteArrayElements(env, buffer, 0); if (!bufptr) { --------------010101010109050504000502-- From MAILER-DAEMON Mon Jun 21 09:04:22 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcOTG-0007t9-3s for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 09:04:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcOTE-0007r6-GJ for commit-classpath@gnu.org; Mon, 21 Jun 2004 09:04:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcOTC-0007p9-II for commit-classpath@gnu.org; Mon, 21 Jun 2004 09:04:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcOTC-0007oh-Fi for commit-classpath@gnu.org; Mon, 21 Jun 2004 09:04:18 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcORt-0005Yt-Qu for commit-classpath@gnu.org; Mon, 21 Jun 2004 09:02:58 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 113AB625CD for ; Mon, 21 Jun 2004 13:02:56 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28226-08 for ; Mon, 21 Jun 2004 13:02:55 +0000 (GMT) Received: from reali.dnsalias.net (212-41-77-134.adsl.solnet.ch [212.41.77.134]) by mail01.solnet.ch (Postfix) with ESMTP id 227FA6258B for ; Mon, 21 Jun 2004 13:02:54 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 1F9D61048A2; Mon, 21 Jun 2004 14:59:27 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040621125927.1F9D61048A2@reali.dnsalias.net> Date: Mon, 21 Jun 2004 14:59:27 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040621 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 13:04:20 -0000 From MAILER-DAEMON Mon Jun 21 09:22:34 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcOks-0004rJ-Av for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 09:22:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcOkq-0004rC-Ad for commit-classpath@gnu.org; Mon, 21 Jun 2004 09:22:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcOko-0004qz-JQ for commit-classpath@gnu.org; Mon, 21 Jun 2004 09:22:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcOko-0004qw-Ce for commit-classpath@gnu.org; Mon, 21 Jun 2004 09:22:30 -0400 Received: from [212.6.122.115] (helo=mail1.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcOjI-0003CV-7X for commit-classpath@gnu.org; Mon, 21 Jun 2004 09:20:56 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-93-099.ewetel.net [80.228.93.99]) by mail1.ewetel.de (8.12.1/8.12.9) with ESMTP id i5LDKhTa028046; Mon, 21 Jun 2004 15:20:44 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BcOoB-0002WP-00; Mon, 21 Jun 2004 15:25:59 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Mon, 21 Jun 2004 15:22:14 +0200 User-Agent: KMail/1.6.2 References: <40D5BC77.3020604@watson.ibm.com> In-Reply-To: <40D5BC77.3020604@watson.ibm.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Message-Id: <200406211522.18202.konqueror@gmx.de> X-CheckCompat: OK Cc: Steven Augart Subject: Re: nio-caching.patch (last call for comments) X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 13:22:32 -0000 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Sonntag, 20. Juni 2004 18:33 schrieb Steven Augart: ChangeLog entry: 2004-06-20 David Grove and Steven Augart=20 The correct way would be this AFAIK: 2004-06-20 David Grove Steven Augart (both names indent the same). Otherwise the patch is OK. Michael =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA1uEJWSOgCCdjSDsRApWrAJ4g3mJJkBXBPm31rm55zkXjbCUKSQCfSqyB Yp8v/dZzUFs76XVdiAnguoo=3D =3DsmuG =2D----END PGP SIGNATURE----- From MAILER-DAEMON Mon Jun 21 13:18:33 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcSRF-0001Na-BK for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 13:18:33 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcSRB-0001LO-Tr for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:18:29 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcSR7-0001Jl-Hr for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:18:29 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcSR6-0001Jh-1l for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:18:25 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcSPm-0003c2-2x for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:17:02 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5LHGZo79720; Mon, 21 Jun 2004 13:16:35 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LHGjX45798; Mon, 21 Jun 2004 13:16:45 -0400 Received: from watson.ibm.com (bilbo.watson.ibm.com [9.2.32.197]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LHGjf46972; Mon, 21 Jun 2004 13:16:45 -0400 Message-ID: <40D717FC.7050104@watson.ibm.com> Date: Mon, 21 Jun 2004 13:16:44 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: Michael Koch References: <40D5BC77.3020604@watson.ibm.com> <200406211522.18202.konqueror@gmx.de> In-Reply-To: <200406211522.18202.konqueror@gmx.de> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: commit-classpath@gnu.org Subject: Re: nio-caching.patch (last call for comments) X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 17:18:30 -0000 Michael Koch wrote: > ChangeLog entry: > > 2004-06-20 David Grove and Steven Augart > > > The correct way would be this AFAIK: > > 2004-06-20 David Grove > Steven Augart > > (both names indent the same). > > Otherwise the patch is OK. Thanks, Michael. I've committed the patch, with your suggested correction to the ChangeLog entry. --Steve A -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm From MAILER-DAEMON Mon Jun 21 13:29:16 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcSbb-0004qL-K9 for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 13:29:15 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcSbZ-0004pP-2B for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:29:13 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcSbY-0004p5-Dv for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:29:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcSbY-0004p2-CO for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:29:12 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcSZO-0007p7-Pn for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:26:59 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5LHQko22438 for ; Mon, 21 Jun 2004 13:26:46 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LHQuX46078 for ; Mon, 21 Jun 2004 13:26:57 -0400 Received: from watson.ibm.com (bilbo.watson.ibm.com [9.2.32.197]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LHQuf47408; Mon, 21 Jun 2004 13:26:56 -0400 Message-ID: <40D71A60.1040705@watson.ibm.com> Date: Mon, 21 Jun 2004 13:26:56 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------050909020909090002040401" Subject: committed: gnu/java/awt/peer/gtk/Makefile.am: alphabetize list X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 17:29:13 -0000 This is a multi-part message in MIME format. --------------050909020909090002040401 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------050909020909090002040401 Content-Type: text/plain; name="alphabetization.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="alphabetization.patch" Q29tbWl0dGVkIHdpdGggdGhlIGZvbGxvd2luZyBDaGFuZ2VMb2cgZW50cnk6CgoyMDA0LTA2 LTIxICBTdGV2ZW4gQXVnYXJ0ICA8YXVnYXJ0QHdhdHNvbi5pYm0uY29tPgoKCSogZ251L2ph dmEvYXd0L3BlZXIvZ3RrL01ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogRml4ZWQKCWFscGhh YmV0aXphdGlvbi4KCkluZGV4OiBnbnUvamF2YS9hd3QvcGVlci9ndGsvTWFrZWZpbGUuYW0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvY2xhc3NwYXRoL2NsYXNzcGF0aC9n bnUvamF2YS9hd3QvcGVlci9ndGsvTWFrZWZpbGUuYW0sdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMTQKZGlmZiAtSSouY2xhc3MgLXUgLXIxLjE0IE1ha2VmaWxlLmFtCi0tLSBnbnUvamF2 YS9hd3QvcGVlci9ndGsvTWFrZWZpbGUuYW0JMjAgSnVuIDIwMDQgMTI6MzM6NDcgLTAwMDAJ MS4xNAorKysgZ251L2phdmEvYXd0L3BlZXIvZ3RrL01ha2VmaWxlLmFtCTIxIEp1biAyMDA0 IDE3OjI1OjIzIC0wMDAwCkBAIC05LDYgKzksOCBAQAogCUdka0dyYXBoaWNzMkQuamF2YSBc CiAJR2RrR3JhcGhpY3NFbnZpcm9ubWVudC5qYXZhIFwKIAlHZGtQaXhidWZEZWNvZGVyLmph dmEgXAorCUdUaHJlYWROYXRpdmVNZXRob2RSdW5uZXIuamF2YSBcCisJR1RocmVhZE11dGV4 LmphdmEgXAogCUd0a0FyZy5qYXZhIFwKIAlHdGtBcmdMaXN0LmphdmEgXAogCUd0a0J1dHRv blBlZXIuamF2YSBcCkBAIC00NCw2ICs0Niw0IEBACiAJR3RrVGV4dENvbXBvbmVudFBlZXIu amF2YSBcCiAJR3RrVGV4dEZpZWxkUGVlci5qYXZhIFwKIAlHdGtUb29sa2l0LmphdmEgXAot CUd0a1dpbmRvd1BlZXIuamF2YSBcCi0JR1RocmVhZE5hdGl2ZU1ldGhvZFJ1bm5lci5qYXZh IFwKLQlHVGhyZWFkTXV0ZXguamF2YQorCUd0a1dpbmRvd1BlZXIuamF2YQo= --------------050909020909090002040401-- From MAILER-DAEMON Mon Jun 21 13:40:12 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcSmB-0007jW-QU for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 13:40:12 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcSm9-0007i9-0V for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:40:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcSm6-0007h1-8z for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:40:07 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcSm6-0007gd-6J for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:40:06 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcSkW-0006pf-47 for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:38:28 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5LHcFo97510 for ; Mon, 21 Jun 2004 13:38:15 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LHcPX41248 for ; Mon, 21 Jun 2004 13:38:25 -0400 Received: from watson.ibm.com (bilbo.watson.ibm.com [9.2.32.197]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LHcPf41246; Mon, 21 Jun 2004 13:38:25 -0400 Message-ID: <40D71D11.6000802@watson.ibm.com> Date: Mon, 21 Jun 2004 13:38:25 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: commit-classpath@gnu.org Content-Type: multipart/mixed; boundary="------------010200070005070408020303" Subject: fix const/non-const warnings in jcl.c, jcl.h X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 17:40:10 -0000 This is a multi-part message in MIME format. --------------010200070005070408020303 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------010200070005070408020303 Content-Type: text/plain; name="jcl-warnings.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="jcl-warnings.patch" CkR1ZSB0byB0aGUgbWFzc2l2ZSByZS1pbmRlbnRhdGlvbiBjaGFuZ2VzLCBJJ3ZlIG1hZGUg dGhpcyBwYXRjaCBieQpnaXZpbmcgZGlmZiB0aGUgIi13IiBmbGFnLiAgCgoyMDA0LTA2LTIw ICBTdGV2ZW4gQXVnYXJ0IDxhdWdhcnRAd2F0c29uLmlibS5jb20+CgoJKiBuYXRpdmUvam5p L2NsYXNzcGF0aC9qY2wuYywgbmF0aXZlL2puaS9jbGFzc3BhdGgvamNsLmgKCShKQ0xfRmlu ZENsYXNzKTogRml4ZWQgY29uc3Qvbm9uLWNvbnN0IHdhcm5pbmcgaW4gZnVuY3Rpb24gcHJv dG90eXBlLgoJKEpDTF9UaHJvd0V4Y2VwdGlvbik6IERpdHRvLgoJKEpDTF9mcmVlX2NzdHJp bmcpOiBGaXhlZCBsb2dpY2FsIGNvbnN0L25vbi1jb25zdCBwcm9ibGVtIGluCglmdW5jdGlv biBwcm90b3R5cGUuCgoJKiBuYXRpdmUvam5pL2NsYXNzcGF0aC9qY2wuYzogUmVmb3JtYXR0 ZWQgYWNjb3JkaW5nIHRvIEdOVSBzdGFuZGFyZHMuCgpJbmRleDogbmF0aXZlL2puaS9jbGFz c3BhdGgvamNsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvY2xhc3NwYXRo L2NsYXNzcGF0aC9uYXRpdmUvam5pL2NsYXNzcGF0aC9qY2wuYyx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS44CmRpZmYgLUkqLmNsYXNzIC13IC11IC1yMS44IGpjbC5jCi0tLSBuYXRpdmUv am5pL2NsYXNzcGF0aC9qY2wuYwkyOSBNYXIgMjAwNCAwNzowNzoyNiAtMDAwMAkxLjgKKysr IG5hdGl2ZS9qbmkvY2xhc3NwYXRoL2pjbC5jCTIxIEp1biAyMDA0IDE3OjM1OjExIC0wMDAw CkBAIC00NiwxOCArNDYsMjYgQEAKICNkZWZpbmUgX19hdHRyaWJ1dGVfXyh4KSAvKiBub3Ro aW5nICovCiAjZW5kaWYKIAotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKQ0xfVGhyb3dFeGNl cHRpb24oSk5JRW52ICogZW52LCBjaGFyICogY2xhc3NOYW1lLCBjaGFyICogZXJyTXNnKSB7 CisKK0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwKK0pDTF9UaHJvd0V4Y2VwdGlvbiAoSk5JRW52 ICogZW52LCBjb25zdCBjaGFyICpjbGFzc05hbWUsIGNvbnN0IGNoYXIgKmVyck1zZykKK3sK IAlqY2xhc3MgZXhjQ2xhc3M7Ci0JaWYoKCplbnYpLT5FeGNlcHRpb25PY2N1cnJlZChlbnYp KSB7CisgIGlmICgoKmVudiktPkV4Y2VwdGlvbk9jY3VycmVkIChlbnYpKQorICAgIHsKIAkJ KCplbnYpLT5FeGNlcHRpb25DbGVhcihlbnYpOwogCX0KIAlleGNDbGFzcyA9ICgqZW52KS0+ RmluZENsYXNzKGVudiwgY2xhc3NOYW1lKTsKLQlpZihleGNDbGFzcyA9PSBOVUxMKSB7Cisg IGlmIChleGNDbGFzcyA9PSBOVUxMKQorICAgIHsKIAkJamNsYXNzIGVyckV4Y0NsYXNzOwot CQllcnJFeGNDbGFzcyA9ICgqZW52KS0+RmluZENsYXNzKGVudiwgImphdmEvbGFuZy9DbGFz c05vdEZvdW5kRXhjZXB0aW9uIik7Ci0JCWlmKGVyckV4Y0NsYXNzID09IE5VTEwpIHsKKyAg ICAgIGVyckV4Y0NsYXNzID0KKwkoKmVudiktPkZpbmRDbGFzcyAoZW52LCAiamF2YS9sYW5n L0NsYXNzTm90Rm91bmRFeGNlcHRpb24iKTsKKyAgICAgIGlmIChlcnJFeGNDbGFzcyA9PSBO VUxMKQorCXsKIAkJCWVyckV4Y0NsYXNzID0gKCplbnYpLT5GaW5kQ2xhc3MoZW52LCAiamF2 YS9sYW5nL0ludGVybmFsRXJyb3IiKTsKLQkJCWlmKGVyckV4Y0NsYXNzID09IE5VTEwpIHsK KwkgIGlmIChlcnJFeGNDbGFzcyA9PSBOVUxMKQorCSAgICB7CiAJCQkJZnByaW50ZihzdGRl cnIsICJKQ0w6IFV0dGVybHkgZmFpbGVkIHRvIHRocm93IGV4ZXB0aW9uICIpOwogCQkJCWZw cmludGYoc3RkZXJyLCBjbGFzc05hbWUpOwogCQkJCWZwcmludGYoc3RkZXJyLCAiIHdpdGgg bWVzc2FnZSAiKTsKQEAgLTY1LDkgKzczLDkgQEAKIAkJCQlyZXR1cm47CiAJCQl9CiAJCX0K LQkJLyogUmVtb3ZlZCB0aGlzIChtb3JlIGNvbXByZWhlbnNpdmUpIGVycm9yIHN0cmluZyB0 byBhdm9pZCB0aGUgbmVlZCBmb3IgYSAKLQkJICogc3RhdGljIHZhcmlhYmxlIG9yIGFsbG9j YXRpb24gb2YgYSBidWZmZXIgZm9yIHRoaXMgbWVzc2FnZSBpbiB0aGlzICh1bmxpa2VseSkg Ci0JCSAqIGVycm9yIGNhc2UuIC0tRnJpZGkuIAorICAgICAgLyogUmVtb3ZlZCB0aGlzICht b3JlIGNvbXByZWhlbnNpdmUpIGVycm9yIHN0cmluZyB0byBhdm9pZCB0aGUgbmVlZCBmb3IK KyAgICAgICAqIGEgc3RhdGljIHZhcmlhYmxlIG9yIGFsbG9jYXRpb24gb2YgYSBidWZmZXIg Zm9yIHRoaXMgbWVzc2FnZSBpbiB0aGlzCisgICAgICAgKiAodW5saWtlbHkpIGVycm9yIGNh c2UuIC0tRnJpZGkuIAogCQkgKgogCQkgKiBzcHJpbnRmKGVycnN0ciwiSkNMOiBGYWlsZWQg dG8gdGhyb3cgZXhjZXB0aW9uICVzIHdpdGggbWVzc2FnZSAlczogY291bGQgbm90IGZpbmQg ZXhjZXB0aW9uIGNsYXNzLiIsIGNsYXNzTmFtZSwgZXJyTXNnKTsgCiAJCSAqLwpAQCAtNzYs MTYgKzg0LDIzIEBACiAJKCplbnYpLT5UaHJvd05ldyhlbnYsIGV4Y0NsYXNzLCBlcnJNc2cp OwogfQogCi1KTklFWFBPUlQgdm9pZCAqIEpOSUNBTEwgSkNMX21hbGxvYyhKTklFbnYgKiBl bnYsIHNpemVfdCBzaXplKSB7CisKK0pOSUVYUE9SVCB2b2lkICpKTklDQUxMCitKQ0xfbWFs bG9jIChKTklFbnYgKiBlbnYsIHNpemVfdCBzaXplKQorewogCXZvaWQgKiBtZW0gPSBtYWxs b2Moc2l6ZSk7Ci0JaWYobWVtID09IE5VTEwpIHsKLQkJSkNMX1Rocm93RXhjZXB0aW9uKGVu diwgImphdmEvbGFuZy9PdXRPZk1lbW9yeUVycm9yIiwgIm1hbGxvYygpIGZhaWxlZC4iKTsK KyAgaWYgKG1lbSA9PSBOVUxMKQorICAgIHsKKyAgICAgIEpDTF9UaHJvd0V4Y2VwdGlvbiAo ZW52LCAiamF2YS9sYW5nL091dE9mTWVtb3J5RXJyb3IiLAorCQkJICAibWFsbG9jKCkgZmFp bGVkLiIpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAJcmV0dXJuIG1lbTsKIH0KIAotSk5JRVhQ T1JUIHZvaWQgKiBKTklDQUxMIEpDTF9yZWFsbG9jKEpOSUVudiAqZW52LCB2b2lkICpwdHIs IHNpemVfdCBzaXplKQorCitKTklFWFBPUlQgdm9pZCAqSk5JQ0FMTAorSkNMX3JlYWxsb2Mg KEpOSUVudiAqIGVudiwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKIHsKICAgcHRyID0gcmVh bGxvYyhwdHIsIHNpemUpOwogICBpZiAocHRyID09IDApCkBAIC05Nyw1MSArMTEyLDc3IEBA CiAgIHJldHVybihwdHIpOwogfQogCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEpDTF9mcmVl KEpOSUVudiAqIGVudiBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKLQkJCQl2b2lkICogcCkK KworSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTAorSkNMX2ZyZWUgKEpOSUVudiAqIGVudiBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSksIHZvaWQgKnApCit7CisgIGlmIChwICE9IE5VTEwpCiB7 Ci0JaWYocCAhPSBOVUxMKSB7CiAJCWZyZWUocCk7CiAJfQogfQogCi1KTklFWFBPUlQgY29u c3QgY2hhciAqIEpOSUNBTEwgSkNMX2pzdHJpbmdfdG9fY3N0cmluZyhKTklFbnYgKiBlbnYs IGpzdHJpbmcgcykgeworCitKTklFWFBPUlQgY29uc3QgY2hhciAqSk5JQ0FMTAorSkNMX2pz dHJpbmdfdG9fY3N0cmluZyAoSk5JRW52ICogZW52LCBqc3RyaW5nIHMpCit7CiAJY29uc3Qg Y2hhciogY3N0cjsKLQlpZihzID09IE5VTEwpIHsKLQkJSkNMX1Rocm93RXhjZXB0aW9uKGVu diwgImphdmEvbGFuZy9OdWxsUG9pbnRlckV4Y2VwdGlvbiIsIk51bGwgc3RyaW5nIik7Cisg IGlmIChzID09IE5VTEwpCisgICAgeworICAgICAgSkNMX1Rocm93RXhjZXB0aW9uIChlbnYs ICJqYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24iLAorCQkJICAiTnVsbCBzdHJpbmci KTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCWNzdHIgPSAoY29uc3QgY2hhciopKCplbnYpLT5H ZXRTdHJpbmdVVEZDaGFycyhlbnYsIHMsIE5VTEwpOwotCWlmKGNzdHIgPT0gTlVMTCkgewot CQlKQ0xfVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0ludGVybmFsRXJyb3IiLCAi R2V0U3RyaW5nVVRGQ2hhcnMoKSBmYWlsZWQuIik7CisgIGlmIChjc3RyID09IE5VTEwpCisg ICAgeworICAgICAgSkNMX1Rocm93RXhjZXB0aW9uIChlbnYsICJqYXZhL2xhbmcvSW50ZXJu YWxFcnJvciIsCisJCQkgICJHZXRTdHJpbmdVVEZDaGFycygpIGZhaWxlZC4iKTsKIAkJcmV0 dXJuIE5VTEw7CiAJfQogCXJldHVybiBjc3RyOwogfQogCi1KTklFWFBPUlQgdm9pZCBKTklD QUxMIEpDTF9mcmVlX2NzdHJpbmcoSk5JRW52ICogZW52LCBqc3RyaW5nIHMsIGNvbnN0IGNo YXIgKiBjc3RyKSB7CisKK0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwKK0pDTF9mcmVlX2NzdHJp bmcgKEpOSUVudiAqIGVudiwganN0cmluZyBzLCBjaGFyICpjc3RyKQorewogCSgqZW52KS0+ UmVsZWFzZVN0cmluZ1VURkNoYXJzKGVudiwgcywgY3N0cik7CiB9CiAKLUpOSUVYUE9SVCBq aW50IEpOSUNBTEwgSkNMX01vbml0b3JFbnRlcihKTklFbnYgKiBlbnYsIGpvYmplY3Qgbykg eworCitKTklFWFBPUlQgamludCBKTklDQUxMCitKQ0xfTW9uaXRvckVudGVyIChKTklFbnYg KiBlbnYsIGpvYmplY3QgbykKK3sKIAlqaW50IHJldHZhbCA9ICgqZW52KS0+TW9uaXRvckVu dGVyKGVudixvKTsKLQlpZihyZXR2YWwgIT0gMCkgewotCQlKQ0xfVGhyb3dFeGNlcHRpb24o ZW52LCAiamF2YS9sYW5nL0ludGVybmFsRXJyb3IiLCAiTW9uaXRvckVudGVyKCkgZmFpbGVk LiIpOworICBpZiAocmV0dmFsICE9IDApCisgICAgeworICAgICAgSkNMX1Rocm93RXhjZXB0 aW9uIChlbnYsICJqYXZhL2xhbmcvSW50ZXJuYWxFcnJvciIsCisJCQkgICJNb25pdG9yRW50 ZXIoKSBmYWlsZWQuIik7CiAJfQogCXJldHVybiByZXR2YWw7CiB9CiAKLUpOSUVYUE9SVCBq aW50IEpOSUNBTEwgSkNMX01vbml0b3JFeGl0KEpOSUVudiAqIGVudiwgam9iamVjdCBvKSB7 CisKK0pOSUVYUE9SVCBqaW50IEpOSUNBTEwKK0pDTF9Nb25pdG9yRXhpdCAoSk5JRW52ICog ZW52LCBqb2JqZWN0IG8pCit7CiAJamludCByZXR2YWwgPSAoKmVudiktPk1vbml0b3JFeGl0 KGVudixvKTsKLQlpZihyZXR2YWwgIT0gMCkgewotCQlKQ0xfVGhyb3dFeGNlcHRpb24oZW52 LCAiamF2YS9sYW5nL0ludGVybmFsRXJyb3IiLCAiTW9uaXRvckV4aXQoKSBmYWlsZWQuIik7 CisgIGlmIChyZXR2YWwgIT0gMCkKKyAgICB7CisgICAgICBKQ0xfVGhyb3dFeGNlcHRpb24g KGVudiwgImphdmEvbGFuZy9JbnRlcm5hbEVycm9yIiwKKwkJCSAgIk1vbml0b3JFeGl0KCkg ZmFpbGVkLiIpOwogCX0KIAlyZXR1cm4gcmV0dmFsOwogfQogCi1KTklFWFBPUlQgamNsYXNz IEpOSUNBTEwgSkNMX0ZpbmRDbGFzcyhKTklFbnYgKiBlbnYsIGNoYXIgKiBjbGFzc05hbWUp IHsKKworSk5JRVhQT1JUIGpjbGFzcyBKTklDQUxMCitKQ0xfRmluZENsYXNzIChKTklFbnYg KiBlbnYsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSkKK3sKIAlqY2xhc3MgcmV0dmFsID0gKCpl bnYpLT5GaW5kQ2xhc3MoZW52LGNsYXNzTmFtZSk7Ci0JaWYocmV0dmFsID09IE5VTEwpIHsK KyAgaWYgKHJldHZhbCA9PSBOVUxMKQorICAgIHsKIAkJSkNMX1Rocm93RXhjZXB0aW9uKGVu diwgImphdmEvbGFuZy9DbGFzc05vdEZvdW5kRXhjZXB0aW9uIiwgY2xhc3NOYW1lKTsKIAl9 CiAJcmV0dXJuIHJldHZhbDsKSW5kZXg6IG5hdGl2ZS9qbmkvY2xhc3NwYXRoL2pjbC5oCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2NsYXNzcGF0aC9jbGFzc3BhdGgvbmF0 aXZlL2puaS9jbGFzc3BhdGgvamNsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZm IC1JKi5jbGFzcyAtdyAtdSAtcjEuNiBqY2wuaAotLS0gbmF0aXZlL2puaS9jbGFzc3BhdGgv amNsLmgJMjkgTWFyIDIwMDQgMDc6MDc6MjYgLTAwMDAJMS42CisrKyBuYXRpdmUvam5pL2Ns YXNzcGF0aC9qY2wuaAkyMSBKdW4gMjAwNCAxNzozNToxMSAtMDAwMApAQCAtNDgsNyArNDgs NyBAQAogSk5JRVhQT1JUIHZvaWQgKiBKTklDQUxMIEpDTF9yZWFsbG9jKEpOSUVudiAqZW52 LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKIEpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSkNM X2ZyZWUoSk5JRW52ICplbnYsIHZvaWQgKiBwKTsKIEpOSUVYUE9SVCBjb25zdCBjaGFyICog Sk5JQ0FMTCBKQ0xfanN0cmluZ190b19jc3RyaW5nKEpOSUVudiAqZW52LCBqc3RyaW5nIHMp OwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKQ0xfZnJlZV9jc3RyaW5nKEpOSUVudiAqZW52 LCBqc3RyaW5nIHMsIGNvbnN0IGNoYXIgKiBjc3RyKTsKK0pOSUVYUE9SVCB2b2lkIEpOSUNB TEwgSkNMX2ZyZWVfY3N0cmluZyhKTklFbnYgKmVudiwganN0cmluZyBzLCBjaGFyICogY3N0 cik7CiBKTklFWFBPUlQgamludCBKTklDQUxMIEpDTF9Nb25pdG9yRW50ZXIoSk5JRW52ICpl bnYsIGpvYmplY3Qgbyk7CiBKTklFWFBPUlQgamludCBKTklDQUxMIEpDTF9Nb25pdG9yRXhp dChKTklFbnYgKmVudiwgam9iamVjdCBvKTsKIAo= --------------010200070005070408020303-- From MAILER-DAEMON Mon Jun 21 13:58:23 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcT3m-0003Fm-RE for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 13:58:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcT3l-0003FR-OH for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:58:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcT3h-0003E8-Li for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:58:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcT3h-0003De-E8 for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:58:17 -0400 Received: from [212.6.122.115] (helo=mail1.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcT25-0004y7-8h for commit-classpath@gnu.org; Mon, 21 Jun 2004 13:56:37 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-93-099.ewetel.net [80.228.93.99]) by mail1.ewetel.de (8.12.1/8.12.9) with ESMTP id i5LHuUTa011581; Mon, 21 Jun 2004 19:56:31 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BcT75-00032r-00; Mon, 21 Jun 2004 20:01:47 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Mon, 21 Jun 2004 19:58:05 +0200 User-Agent: KMail/1.6.2 References: <40D71D11.6000802@watson.ibm.com> In-Reply-To: <40D71D11.6000802@watson.ibm.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Message-Id: <200406211958.05106.konqueror@gmx.de> X-CheckCompat: OK Cc: Steven Augart Subject: Re: fix const/non-const warnings in jcl.c, jcl.h X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 17:58:22 -0000 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Montag, 21. Juni 2004 19:38 schrieb Steven Augart: > 2004-06-20 =A0Steven Augart > > =A0=A0=A0=A0=A0=A0=A0=A0* native/jni/classpath/jcl.c, native/jni/classpat= h/jcl.h > =A0=A0=A0=A0=A0=A0=A0=A0(JCL_FindClass): Fixed const/non-const warning in= function > prototype. (JCL_ThrowException): Ditto. > =A0=A0=A0=A0=A0=A0=A0=A0(JCL_free_cstring): Fixed logical const/non-const= problem > in function prototype. > > =A0=A0=A0=A0=A0=A0=A0=A0* native/jni/classpath/jcl.c: Reformatted accordi= ng to GNU > standards. Can you provide two patches, one for functional changes and one for=20 the reformatting ? This makes it easier later to track changes. Michael =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA1yGtWSOgCCdjSDsRAhyrAJ9ZKS/FpESwDH4iQVyP5BaENDaN2gCgj2NT VK0Q30Ay9AXAi+4qUjsc6xw=3D =3DZDCw =2D----END PGP SIGNATURE----- From MAILER-DAEMON Mon Jun 21 14:46:26 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcToI-0007Z3-3o for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 14:46:26 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcToF-0007Yp-P9 for commit-classpath@gnu.org; Mon, 21 Jun 2004 14:46:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcToD-0007YR-VR for commit-classpath@gnu.org; Mon, 21 Jun 2004 14:46:23 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcToD-0007YH-Rv for commit-classpath@gnu.org; Mon, 21 Jun 2004 14:46:21 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcTmi-0008DB-9Z for commit-classpath@gnu.org; Mon, 21 Jun 2004 14:44:48 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5LIiXo55146; Mon, 21 Jun 2004 14:44:34 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LIiiX44260; Mon, 21 Jun 2004 14:44:44 -0400 Received: from watson.ibm.com (bilbo.watson.ibm.com [9.2.32.197]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LIihf44258; Mon, 21 Jun 2004 14:44:43 -0400 Message-ID: <40D72C9B.7070909@watson.ibm.com> Date: Mon, 21 Jun 2004 14:44:43 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: Mark Wielaard References: <1087734735.1151.121.camel@elsschot.wildebeest.org> In-Reply-To: <1087734735.1151.121.camel@elsschot.wildebeest.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: commit-classpath@gnu.org Subject: Re: gtk-peer Makefile fixlets X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 18:46:24 -0000 Mark Wielaard wrote: > Hi, > > I needed to following to make make distcheck happy: > > 2004-06-20 Mark Wielaard > > * native/jni/gtk-peer/Makefile.am (EXTRA_DIST): Add > gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h. > (libgtkpeer_la_SOURCES): Add > gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c. > * gnu/java/awt/peer/gtk/Makefile.am (EXTRA_DIST): Add > GThreadNativeMethodRunner.java and GThreadMutex.java > > Committed. > > We will include the generated .h file for now since most javah, gcjh > implementations out there have some subtle bugs. Maybe when gcj 3.5 is > out we can build them from source during build automatically again. I apologize for leaving out those changes to the Makefile.am files. It's the problem with having several uncommitted patches hanging fire simultaneously; I sometimes leave out files, and don't notice them for a while. --Steve Augart > > Cheers, > > Mark > > > ------------------------------------------------------------------------ > > _______________________________________________ > Commit-classpath mailing list > Commit-classpath@gnu.org > http://lists.gnu.org/mailman/listinfo/commit-classpath -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm From MAILER-DAEMON Mon Jun 21 15:03:10 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcU4U-0003yO-Jd for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 15:03:10 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcU4S-0003y9-JJ for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:03:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcU4Q-0003xq-Kx for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:03:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcU4Q-0003xn-HL for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:03:06 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcU2a-0004cp-5J for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:01:14 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5LJ0so70626; Mon, 21 Jun 2004 15:00:54 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LJ14X38840; Mon, 21 Jun 2004 15:01:04 -0400 Received: from watson.ibm.com (bilbo.watson.ibm.com [9.2.32.197]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LJ13f26168; Mon, 21 Jun 2004 15:01:03 -0400 Message-ID: <40D7306F.9090808@watson.ibm.com> Date: Mon, 21 Jun 2004 15:01:03 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: Michael Koch References: <40D71D11.6000802@watson.ibm.com> <200406211958.05106.konqueror@gmx.de> In-Reply-To: <200406211958.05106.konqueror@gmx.de> Content-Type: multipart/mixed; boundary="------------080800000206040705060306" Cc: commit-classpath@gnu.org Subject: libclasspath reformatting patch (was: Re: fix const/non-const warnings in jcl.c, jcl.h) X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 19:03:08 -0000 This is a multi-part message in MIME format. --------------080800000206040705060306 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Michael Koch wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Am Montag, 21. Juni 2004 19:38 schrieb Steven Augart: > >>2004-06-20 Steven Augart >> >> * native/jni/classpath/jcl.c, native/jni/classpath/jcl.h >> (JCL_FindClass): Fixed const/non-const warning in function >>prototype. (JCL_ThrowException): Ditto. >> (JCL_free_cstring): Fixed logical const/non-const problem >>in function prototype. >> >> * native/jni/classpath/jcl.c: Reformatted according to GNU >>standards. > > > Can you provide two patches, one for functional changes and one for > the reformatting ? This makes it easier later to track changes. That is indeed a better idea. I'm attaching the patch for reformatting first. Will submit the other one shortly. I hate having multiple patches to the same file outstanding; whine whine. --Steve Augart -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------080800000206040705060306 Content-Type: text/plain; name="libclasspath-reformatting.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="libclasspath-reformatting.patch" Ck9LIHRvIGNvbW1pdD8gIFRoYW5rcyB0byBNaWNoYWVsIEtvY2ggZm9yIHBvaW50aW5nIG91 dCB0aGF0IHRoaXMKc2hvdWxkIGJlIGRvbmUgc2VwYXJhdGVseSBmcm9tIGFueSBzdWJzdGFu dGl2ZSBjaGFuZ2VzLgoKMjAwNC0wNi0yMSAgU3RldmVuIEF1Z2FydCA8YXVnYXJ0QHdhdHNv bi5pYm0uY29tPgoKCSogbmF0aXZlL2puaS9jbGFzc3BhdGgvamNsLmMsIG5hdGl2ZS9qbmkv Y2xhc3NwYXRoL2pjbC5oLAoJbmF0aXZlL2puaS9jbGFzc3BhdGgvam5pbGluay5jLCBuYXRp dmUvam5pL2NsYXNzcGF0aC9qbmlsaW5rLmgsCgluYXRpdmUvam5pL2NsYXNzcGF0aC9uYXRp dmVfc3RhdGUuYywgCgluYXRpdmUvam5pL2NsYXNzcGF0aC9uYXRpdmVfc3RhdGUuaCwKCW5h dGl2ZS9qbmkvY2xhc3NwYXRoL3ByaW1saWIuYywgbmF0aXZlL2puaS9jbGFzc3BhdGgvcHJp bWxpYi5oOgoJUmVmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIEdOVSBDb2Rpbmcgc3RhbmRhcmRz LgoKSW5kZXg6IG5hdGl2ZS9qbmkvY2xhc3NwYXRoL2pjbC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9jdnNyb290L2NsYXNzcGF0aC9jbGFzc3BhdGgvbmF0aXZlL2puaS9jbGFzc3Bh dGgvamNsLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOApkaWZmIC1JKi5jbGFzcyAtdSAt cjEuOCBqY2wuYwotLS0gbmF0aXZlL2puaS9jbGFzc3BhdGgvamNsLmMJMjkgTWFyIDIwMDQg MDc6MDc6MjYgLTAwMDAJMS44CisrKyBuYXRpdmUvam5pL2NsYXNzcGF0aC9qY2wuYwkyMSBK dW4gMjAwNCAxODo1ODozMSAtMDAwMApAQCAtNDMsMTA2ICs0MywxMzggQEAKICNpbmNsdWRl IDxqY2wuaD4KIAogI2lmbmRlZiBfX0dOVUNfXwotI2RlZmluZSBfX2F0dHJpYnV0ZV9fKHgp IC8qIG5vdGhpbmcgKi8KKyNkZWZpbmUgX19hdHRyaWJ1dGVfXyh4KQkvKiBub3RoaW5nICov CiAjZW5kaWYKIAotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKQ0xfVGhyb3dFeGNlcHRpb24o Sk5JRW52ICogZW52LCBjaGFyICogY2xhc3NOYW1lLCBjaGFyICogZXJyTXNnKSB7Ci0JamNs YXNzIGV4Y0NsYXNzOwotCWlmKCgqZW52KS0+RXhjZXB0aW9uT2NjdXJyZWQoZW52KSkgewot CQkoKmVudiktPkV4Y2VwdGlvbkNsZWFyKGVudik7Ci0JfQotCWV4Y0NsYXNzID0gKCplbnYp LT5GaW5kQ2xhc3MoZW52LCBjbGFzc05hbWUpOwotCWlmKGV4Y0NsYXNzID09IE5VTEwpIHsK LQkJamNsYXNzIGVyckV4Y0NsYXNzOwotCQllcnJFeGNDbGFzcyA9ICgqZW52KS0+RmluZENs YXNzKGVudiwgImphdmEvbGFuZy9DbGFzc05vdEZvdW5kRXhjZXB0aW9uIik7Ci0JCWlmKGVy ckV4Y0NsYXNzID09IE5VTEwpIHsKLQkJCWVyckV4Y0NsYXNzID0gKCplbnYpLT5GaW5kQ2xh c3MoZW52LCAiamF2YS9sYW5nL0ludGVybmFsRXJyb3IiKTsKLQkJCWlmKGVyckV4Y0NsYXNz ID09IE5VTEwpIHsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIkpDTDogVXR0ZXJseSBmYWlsZWQg dG8gdGhyb3cgZXhlcHRpb24gIik7Ci0JCQkJZnByaW50ZihzdGRlcnIsIGNsYXNzTmFtZSk7 Ci0JCQkJZnByaW50ZihzdGRlcnIsICIgd2l0aCBtZXNzYWdlICIpOwotCQkJCWZwcmludGYo c3RkZXJyLCBlcnJNc2cpOwotCQkJCXJldHVybjsKLQkJCX0KLQkJfQotCQkvKiBSZW1vdmVk IHRoaXMgKG1vcmUgY29tcHJlaGVuc2l2ZSkgZXJyb3Igc3RyaW5nIHRvIGF2b2lkIHRoZSBu ZWVkIGZvciBhIAotCQkgKiBzdGF0aWMgdmFyaWFibGUgb3IgYWxsb2NhdGlvbiBvZiBhIGJ1 ZmZlciBmb3IgdGhpcyBtZXNzYWdlIGluIHRoaXMgKHVubGlrZWx5KSAKLQkJICogZXJyb3Ig Y2FzZS4gLS1GcmlkaS4gCi0JCSAqCi0JCSAqIHNwcmludGYoZXJyc3RyLCJKQ0w6IEZhaWxl ZCB0byB0aHJvdyBleGNlcHRpb24gJXMgd2l0aCBtZXNzYWdlICVzOiBjb3VsZCBub3QgZmlu ZCBleGNlcHRpb24gY2xhc3MuIiwgY2xhc3NOYW1lLCBlcnJNc2cpOyAKLQkJICovCi0JCSgq ZW52KS0+VGhyb3dOZXcoZW52LCBlcnJFeGNDbGFzcywgY2xhc3NOYW1lKTsKLQl9Ci0JKCpl bnYpLT5UaHJvd05ldyhlbnYsIGV4Y0NsYXNzLCBlcnJNc2cpOworSk5JRVhQT1JUIHZvaWQg Sk5JQ0FMTAorSkNMX1Rocm93RXhjZXB0aW9uIChKTklFbnYgKiBlbnYsIGNoYXIgKmNsYXNz TmFtZSwgY2hhciAqZXJyTXNnKQoreworICBqY2xhc3MgZXhjQ2xhc3M7CisgIGlmICgoKmVu diktPkV4Y2VwdGlvbk9jY3VycmVkIChlbnYpKQorICAgIHsKKyAgICAgICgqZW52KS0+RXhj ZXB0aW9uQ2xlYXIgKGVudik7CisgICAgfQorICBleGNDbGFzcyA9ICgqZW52KS0+RmluZENs YXNzIChlbnYsIGNsYXNzTmFtZSk7CisgIGlmIChleGNDbGFzcyA9PSBOVUxMKQorICAgIHsK KyAgICAgIGpjbGFzcyBlcnJFeGNDbGFzczsKKyAgICAgIGVyckV4Y0NsYXNzID0KKwkoKmVu diktPkZpbmRDbGFzcyAoZW52LCAiamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24i KTsKKyAgICAgIGlmIChlcnJFeGNDbGFzcyA9PSBOVUxMKQorCXsKKwkgIGVyckV4Y0NsYXNz ID0gKCplbnYpLT5GaW5kQ2xhc3MgKGVudiwgImphdmEvbGFuZy9JbnRlcm5hbEVycm9yIik7 CisJICBpZiAoZXJyRXhjQ2xhc3MgPT0gTlVMTCkKKwkgICAgeworCSAgICAgIGZwcmludGYg KHN0ZGVyciwgIkpDTDogVXR0ZXJseSBmYWlsZWQgdG8gdGhyb3cgZXhlcHRpb24gIik7CisJ ICAgICAgZnByaW50ZiAoc3RkZXJyLCBjbGFzc05hbWUpOworCSAgICAgIGZwcmludGYgKHN0 ZGVyciwgIiB3aXRoIG1lc3NhZ2UgIik7CisJICAgICAgZnByaW50ZiAoc3RkZXJyLCBlcnJN c2cpOworCSAgICAgIHJldHVybjsKKwkgICAgfQorCX0KKyAgICAgIC8qIFJlbW92ZWQgdGhp cyAobW9yZSBjb21wcmVoZW5zaXZlKSBlcnJvciBzdHJpbmcgdG8gYXZvaWQgdGhlIG5lZWQg Zm9yIGEgCisgICAgICAgKiBzdGF0aWMgdmFyaWFibGUgb3IgYWxsb2NhdGlvbiBvZiBhIGJ1 ZmZlciBmb3IgdGhpcyBtZXNzYWdlIGluIHRoaXMgKHVubGlrZWx5KSAKKyAgICAgICAqIGVy cm9yIGNhc2UuIC0tRnJpZGkuIAorICAgICAgICoKKyAgICAgICAqIHNwcmludGYoZXJyc3Ry LCJKQ0w6IEZhaWxlZCB0byB0aHJvdyBleGNlcHRpb24gJXMgd2l0aCBtZXNzYWdlICVzOiBj b3VsZCBub3QgZmluZCBleGNlcHRpb24gY2xhc3MuIiwgY2xhc3NOYW1lLCBlcnJNc2cpOyAK KyAgICAgICAqLworICAgICAgKCplbnYpLT5UaHJvd05ldyAoZW52LCBlcnJFeGNDbGFzcywg Y2xhc3NOYW1lKTsKKyAgICB9CisgICgqZW52KS0+VGhyb3dOZXcgKGVudiwgZXhjQ2xhc3Ms IGVyck1zZyk7CiB9CiAKLUpOSUVYUE9SVCB2b2lkICogSk5JQ0FMTCBKQ0xfbWFsbG9jKEpO SUVudiAqIGVudiwgc2l6ZV90IHNpemUpIHsKLQl2b2lkICogbWVtID0gbWFsbG9jKHNpemUp OwotCWlmKG1lbSA9PSBOVUxMKSB7Ci0JCUpDTF9UaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZh L2xhbmcvT3V0T2ZNZW1vcnlFcnJvciIsICJtYWxsb2MoKSBmYWlsZWQuIik7Ci0JCXJldHVy biBOVUxMOwotCX0KLQlyZXR1cm4gbWVtOworSk5JRVhQT1JUIHZvaWQgKkpOSUNBTEwKK0pD TF9tYWxsb2MgKEpOSUVudiAqIGVudiwgc2l6ZV90IHNpemUpCit7CisgIHZvaWQgKm1lbSA9 IG1hbGxvYyAoc2l6ZSk7CisgIGlmIChtZW0gPT0gTlVMTCkKKyAgICB7CisgICAgICBKQ0xf VGhyb3dFeGNlcHRpb24gKGVudiwgImphdmEvbGFuZy9PdXRPZk1lbW9yeUVycm9yIiwKKwkJ CSAgIm1hbGxvYygpIGZhaWxlZC4iKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAg cmV0dXJuIG1lbTsKIH0KIAotSk5JRVhQT1JUIHZvaWQgKiBKTklDQUxMIEpDTF9yZWFsbG9j KEpOSUVudiAqZW52LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKQorSk5JRVhQT1JUIHZvaWQg KkpOSUNBTEwKK0pDTF9yZWFsbG9jIChKTklFbnYgKiBlbnYsIHZvaWQgKnB0ciwgc2l6ZV90 IHNpemUpCiB7Ci0gIHB0ciA9IHJlYWxsb2MocHRyLCBzaXplKTsKKyAgcHRyID0gcmVhbGxv YyAocHRyLCBzaXplKTsKICAgaWYgKHB0ciA9PSAwKQogICAgIHsKLSAgICAgIEpDTF9UaHJv d0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvT3V0T2ZNZW1vcnlFcnJvciIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJtYWxsb2MoKSBmYWlsZWQuIik7CisgICAgICBKQ0xf VGhyb3dFeGNlcHRpb24gKGVudiwgImphdmEvbGFuZy9PdXRPZk1lbW9yeUVycm9yIiwKKwkJ CSAgIm1hbGxvYygpIGZhaWxlZC4iKTsKICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAg cmV0dXJuKHB0cik7CisgIHJldHVybiAocHRyKTsKIH0KIAotSk5JRVhQT1JUIHZvaWQgSk5J Q0FMTCBKQ0xfZnJlZShKTklFbnYgKiBlbnYgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCi0J CQkJdm9pZCAqIHApCitKTklFWFBPUlQgdm9pZCBKTklDQUxMCitKQ0xfZnJlZSAoSk5JRW52 ICogZW52IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgdm9pZCAqcCkKIHsKLQlpZihwICE9 IE5VTEwpIHsKLQkJZnJlZShwKTsKLQl9CisgIGlmIChwICE9IE5VTEwpCisgICAgeworICAg ICAgZnJlZSAocCk7CisgICAgfQogfQogCi1KTklFWFBPUlQgY29uc3QgY2hhciAqIEpOSUNB TEwgSkNMX2pzdHJpbmdfdG9fY3N0cmluZyhKTklFbnYgKiBlbnYsIGpzdHJpbmcgcykgewot CWNvbnN0IGNoYXIqIGNzdHI7Ci0JaWYocyA9PSBOVUxMKSB7Ci0JCUpDTF9UaHJvd0V4Y2Vw dGlvbihlbnYsICJqYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24iLCJOdWxsIHN0cmlu ZyIpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0JY3N0ciA9IChjb25zdCBjaGFyKikoKmVudikt PkdldFN0cmluZ1VURkNoYXJzKGVudiwgcywgTlVMTCk7Ci0JaWYoY3N0ciA9PSBOVUxMKSB7 Ci0JCUpDTF9UaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSW50ZXJuYWxFcnJvciIs ICJHZXRTdHJpbmdVVEZDaGFycygpIGZhaWxlZC4iKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQot CXJldHVybiBjc3RyOworSk5JRVhQT1JUIGNvbnN0IGNoYXIgKkpOSUNBTEwKK0pDTF9qc3Ry aW5nX3RvX2NzdHJpbmcgKEpOSUVudiAqIGVudiwganN0cmluZyBzKQoreworICBjb25zdCBj aGFyICpjc3RyOworICBpZiAocyA9PSBOVUxMKQorICAgIHsKKyAgICAgIEpDTF9UaHJvd0V4 Y2VwdGlvbiAoZW52LCAiamF2YS9sYW5nL051bGxQb2ludGVyRXhjZXB0aW9uIiwKKwkJCSAg Ik51bGwgc3RyaW5nIik7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgIGNzdHIgPSAo Y29uc3QgY2hhciAqKSAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsIHMsIE5VTEwp OworICBpZiAoY3N0ciA9PSBOVUxMKQorICAgIHsKKyAgICAgIEpDTF9UaHJvd0V4Y2VwdGlv biAoZW52LCAiamF2YS9sYW5nL0ludGVybmFsRXJyb3IiLAorCQkJICAiR2V0U3RyaW5nVVRG Q2hhcnMoKSBmYWlsZWQuIik7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgIHJldHVy biBjc3RyOwogfQogCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEpDTF9mcmVlX2NzdHJpbmco Sk5JRW52ICogZW52LCBqc3RyaW5nIHMsIGNvbnN0IGNoYXIgKiBjc3RyKSB7Ci0JKCplbnYp LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMoZW52LCBzLCBjc3RyKTsKK0pOSUVYUE9SVCB2b2lk IEpOSUNBTEwKK0pDTF9mcmVlX2NzdHJpbmcgKEpOSUVudiAqIGVudiwganN0cmluZyBzLCBj b25zdCBjaGFyICpjc3RyKQoreworICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAo ZW52LCBzLCBjc3RyKTsKIH0KIAotSk5JRVhQT1JUIGppbnQgSk5JQ0FMTCBKQ0xfTW9uaXRv ckVudGVyKEpOSUVudiAqIGVudiwgam9iamVjdCBvKSB7Ci0JamludCByZXR2YWwgPSAoKmVu diktPk1vbml0b3JFbnRlcihlbnYsbyk7Ci0JaWYocmV0dmFsICE9IDApIHsKLQkJSkNMX1Ro cm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbnRlcm5hbEVycm9yIiwgIk1vbml0b3JF bnRlcigpIGZhaWxlZC4iKTsKLQl9Ci0JcmV0dXJuIHJldHZhbDsKK0pOSUVYUE9SVCBqaW50 IEpOSUNBTEwKK0pDTF9Nb25pdG9yRW50ZXIgKEpOSUVudiAqIGVudiwgam9iamVjdCBvKQor eworICBqaW50IHJldHZhbCA9ICgqZW52KS0+TW9uaXRvckVudGVyIChlbnYsIG8pOworICBp ZiAocmV0dmFsICE9IDApCisgICAgeworICAgICAgSkNMX1Rocm93RXhjZXB0aW9uIChlbnYs ICJqYXZhL2xhbmcvSW50ZXJuYWxFcnJvciIsCisJCQkgICJNb25pdG9yRW50ZXIoKSBmYWls ZWQuIik7CisgICAgfQorICByZXR1cm4gcmV0dmFsOwogfQogCi1KTklFWFBPUlQgamludCBK TklDQUxMIEpDTF9Nb25pdG9yRXhpdChKTklFbnYgKiBlbnYsIGpvYmplY3QgbykgewotCWpp bnQgcmV0dmFsID0gKCplbnYpLT5Nb25pdG9yRXhpdChlbnYsbyk7Ci0JaWYocmV0dmFsICE9 IDApIHsKLQkJSkNMX1Rocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbnRlcm5hbEVy cm9yIiwgIk1vbml0b3JFeGl0KCkgZmFpbGVkLiIpOwotCX0KLQlyZXR1cm4gcmV0dmFsOwor Sk5JRVhQT1JUIGppbnQgSk5JQ0FMTAorSkNMX01vbml0b3JFeGl0IChKTklFbnYgKiBlbnYs IGpvYmplY3QgbykKK3sKKyAgamludCByZXR2YWwgPSAoKmVudiktPk1vbml0b3JFeGl0IChl bnYsIG8pOworICBpZiAocmV0dmFsICE9IDApCisgICAgeworICAgICAgSkNMX1Rocm93RXhj ZXB0aW9uIChlbnYsICJqYXZhL2xhbmcvSW50ZXJuYWxFcnJvciIsCisJCQkgICJNb25pdG9y RXhpdCgpIGZhaWxlZC4iKTsKKyAgICB9CisgIHJldHVybiByZXR2YWw7CiB9CiAKLUpOSUVY UE9SVCBqY2xhc3MgSk5JQ0FMTCBKQ0xfRmluZENsYXNzKEpOSUVudiAqIGVudiwgY2hhciAq IGNsYXNzTmFtZSkgewotCWpjbGFzcyByZXR2YWwgPSAoKmVudiktPkZpbmRDbGFzcyhlbnYs Y2xhc3NOYW1lKTsKLQlpZihyZXR2YWwgPT0gTlVMTCkgewotCQlKQ0xfVGhyb3dFeGNlcHRp b24oZW52LCAiamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24iLCBjbGFzc05hbWUp OwotCX0KLQlyZXR1cm4gcmV0dmFsOworSk5JRVhQT1JUIGpjbGFzcyBKTklDQUxMCitKQ0xf RmluZENsYXNzIChKTklFbnYgKiBlbnYsIGNoYXIgKmNsYXNzTmFtZSkKK3sKKyAgamNsYXNz IHJldHZhbCA9ICgqZW52KS0+RmluZENsYXNzIChlbnYsIGNsYXNzTmFtZSk7CisgIGlmIChy ZXR2YWwgPT0gTlVMTCkKKyAgICB7CisgICAgICBKQ0xfVGhyb3dFeGNlcHRpb24gKGVudiwg ImphdmEvbGFuZy9DbGFzc05vdEZvdW5kRXhjZXB0aW9uIiwgY2xhc3NOYW1lKTsKKyAgICB9 CisgIHJldHVybiByZXR2YWw7CiB9CkluZGV4OiBuYXRpdmUvam5pL2NsYXNzcGF0aC9qY2wu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9jbGFzc3BhdGgvY2xhc3NwYXRo L25hdGl2ZS9qbmkvY2xhc3NwYXRoL2pjbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYK ZGlmZiAtSSouY2xhc3MgLXUgLXIxLjYgamNsLmgKLS0tIG5hdGl2ZS9qbmkvY2xhc3NwYXRo L2pjbC5oCTI5IE1hciAyMDA0IDA3OjA3OjI2IC0wMDAwCTEuNgorKysgbmF0aXZlL2puaS9j bGFzc3BhdGgvamNsLmgJMjEgSnVuIDIwMDQgMTg6NTg6MzEgLTAwMDAKQEAgLTQyLDE1ICs0 MiwxOCBAQAogI2luY2x1ZGUgPGpuaS5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgogCi1KTklF WFBPUlQgamNsYXNzIEpOSUNBTEwgSkNMX0ZpbmRDbGFzcyhKTklFbnYgKiBlbnYsIGNoYXIg KiBjbGFzc05hbWUpOwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKQ0xfVGhyb3dFeGNlcHRp b24oSk5JRW52ICogZW52LCBjaGFyICogY2xhc3NOYW1lLCBjaGFyICogZXJyTXNnKTsKLUpO SUVYUE9SVCB2b2lkICogSk5JQ0FMTCBKQ0xfbWFsbG9jKEpOSUVudiAqZW52LCBzaXplX3Qg c2l6ZSk7Ci1KTklFWFBPUlQgdm9pZCAqIEpOSUNBTEwgSkNMX3JlYWxsb2MoSk5JRW52ICpl bnYsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBK Q0xfZnJlZShKTklFbnYgKmVudiwgdm9pZCAqIHApOwotSk5JRVhQT1JUIGNvbnN0IGNoYXIg KiBKTklDQUxMIEpDTF9qc3RyaW5nX3RvX2NzdHJpbmcoSk5JRW52ICplbnYsIGpzdHJpbmcg cyk7Ci1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEpDTF9mcmVlX2NzdHJpbmcoSk5JRW52ICpl bnYsIGpzdHJpbmcgcywgY29uc3QgY2hhciAqIGNzdHIpOwotSk5JRVhQT1JUIGppbnQgSk5J Q0FMTCBKQ0xfTW9uaXRvckVudGVyKEpOSUVudiAqZW52LCBqb2JqZWN0IG8pOwotSk5JRVhQ T1JUIGppbnQgSk5JQ0FMTCBKQ0xfTW9uaXRvckV4aXQoSk5JRW52ICplbnYsIGpvYmplY3Qg byk7CitKTklFWFBPUlQgamNsYXNzIEpOSUNBTEwgSkNMX0ZpbmRDbGFzcyAoSk5JRW52ICog ZW52LCBjaGFyICpjbGFzc05hbWUpOworSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKQ0xfVGhy b3dFeGNlcHRpb24gKEpOSUVudiAqIGVudiwgY2hhciAqY2xhc3NOYW1lLAorCQkJCQkgICBj aGFyICplcnJNc2cpOworSk5JRVhQT1JUIHZvaWQgKkpOSUNBTEwgSkNMX21hbGxvYyAoSk5J RW52ICogZW52LCBzaXplX3Qgc2l6ZSk7CitKTklFWFBPUlQgdm9pZCAqSk5JQ0FMTCBKQ0xf cmVhbGxvYyAoSk5JRW52ICogZW52LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKK0pOSUVY UE9SVCB2b2lkIEpOSUNBTEwgSkNMX2ZyZWUgKEpOSUVudiAqIGVudiwgdm9pZCAqcCk7CitK TklFWFBPUlQgY29uc3QgY2hhciAqSk5JQ0FMTCBKQ0xfanN0cmluZ190b19jc3RyaW5nIChK TklFbnYgKiBlbnYsCisJCQkJCQkgICAgICBqc3RyaW5nIHMpOworSk5JRVhQT1JUIHZvaWQg Sk5JQ0FMTCBKQ0xfZnJlZV9jc3RyaW5nIChKTklFbnYgKiBlbnYsIGpzdHJpbmcgcywKKwkJ CQkJIGNvbnN0IGNoYXIgKmNzdHIpOworSk5JRVhQT1JUIGppbnQgSk5JQ0FMTCBKQ0xfTW9u aXRvckVudGVyIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgbyk7CitKTklFWFBPUlQgamludCBK TklDQUxMIEpDTF9Nb25pdG9yRXhpdCAoSk5JRW52ICogZW52LCBqb2JqZWN0IG8pOwogCiAj ZGVmaW5lIEpDTF9SRVRIUk9XX0VYQ0VQVElPTihlbnYpIGlmKCgqKGVudikpLT5FeGNlcHRp b25PY2N1cnJlZCgoZW52KSkgIT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAKSW5kZXg6IG5hdGl2 ZS9qbmkvY2xhc3NwYXRoL2puaWxpbmsuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz cm9vdC9jbGFzc3BhdGgvY2xhc3NwYXRoL25hdGl2ZS9qbmkvY2xhc3NwYXRoL2puaWxpbmsu Yyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLUkqLmNsYXNzIC11IC1yMS41IGpu aWxpbmsuYwotLS0gbmF0aXZlL2puaS9jbGFzc3BhdGgvam5pbGluay5jCTI5IE1hciAyMDA0 IDA3OjA3OjI2IC0wMDAwCTEuNQorKysgbmF0aXZlL2puaS9jbGFzc3BhdGgvam5pbGluay5j CTIxIEp1biAyMDA0IDE4OjU4OjMxIC0wMDAwCkBAIC00NSw2MCArNDUsNjYgQEAKICNkZWZp bmUgR0VUQ0xBU1MoYykgKihqY2xhc3MqKShjKQogCiBKTklFWFBPUlQgamNsYXNzIEpOSUNB TEwKLUxJTktfUmVsaW5rQ2xhc3MgICAgIChKTklFbnYgKiBlbnYsIGxpbmtlZENsYXNzICog YywgY2hhciAqIG5hbWUpIHsKLQlqY2xhc3MgZm91bmQ7Ci0JTElOS19VbmxpbmtDbGFzcyhl bnYsKmMpOwotCi0JZm91bmQgPSAoKmVudiktPkZpbmRDbGFzcyhlbnYsbmFtZSk7Ci0JaWYo Zm91bmQgPT0gTlVMTCkKLQkJcmV0dXJuIE5VTEw7Ci0KLQkqYyA9IEpDTF9tYWxsb2MoZW52 LHNpemVvZihqY2xhc3MpKTsKLQlpZigqYyA9PSBOVUxMKQotCQlyZXR1cm4gTlVMTDsKK0xJ TktfUmVsaW5rQ2xhc3MgKEpOSUVudiAqIGVudiwgbGlua2VkQ2xhc3MgKiBjLCBjaGFyICpu YW1lKQoreworICBqY2xhc3MgZm91bmQ7CisgIExJTktfVW5saW5rQ2xhc3MgKGVudiwgKmMp OworCisgIGZvdW5kID0gKCplbnYpLT5GaW5kQ2xhc3MgKGVudiwgbmFtZSk7CisgIGlmIChm b3VuZCA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOworCisgICpjID0gSkNMX21hbGxvYyAo ZW52LCBzaXplb2YgKGpjbGFzcykpOworICBpZiAoKmMgPT0gTlVMTCkKKyAgICByZXR1cm4g TlVMTDsKIAotCUdFVENMQVNTKCpjKSA9ICgqZW52KS0+TmV3R2xvYmFsUmVmKGVudixmb3Vu ZCk7Ci0JcmV0dXJuIEdFVENMQVNTKCpjKTsKKyAgR0VUQ0xBU1MgKCpjKSA9ICgqZW52KS0+ TmV3R2xvYmFsUmVmIChlbnYsIGZvdW5kKTsKKyAgcmV0dXJuIEdFVENMQVNTICgqYyk7CiB9 CiAKIEpOSUVYUE9SVCBqY2xhc3MgSk5JQ0FMTAotTElOS19SZWxpbmtLbm93bkNsYXNzKEpO SUVudiAqIGVudiwgbGlua2VkQ2xhc3MgKiBjLCBqY2xhc3MgbmV3Q2xhc3MpIHsKLQlMSU5L X1VubGlua0NsYXNzKGVudiwqYyk7CitMSU5LX1JlbGlua0tub3duQ2xhc3MgKEpOSUVudiAq IGVudiwgbGlua2VkQ2xhc3MgKiBjLCBqY2xhc3MgbmV3Q2xhc3MpCit7CisgIExJTktfVW5s aW5rQ2xhc3MgKGVudiwgKmMpOworCisgICpjID0gSkNMX21hbGxvYyAoZW52LCBzaXplb2Yg KGpjbGFzcykpOworICBpZiAoKmMgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKIAotCSpj ID0gSkNMX21hbGxvYyhlbnYsc2l6ZW9mKGpjbGFzcykpOwotCWlmKCpjID09IE5VTEwpCi0J CXJldHVybiBOVUxMOwotCi0JR0VUQ0xBU1MoKmMpID0gKCplbnYpLT5OZXdHbG9iYWxSZWYo ZW52LG5ld0NsYXNzKTsKLQlyZXR1cm4gbmV3Q2xhc3M7CisgIEdFVENMQVNTICgqYykgPSAo KmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBuZXdDbGFzcyk7CisgIHJldHVybiBuZXdDbGFz czsKIH0KIAogSk5JRVhQT1JUIGptZXRob2RJRCBKTklDQUxMCi1MSU5LX1JlbGlua01ldGhv ZCAgICAgIChKTklFbnYgKiBlbnYsIGptZXRob2RJRCAqIG0sIGxpbmtlZENsYXNzIGMsCi0g ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICogbmFtZSwgY2hhciAqIHNpZykgewotCSpt ID0gKCplbnYpLT5HZXRNZXRob2RJRChlbnYsR0VUQ0xBU1MoYyksbmFtZSxzaWcpOwotCXJl dHVybiAqbTsKK0xJTktfUmVsaW5rTWV0aG9kIChKTklFbnYgKiBlbnYsIGptZXRob2RJRCAq IG0sIGxpbmtlZENsYXNzIGMsCisJCSAgIGNoYXIgKm5hbWUsIGNoYXIgKnNpZykKK3sKKyAg Km0gPSAoKmVudiktPkdldE1ldGhvZElEIChlbnYsIEdFVENMQVNTIChjKSwgbmFtZSwgc2ln KTsKKyAgcmV0dXJuICptOwogfQogCiBKTklFWFBPUlQgam1ldGhvZElEIEpOSUNBTEwKLUxJ TktfUmVsaW5rU3RhdGljTWV0aG9kKEpOSUVudiAqIGVudiwgam1ldGhvZElEICogbSwgbGlu a2VkQ2xhc3MgYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiBuYW1lLCBjaGFy ICogc2lnKSB7Ci0JKm0gPSAoKmVudiktPkdldFN0YXRpY01ldGhvZElEKGVudixHRVRDTEFT UyhjKSxuYW1lLHNpZyk7Ci0JcmV0dXJuICptOworTElOS19SZWxpbmtTdGF0aWNNZXRob2Qg KEpOSUVudiAqIGVudiwgam1ldGhvZElEICogbSwgbGlua2VkQ2xhc3MgYywKKwkJCSBjaGFy ICpuYW1lLCBjaGFyICpzaWcpCit7CisgICptID0gKCplbnYpLT5HZXRTdGF0aWNNZXRob2RJ RCAoZW52LCBHRVRDTEFTUyAoYyksIG5hbWUsIHNpZyk7CisgIHJldHVybiAqbTsKIH0KIAog Sk5JRVhQT1JUIGpmaWVsZElEIEpOSUNBTEwKLUxJTktfUmVsaW5rRmllbGQgICAgICAgKEpO SUVudiAqIGVudiwgamZpZWxkSUQgKiBmLCBsaW5rZWRDbGFzcyBjLAotICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAqIG5hbWUsIGNoYXIgKiBzaWcpIHsKLQkqZiA9ICgqZW52KS0+ R2V0RmllbGRJRChlbnYsR0VUQ0xBU1MoYyksbmFtZSxzaWcpOwotCXJldHVybiAqZjsKK0xJ TktfUmVsaW5rRmllbGQgKEpOSUVudiAqIGVudiwgamZpZWxkSUQgKiBmLCBsaW5rZWRDbGFz cyBjLAorCQkgIGNoYXIgKm5hbWUsIGNoYXIgKnNpZykKK3sKKyAgKmYgPSAoKmVudiktPkdl dEZpZWxkSUQgKGVudiwgR0VUQ0xBU1MgKGMpLCBuYW1lLCBzaWcpOworICByZXR1cm4gKmY7 CiB9CiAKIEpOSUVYUE9SVCBqZmllbGRJRCBKTklDQUxMCiBMSU5LX1JlbGlua1N0YXRpY0Zp ZWxkIChKTklFbnYgKiBlbnYsIGpmaWVsZElEICogZiwgbGlua2VkQ2xhc3MgYywKLSAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXIgKiBuYW1lLCBjaGFyICogc2lnKSB7Ci0JKmYgPSAo KmVudiktPkdldFN0YXRpY0ZpZWxkSUQoZW52LEdFVENMQVNTKGMpLG5hbWUsc2lnKTsKLQly ZXR1cm4gKmY7CisJCQljaGFyICpuYW1lLCBjaGFyICpzaWcpCit7CisgICpmID0gKCplbnYp LT5HZXRTdGF0aWNGaWVsZElEIChlbnYsIEdFVENMQVNTIChjKSwgbmFtZSwgc2lnKTsKKyAg cmV0dXJuICpmOwogfQogCiAKQEAgLTEwNiwxMiArMTEyLDE0IEBACiBkZXN0cm95cyBhbnkg b2JqZWN0IHJlZmVyZW5jZXMKICAqIHRoZSBsaW5rZXIgbWlnaHQgaGF2ZSBrZXB0IGFyb3Vu ZC4KICAqLwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBMSU5LX1VubGlua0NsYXNzICAgICAg IChKTklFbnYgKiBlbnYsIGxpbmtlZENsYXNzICogYykgewotCWlmKCpjICE9IE5VTEwpIHsK LQkJaWYoR0VUQ0xBU1MoKmMpICE9IE5VTEwpCi0JCQkoKmVudiktPkRlbGV0ZUdsb2JhbFJl ZihlbnYsR0VUQ0xBU1MoKmMpKTsKLQkJSkNMX2ZyZWUoZW52LCpjKTsKLQkJKmMgPSBOVUxM OwotCX0KK0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwKK0xJTktfVW5saW5rQ2xhc3MgKEpOSUVu diAqIGVudiwgbGlua2VkQ2xhc3MgKiBjKQoreworICBpZiAoKmMgIT0gTlVMTCkKKyAgICB7 CisgICAgICBpZiAoR0VUQ0xBU1MgKCpjKSAhPSBOVUxMKQorCSgqZW52KS0+RGVsZXRlR2xv YmFsUmVmIChlbnYsIEdFVENMQVNTICgqYykpOworICAgICAgSkNMX2ZyZWUgKGVudiwgKmMp OworICAgICAgKmMgPSBOVUxMOworICAgIH0KIH0KLQpJbmRleDogbmF0aXZlL2puaS9jbGFz c3BhdGgvam5pbGluay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2NsYXNz cGF0aC9jbGFzc3BhdGgvbmF0aXZlL2puaS9jbGFzc3BhdGgvam5pbGluay5oLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjQKZGlmZiAtSSouY2xhc3MgLXUgLXIxLjQgam5pbGluay5oCi0t LSBuYXRpdmUvam5pL2NsYXNzcGF0aC9qbmlsaW5rLmgJMjkgTWFyIDIwMDQgMDc6MDc6MjYg LTAwMDAJMS40CisrKyBuYXRpdmUvam5pL2NsYXNzcGF0aC9qbmlsaW5rLmgJMjEgSnVuIDIw MDQgMTg6NTg6MzEgLTAwMDAKQEAgLTQxLDcgKzQxLDcgQEAKIAogI2luY2x1ZGUgPGpuaS5o PgogCi10eXBlZGVmIHZvaWQqIGxpbmtlZENsYXNzOwordHlwZWRlZiB2b2lkICpsaW5rZWRD bGFzczsKIAogI2RlZmluZSBMSU5LX0xpbmtDbGFzcyhlbnYsYyxuYW1lKSAgICAgICAgICAg ICAgKChjKT09TlVMTCA/IExJTktfUmVhbGx5TGlua0NsYXNzKChlbnYpLCYoYyksKG5hbWUp KSA6IChjKSkKICNkZWZpbmUgTElOS19MaW5rS25vd25DbGFzcyhlbnYsYyxuZXdDbGFzcykg ICAgICgoYyk9PU5VTEwgPyBMSU5LX1JlYWxseUxpbmtLbm93bkNsYXNzKChlbnYpLCYoYyks KG5ld0NsYXNzKSkgOiAoYykpCkBAIC01MywzNCArNTMsMzAgQEAKICNkZWZpbmUgTElOS19M aW5rQ29uc3RydWN0b3IoZW52LG0sYyxzaWcpICAgICAgICgobSk9PU5VTEwgPyBMSU5LX1Jl bGlua01ldGhvZCgoZW52KSwmKG0pLChjKSwiPGluaXQ+Iiwoc2lnKSkgOiAobSkpCiAKIEpO SUVYUE9SVCBqY2xhc3MgSk5JQ0FMTAotTElOS19SZWFsbHlMaW5rQ2xhc3MgICAgIChKTklF bnYgKiBlbnYsIGxpbmtlZENsYXNzICogYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciAqIG5hbWUpOworTElOS19SZWFsbHlMaW5rQ2xhc3MgKEpOSUVudiAqIGVudiwgbGlu a2VkQ2xhc3MgKiBjLCBjaGFyICpuYW1lKTsKIEpOSUVYUE9SVCBqY2xhc3MgSk5JQ0FMTAot TElOS19SZWFsbHlMaW5rS25vd25DbGFzcyhKTklFbnYgKiBlbnYsIGxpbmtlZENsYXNzICog YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgamNsYXNzIG5ld0NsYXNzKTsKK0xJTktf UmVhbGx5TGlua0tub3duQ2xhc3MgKEpOSUVudiAqIGVudiwgbGlua2VkQ2xhc3MgKiBjLCBq Y2xhc3MgbmV3Q2xhc3MpOwogSk5JRVhQT1JUIGpjbGFzcyBKTklDQUxMCi1MSU5LX1JlbGlu a0NsYXNzICAgICAgIChKTklFbnYgKiBlbnYsIGxpbmtlZENsYXNzICogYywKLSAgICAgICAg ICAgICAgICAgICAgICAgIGNoYXIgKiBuYW1lKTsKK0xJTktfUmVsaW5rQ2xhc3MgKEpOSUVu diAqIGVudiwgbGlua2VkQ2xhc3MgKiBjLCBjaGFyICpuYW1lKTsKIEpOSUVYUE9SVCBqY2xh c3MgSk5JQ0FMTAotTElOS19SZWxpbmtLbm93bkNsYXNzICAoSk5JRW52ICogZW52LCBsaW5r ZWRDbGFzcyAqIGMsCi0gICAgICAgICAgICAgICAgICAgICAgICBqY2xhc3MgbmV3Q2xhc3Mp OworTElOS19SZWxpbmtLbm93bkNsYXNzIChKTklFbnYgKiBlbnYsIGxpbmtlZENsYXNzICog YywgamNsYXNzIG5ld0NsYXNzKTsKIEpOSUVYUE9SVCBqbWV0aG9kSUQgSk5JQ0FMTAotTElO S19SZWxpbmtNZXRob2QgICAgICAoSk5JRW52ICogZW52LCBqbWV0aG9kSUQgKiBtLCBsaW5r ZWRDbGFzcyBjLAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqIG5hbWUsIGNoYXIg KiBzaWcpOworTElOS19SZWxpbmtNZXRob2QgKEpOSUVudiAqIGVudiwgam1ldGhvZElEICog bSwgbGlua2VkQ2xhc3MgYywKKwkJICAgY2hhciAqbmFtZSwgY2hhciAqc2lnKTsKIEpOSUVY UE9SVCBqbWV0aG9kSUQgSk5JQ0FMTAotTElOS19SZWxpbmtTdGF0aWNNZXRob2QoSk5JRW52 ICogZW52LCBqbWV0aG9kSUQgKiBtLCBsaW5rZWRDbGFzcyBjLAotICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqIG5hbWUsIGNoYXIgKiBzaWcpOworTElOS19SZWxpbmtTdGF0aWNN ZXRob2QgKEpOSUVudiAqIGVudiwgam1ldGhvZElEICogbSwgbGlua2VkQ2xhc3MgYywKKwkJ CSBjaGFyICpuYW1lLCBjaGFyICpzaWcpOwogSk5JRVhQT1JUIGpmaWVsZElEIEpOSUNBTEwK LUxJTktfUmVsaW5rRmllbGQgICAgICAgKEpOSUVudiAqIGVudiwgamZpZWxkSUQgKiBmLCBs aW5rZWRDbGFzcyBjLAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqIG5hbWUsIGNo YXIgKiBzaWcpOworTElOS19SZWxpbmtGaWVsZCAoSk5JRW52ICogZW52LCBqZmllbGRJRCAq IGYsIGxpbmtlZENsYXNzIGMsCisJCSAgY2hhciAqbmFtZSwgY2hhciAqc2lnKTsKIEpOSUVY UE9SVCBqZmllbGRJRCBKTklDQUxMCiBMSU5LX1JlbGlua1N0YXRpY0ZpZWxkIChKTklFbnYg KiBlbnYsIGpmaWVsZElEICogZiwgbGlua2VkQ2xhc3MgYywKLSAgICAgICAgICAgICAgICAg ICAgICAgIGNoYXIgKiBuYW1lLCBjaGFyICogc2lnKTsKKwkJCWNoYXIgKm5hbWUsIGNoYXIg KnNpZyk7CiAKIC8qIFRoZXNlIGFyZSBmb3Igd2hlbiB0aGUgY2xhc3MgcmVmZXJlbmNpbmcg dGhlIHN5bWJvbHMgaXMgdW5sb2FkZWQ7IGl0CiBkZXN0cm95cyBhbnkgb2JqZWN0IHJlZmVy ZW5jZXMKICAqIHRoZSBsaW5rZXIgbWlnaHQgaGF2ZSBrZXB0IGFyb3VuZC4KICAqLwotSk5J RVhQT1JUIHZvaWQgSk5JQ0FMTCBMSU5LX1VubGlua0NsYXNzICAgICAgIChKTklFbnYgKiBl bnYsIGxpbmtlZENsYXNzICogYyk7CitKTklFWFBPUlQgdm9pZCBKTklDQUxMIExJTktfVW5s aW5rQ2xhc3MgKEpOSUVudiAqIGVudiwgbGlua2VkQ2xhc3MgKiBjKTsKIAogI2VuZGlmCklu ZGV4OiBuYXRpdmUvam5pL2NsYXNzcGF0aC9uYXRpdmVfc3RhdGUuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3Zzcm9vdC9jbGFzc3BhdGgvY2xhc3NwYXRoL25hdGl2ZS9qbmkvY2xh c3NwYXRoL25hdGl2ZV9zdGF0ZS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAt SSouY2xhc3MgLXUgLXIxLjcgbmF0aXZlX3N0YXRlLmMKLS0tIG5hdGl2ZS9qbmkvY2xhc3Nw YXRoL25hdGl2ZV9zdGF0ZS5jCTI5IE1hciAyMDA0IDA3OjA3OjI2IC0wMDAwCTEuNworKysg bmF0aXZlL2puaS9jbGFzc3BhdGgvbmF0aXZlX3N0YXRlLmMJMjEgSnVuIDIwMDQgMTg6NTg6 MzEgLTAwMDAKQEAgLTQyLDcgKzQyLDcgQEAKICNkZWZpbmUgREVGQVVMVF9UQUJMRV9TSVpF IDk3CiAKIHN0cnVjdCBzdGF0ZV90YWJsZSAqCi1pbml0X3N0YXRlX3RhYmxlX3dpdGhfc2l6 ZSAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamludCBzaXplKQoraW5pdF9zdGF0ZV90 YWJsZV93aXRoX3NpemUgKEpOSUVudiAqIGVudiwgamNsYXNzIGNsYXp6LCBqaW50IHNpemUp CiB7CiAgIHN0cnVjdCBzdGF0ZV90YWJsZSAqdGFibGU7CiAgIGpmaWVsZElEIGhhc2g7CkBA IC02MSwxMyArNjEsMTMgQEAKICAgdGFibGUtPmhlYWQgPSAoc3RydWN0IHN0YXRlX25vZGUg KiopIGNhbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhdGVfbm9kZSAqKSwKIAkJCQkJICAgICAg IHRhYmxlLT5zaXplKTsKICAgdGFibGUtPmhhc2ggPSBoYXNoOwotICB0YWJsZS0+Y2xhenog PSBjbGF6el9nOyAKKyAgdGFibGUtPmNsYXp6ID0gY2xhenpfZzsKIAogICByZXR1cm4gdGFi bGU7CiB9CiAKIHN0cnVjdCBzdGF0ZV90YWJsZSAqCi1pbml0X3N0YXRlX3RhYmxlIChKTklF bnYgKmVudiwgamNsYXNzIGNsYXp6KQoraW5pdF9zdGF0ZV90YWJsZSAoSk5JRW52ICogZW52 LCBqY2xhc3MgY2xhenopCiB7CiAgIHJldHVybiBpbml0X3N0YXRlX3RhYmxlX3dpdGhfc2l6 ZSAoZW52LCBjbGF6eiwgREVGQVVMVF9UQUJMRV9TSVpFKTsKIH0KQEAgLTk3LDcgKzk3LDcg QEAKIAogICByZXR1cm4gTlVMTDsKIH0KLQkgICAgCisKIHN0YXRpYyB2b2lkICoKIGdldF9u b2RlIChzdHJ1Y3Qgc3RhdGVfbm9kZSAqKmhlYWQsIGppbnQgb2JqX2lkKQogewpAQCAtMTE5 LDcgKzExOSw3IEBACiAJICAvKiBSZXR1cm4gdGhlIG1hdGNoLiAgKi8KIAkgIHJldHVybiBu b2RlLT5jX3N0YXRlOwogCX0KLSAgCisKICAgICAgIGJhY2tfcHRyID0gbm9kZTsKICAgICAg IG5vZGUgPSBub2RlLT5uZXh0OwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQAogICByZXR1 cm4gTlVMTDsKIH0KIAotc3RhdGljIHZvaWQgCitzdGF0aWMgdm9pZAogYWRkX25vZGUgKHN0 cnVjdCBzdGF0ZV9ub2RlICoqaGVhZCwgamludCBvYmpfaWQsIHZvaWQgKnN0YXRlKQogewog ICBzdHJ1Y3Qgc3RhdGVfbm9kZSAqbm9kZSA9ICpoZWFkOwpAQCAtMTM3LDcgKzEzNyw3IEBA CiAKICAgaWYgKG5vZGUgIT0gTlVMTCkKICAgICB7Ci0gICAgICB3aGlsZSAobm9kZS0+bmV4 dCAhPSBOVUxMICYmIG9ial9pZCAhPSBub2RlLT5rZXkpIAorICAgICAgd2hpbGUgKG5vZGUt Pm5leHQgIT0gTlVMTCAmJiBvYmpfaWQgIT0gbm9kZS0+a2V5KQogCXsKIAkgIGJhY2tfcHRy ID0gbm9kZTsKIAkgIG5vZGUgPSBub2RlLT5uZXh0OwpAQCAtMTY0LDEyICsxNjQsMTIgQEAK ICAgKmhlYWQgPSBuZXdfbm9kZTsKIH0KIAotdm9pZCAKLXNldF9zdGF0ZV9vaWQgKEpOSUVu diAqZW52LCBqb2JqZWN0IGxvY2ssIHN0cnVjdCBzdGF0ZV90YWJsZSAqdGFibGUsIAordm9p ZAorc2V0X3N0YXRlX29pZCAoSk5JRW52ICogZW52LCBqb2JqZWN0IGxvY2ssIHN0cnVjdCBz dGF0ZV90YWJsZSAqdGFibGUsCiAJICAgICAgIGppbnQgb2JqX2lkLCB2b2lkICpzdGF0ZSkK IHsKICAgamludCBoYXNoOwotICAKKwogICBoYXNoID0gb2JqX2lkICUgdGFibGUtPnNpemU7 CiAKICAgKCplbnYpLT5Nb25pdG9yRW50ZXIgKGVudiwgbG9jayk7CkBAIC0xNzgsMTIgKzE3 OCwxMiBAQAogfQogCiB2b2lkICoKLWdldF9zdGF0ZV9vaWQgKEpOSUVudiAqZW52LCBqb2Jq ZWN0IGxvY2ssIHN0cnVjdCBzdGF0ZV90YWJsZSAqdGFibGUsCitnZXRfc3RhdGVfb2lkIChK TklFbnYgKiBlbnYsIGpvYmplY3QgbG9jaywgc3RydWN0IHN0YXRlX3RhYmxlICp0YWJsZSwK IAkgICAgICAgamludCBvYmpfaWQpCiB7CiAgIGppbnQgaGFzaDsKICAgdm9pZCAqcmV0dXJu X3ZhbHVlOwotICAKKwogICBoYXNoID0gb2JqX2lkICUgdGFibGUtPnNpemU7CiAKICAgKCpl bnYpLT5Nb25pdG9yRW50ZXIgKGVudiwgbG9jayk7CkBAIC0xOTQsMTIgKzE5NCwxMiBAQAog fQogCiB2b2lkICoKLXJlbW92ZV9zdGF0ZV9vaWQgKEpOSUVudiAqZW52LCBqb2JqZWN0IGxv Y2ssIHN0cnVjdCBzdGF0ZV90YWJsZSAqdGFibGUsCityZW1vdmVfc3RhdGVfb2lkIChKTklF bnYgKiBlbnYsIGpvYmplY3QgbG9jaywgc3RydWN0IHN0YXRlX3RhYmxlICp0YWJsZSwKIAkJ ICBqaW50IG9ial9pZCkKIHsKICAgamludCBoYXNoOwogICB2b2lkICpyZXR1cm5fdmFsdWU7 Ci0gIAorCiAgIGhhc2ggPSBvYmpfaWQgJSB0YWJsZS0+c2l6ZTsKIAogICAoKmVudiktPk1v bml0b3JFbnRlciAoZW52LCBsb2NrKTsKQEAgLTIxMCw3ICsyMTAsNyBAQAogfQogCiBpbnQK LXNldF9zdGF0ZSAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBzdHJ1Y3Qgc3RhdGVfdGFi bGUgKnRhYmxlLCB2b2lkICpzdGF0ZSkKK3NldF9zdGF0ZSAoSk5JRW52ICogZW52LCBqb2Jq ZWN0IG9iaiwgc3RydWN0IHN0YXRlX3RhYmxlICp0YWJsZSwgdm9pZCAqc3RhdGUpCiB7CiAg IGppbnQgb2JqX2lkOwogICBvYmpfaWQgPSAoKmVudiktPkdldEludEZpZWxkIChlbnYsIG9i aiwgdGFibGUtPmhhc2gpOwpAQCAtMjIzLDcgKzIyMyw3IEBACiB9CiAKIHZvaWQgKgotZ2V0 X3N0YXRlIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIHN0cnVjdCBzdGF0ZV90YWJsZSAq dGFibGUpCitnZXRfc3RhdGUgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmosIHN0cnVjdCBz dGF0ZV90YWJsZSAqdGFibGUpCiB7CiAgIGppbnQgb2JqX2lkOwogICBvYmpfaWQgPSAoKmVu diktPkdldEludEZpZWxkIChlbnYsIG9iaiwgdGFibGUtPmhhc2gpOwpAQCAtMjM1LDcgKzIz NSw3IEBACiB9CiAKIHZvaWQgKgotcmVtb3ZlX3N0YXRlX3Nsb3QgKEpOSUVudiAqZW52LCBq b2JqZWN0IG9iaiwgc3RydWN0IHN0YXRlX3RhYmxlICp0YWJsZSkKK3JlbW92ZV9zdGF0ZV9z bG90IChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqLCBzdHJ1Y3Qgc3RhdGVfdGFibGUgKnRh YmxlKQogewogICBqaW50IG9ial9pZDsKICAgb2JqX2lkID0gKCplbnYpLT5HZXRJbnRGaWVs ZCAoZW52LCBvYmosIHRhYmxlLT5oYXNoKTsKSW5kZXg6IG5hdGl2ZS9qbmkvY2xhc3NwYXRo L25hdGl2ZV9zdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2NsYXNz cGF0aC9jbGFzc3BhdGgvbmF0aXZlL2puaS9jbGFzc3BhdGgvbmF0aXZlX3N0YXRlLmgsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1JKi5jbGFzcyAtdSAtcjEuNCBuYXRpdmVf c3RhdGUuaAotLS0gbmF0aXZlL2puaS9jbGFzc3BhdGgvbmF0aXZlX3N0YXRlLmgJMjkgTWFy IDIwMDQgMDc6MDc6MjYgLTAwMDAJMS40CisrKyBuYXRpdmUvam5pL2NsYXNzcGF0aC9uYXRp dmVfc3RhdGUuaAkyMSBKdW4gMjAwNCAxODo1ODozMSAtMDAwMApAQCAtNTUsMTcgKzU1LDE3 IEBACiAgIHN0cnVjdCBzdGF0ZV9ub2RlICpuZXh0OwogfTsKIAotc3RydWN0IHN0YXRlX3Rh YmxlICogaW5pdF9zdGF0ZV90YWJsZV93aXRoX3NpemUgKEpOSUVudiAqLCBqY2xhc3MsIGpp bnQpOwotc3RydWN0IHN0YXRlX3RhYmxlICogaW5pdF9zdGF0ZV90YWJsZSAoSk5JRW52ICos IGpjbGFzcyk7CitzdHJ1Y3Qgc3RhdGVfdGFibGUgKmluaXRfc3RhdGVfdGFibGVfd2l0aF9z aXplIChKTklFbnYgKiwgamNsYXNzLCBqaW50KTsKK3N0cnVjdCBzdGF0ZV90YWJsZSAqaW5p dF9zdGF0ZV90YWJsZSAoSk5JRW52ICosIGpjbGFzcyk7CiAKIC8qIGxvd2xldmVsIGFwaSAq Lwogdm9pZCBzZXRfc3RhdGVfb2lkIChKTklFbnYgKiwgam9iamVjdCwgc3RydWN0IHN0YXRl X3RhYmxlICosIGppbnQsIHZvaWQgKik7Ci12b2lkICogZ2V0X3N0YXRlX29pZCAoSk5JRW52 ICosIGpvYmplY3QsIHN0cnVjdCBzdGF0ZV90YWJsZSAqLCBqaW50KTsKLXZvaWQgKiByZW1v dmVfc3RhdGVfb2lkIChKTklFbnYgKiwgam9iamVjdCwgc3RydWN0IHN0YXRlX3RhYmxlICos IGppbnQpOwordm9pZCAqZ2V0X3N0YXRlX29pZCAoSk5JRW52ICosIGpvYmplY3QsIHN0cnVj dCBzdGF0ZV90YWJsZSAqLCBqaW50KTsKK3ZvaWQgKnJlbW92ZV9zdGF0ZV9vaWQgKEpOSUVu diAqLCBqb2JqZWN0LCBzdHJ1Y3Qgc3RhdGVfdGFibGUgKiwgamludCk7CiAKIC8qIGhpZ2hs ZXZlbCBhcGkgKi8KIGludCBzZXRfc3RhdGUgKEpOSUVudiAqLCBqb2JqZWN0LCBzdHJ1Y3Qg c3RhdGVfdGFibGUgKiwgdm9pZCAqKTsKLXZvaWQgKiBnZXRfc3RhdGUgKEpOSUVudiAqLCBq b2JqZWN0LCBzdHJ1Y3Qgc3RhdGVfdGFibGUgKik7Ci12b2lkICogcmVtb3ZlX3N0YXRlX3Ns b3QgKEpOSUVudiAqLCBqb2JqZWN0LCBzdHJ1Y3Qgc3RhdGVfdGFibGUgKik7Cit2b2lkICpn ZXRfc3RhdGUgKEpOSUVudiAqLCBqb2JqZWN0LCBzdHJ1Y3Qgc3RhdGVfdGFibGUgKik7Cit2 b2lkICpyZW1vdmVfc3RhdGVfc2xvdCAoSk5JRW52ICosIGpvYmplY3QsIHN0cnVjdCBzdGF0 ZV90YWJsZSAqKTsKIAogI2VuZGlmCkluZGV4OiBuYXRpdmUvam5pL2NsYXNzcGF0aC9wcmlt bGliLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvY2xhc3NwYXRoL2NsYXNz cGF0aC9uYXRpdmUvam5pL2NsYXNzcGF0aC9wcmltbGliLmMsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuNApkaWZmIC1JKi5jbGFzcyAtdSAtcjEuNCBwcmltbGliLmMKLS0tIG5hdGl2ZS9q bmkvY2xhc3NwYXRoL3ByaW1saWIuYwkyOSBNYXIgMjAwNCAwNzowNzoyNiAtMDAwMAkxLjQK KysrIG5hdGl2ZS9qbmkvY2xhc3NwYXRoL3ByaW1saWIuYwkyMSBKdW4gMjAwNCAxODo1ODoz MSAtMDAwMApAQCAtMzksNDI1ICszOSw2ODYgQEAKICNpbmNsdWRlIDxwcmltbGliLmg+CiAj aW5jbHVkZSA8amNsLmg+CiAKLXN0YXRpYyBqY2xhc3MgbmF0aXZlV3JhcENsYXNzW1BSSU1M SUJfTlVNVFlQRVNdID0ge05VTEwsTlVMTCxOVUxMLCBOVUxMLE5VTEwsTlVMTCwKLQkJCQkJ CU5VTEwsTlVMTCxOVUxMLCBOVUxMLE5VTEwsTlVMTH07Ci0KLXN0YXRpYyBqY2xhc3MgbmF0 aXZlVHlwZUNsYXNzW1BSSU1MSUJfTlVNVFlQRVNdID0ge05VTEwsTlVMTCxOVUxMLCBOVUxM LE5VTEwsTlVMTCwKLQkJCQkJCU5VTEwsTlVMTCxOVUxMLCBOVUxMLE5VTEwsTlVMTH07Ci0K LXN0YXRpYyBqbWV0aG9kSUQgbmF0aXZlV3JhcENsYXNzQ29uc3RydWN0b3JbUFJJTUxJQl9O VU1UWVBFU10gPSB7TlVMTCxOVUxMLE5VTEwsIE5VTEwsTlVMTCxOVUxMLAotCQkJCQkJTlVM TCxOVUxMLE5VTEwsIE5VTEwsTlVMTCxOVUxMfTsKLQotc3RhdGljIGptZXRob2RJRCBuYXRp dmVXcmFwQ2xhc3NBY2Nlc3NvcltQUklNTElCX05VTVRZUEVTXSA9IHtOVUxMLE5VTEwsTlVM TCwgTlVMTCxOVUxMLE5VTEwsCi0JCQkJCQlOVUxMLE5VTEwsTlVMTCwgTlVMTCxOVUxMLE5V TEx9OwotCi1zdGF0aWMgY2hhciAqIG5hdGl2ZVdyYXBDbGFzc05hbWVbUFJJTUxJQl9OVU1U WVBFU10gPSB7Ci0JCQkJCQkJTlVMTCwKLQkJCQkJCQlOVUxMLAotCQkJCQkJCSJqYXZhL2xh bmcvQm9vbGVhbiIsCi0JCQkJCQkJImphdmEvbGFuZy9CeXRlIiwKLQkJCQkJCQkiamF2YS9s YW5nL0NoYXJhY3RlciIsCi0JCQkJCQkJImphdmEvbGFuZy9TaG9ydCIsCi0JCQkJCQkJImph dmEvbGFuZy9JbnRlZ2VyIiwKLQkJCQkJCQkiamF2YS9sYW5nL0xvbmciLAotCQkJCQkJCSJq YXZhL2xhbmcvRmxvYXQiLAotCQkJCQkJCSJqYXZhL2xhbmcvRG91YmxlIiwKLQkJCQkJCQki amF2YS9sYW5nL1ZvaWQiLAotCQkJCQkJCU5VTEwKLQkJCQkJCQl9OwotCi1zdGF0aWMgY2hh ciAqIG5hdGl2ZVdyYXBDbGFzc0NvbnN0cnVjdG9yU2lnW1BSSU1MSUJfTlVNVFlQRVNdID0g ewotCQkJCQkJCU5VTEwsCi0JCQkJCQkJTlVMTCwKLQkJCQkJCQkiKFopViIsCi0JCQkJCQkJ IihCKVYiLAotCQkJCQkJCSIoQylWIiwKLQkJCQkJCQkiKFMpViIsCi0JCQkJCQkJIihJKVYi LAotCQkJCQkJCSIoSilWIiwKLQkJCQkJCQkiKEYpViIsCi0JCQkJCQkJIihEKVYiLAotCQkJ CQkJCSIoKVYiLAotCQkJCQkJCU5VTEwKLQkJCQkJCQl9OwotCi1zdGF0aWMgY2hhciAqIG5h dGl2ZVdyYXBDbGFzc0FjY2Vzc29yTmFtZVtQUklNTElCX05VTVRZUEVTXSA9IHsKLQkJCQkJ CQlOVUxMLAotCQkJCQkJCU5VTEwsCi0JCQkJCQkJImJvb2xlYW5WYWx1ZSIsCi0JCQkJCQkJ ImJ5dGVWYWx1ZSIsCi0JCQkJCQkJImNoYXJWYWx1ZSIsCi0JCQkJCQkJInNob3J0VmFsdWUi LAotCQkJCQkJCSJpbnRWYWx1ZSIsCi0JCQkJCQkJImxvbmdWYWx1ZSIsCi0JCQkJCQkJImZs b2F0VmFsdWUiLAotCQkJCQkJCSJkb3VibGVWYWx1ZSIsCi0JCQkJCQkJTlVMTCwKLQkJCQkJ CQlOVUxMCitzdGF0aWMgamNsYXNzIG5hdGl2ZVdyYXBDbGFzc1tQUklNTElCX05VTVRZUEVT XSA9CisgIHsgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKyAgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAogfTsKIAotc3RhdGljIGNoYXIgKiBuYXRp dmVXcmFwQ2xhc3NBY2Nlc3NvclNpZ1tQUklNTElCX05VTVRZUEVTXSA9IHsKLQkJCQkJCQlO VUxMLAotCQkJCQkJCU5VTEwsCi0JCQkJCQkJIigpWiIsCi0JCQkJCQkJIigpQiIsCi0JCQkJ CQkJIigpQyIsCi0JCQkJCQkJIigpUyIsCi0JCQkJCQkJIigpSSIsCi0JCQkJCQkJIigpSiIs Ci0JCQkJCQkJIigpRiIsCi0JCQkJCQkJIigpRCIsCi0JCQkJCQkJTlVMTCwKLQkJCQkJCQlO VUxMCitzdGF0aWMgamNsYXNzIG5hdGl2ZVR5cGVDbGFzc1tQUklNTElCX05VTVRZUEVTXSA9 CisgIHsgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKyAgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAogfTsKIAorc3RhdGljIGptZXRob2RJRCBuYXRp dmVXcmFwQ2xhc3NDb25zdHJ1Y3RvcltQUklNTElCX05VTVRZUEVTXSA9CisgIHsgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKyAgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTAorfTsKIAotSk5JRVhQT1JUIGpjbGFzcyBKTklDQUxMIFBSSU1MSUJf R2V0TmF0aXZlV3JhcENsYXNzKEpOSUVudiAqIGVudiwgaW50IHJlZmxlY3RUeXBlKSB7Ci0J cmV0dXJuIExJTktfTGlua0NsYXNzKGVudixuYXRpdmVXcmFwQ2xhc3NbcmVmbGVjdFR5cGVd LG5hdGl2ZVdyYXBDbGFzc05hbWVbcmVmbGVjdFR5cGVdKTsKLX0KLQotc3RhdGljIGpjbGFz cyBBY3R1YWxseUdldE5hdGl2ZVR5cGVDbGFzcyhKTklFbnYgKiBlbnYsIGludCByZWZsZWN0 VHlwZSkgewotCWpjbGFzcyB3cmFwQ2xhc3M7Ci0JamZpZWxkSUQgdHlwZUZpZWxkOwotCi0J d3JhcENsYXNzID0gUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCByZWZsZWN0VHlw ZSk7Ci0JaWYod3JhcENsYXNzID09IE5VTEwpCi0JCXJldHVybiBOVUxMOwotCXR5cGVGaWVs ZCA9ICgqZW52KS0+R2V0U3RhdGljRmllbGRJRChlbnYsIHdyYXBDbGFzcywgIlRZUEUiLCAi TGphdmEvbGFuZy9DbGFzcyIpOwotCWlmKHR5cGVGaWVsZCA9PSBOVUxMKQotCQlyZXR1cm4g TlVMTDsKLQlyZXR1cm4gKCplbnYpLT5HZXRTdGF0aWNPYmplY3RGaWVsZChlbnYsIHdyYXBD bGFzcywgdHlwZUZpZWxkKTsKLX0KLQotSk5JRVhQT1JUIGpjbGFzcyBKTklDQUxMIFBSSU1M SUJfR2V0TmF0aXZlVHlwZUNsYXNzKEpOSUVudiAqIGVudiwgaW50IHJlZmxlY3RUeXBlKSB7 Ci0JcmV0dXJuIExJTktfTGlua0tub3duQ2xhc3MoZW52LCBuYXRpdmVUeXBlQ2xhc3NbcmVm bGVjdFR5cGVdLCBBY3R1YWxseUdldE5hdGl2ZVR5cGVDbGFzcyhlbnYscmVmbGVjdFR5cGUp KTsKLX0KLQotSk5JRVhQT1JUIGptZXRob2RJRCBKTklDQUxMIFBSSU1MSUJfR2V0TmF0aXZl V3JhcENsYXNzQ29uc3RydWN0b3IoSk5JRW52ICogZW52LCBpbnQgcmVmbGVjdFR5cGUpIHsK LQlQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYscmVmbGVjdFR5cGUpOwotCXJldHVy biBMSU5LX0xpbmtDb25zdHJ1Y3RvcihlbnYsIG5hdGl2ZVdyYXBDbGFzc0NvbnN0cnVjdG9y W3JlZmxlY3RUeXBlXSwgbmF0aXZlV3JhcENsYXNzW3JlZmxlY3RUeXBlXSwgbmF0aXZlV3Jh cENsYXNzQ29uc3RydWN0b3JTaWdbcmVmbGVjdFR5cGVdKTsKLX0KLQotSk5JRVhQT1JUIGpt ZXRob2RJRCBKTklDQUxMIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzQWNjZXNzb3IoSk5J RW52ICogZW52LCBpbnQgcmVmbGVjdFR5cGUpIHsKLQlQUklNTElCX0dldE5hdGl2ZVdyYXBD bGFzcyhlbnYscmVmbGVjdFR5cGUpOwotCXJldHVybiBMSU5LX0xpbmtNZXRob2QoZW52LCBu YXRpdmVXcmFwQ2xhc3NBY2Nlc3NvcltyZWZsZWN0VHlwZV0sIG5hdGl2ZVdyYXBDbGFzc1ty ZWZsZWN0VHlwZV0sIG5hdGl2ZVdyYXBDbGFzc0FjY2Vzc29yTmFtZVtyZWZsZWN0VHlwZV0s IG5hdGl2ZVdyYXBDbGFzc0FjY2Vzc29yU2lnW3JlZmxlY3RUeXBlXSk7Ci19Ci0KLQotCi1K TklFWFBPUlQgam9iamVjdCBKTklDQUxMIFBSSU1MSUJfV3JhcEJvb2xlYW4oSk5JRW52ICog ZW52LCBqYm9vbGVhbiBiKSB7Ci0Jam1ldGhvZElEIGNvbnN0cnVjdCA9IFBSSU1MSUJfR2V0 TmF0aXZlV3JhcENsYXNzQ29uc3RydWN0b3IoZW52LCBQUklNTElCX0JPT0xFQU4pOwotCUpD TF9SRVRIUk9XX0VYQ0VQVElPTihlbnYpOwotCXJldHVybiAoKmVudiktPk5ld09iamVjdChl bnYsIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9CT09MRUFOKSwg Y29uc3RydWN0LCBiKTsKLX0KLQotSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCBQUklNTElC X1dyYXBCeXRlICAgKEpOSUVudiAqIGVudiwgamJ5dGUgYikgewotCWptZXRob2RJRCBjb25z dHJ1Y3QgPSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzc0NvbnN0cnVjdG9yKGVudiwgUFJJ TUxJQl9CWVRFKTsKLQlKQ0xfUkVUSFJPV19FWENFUFRJT04oZW52KTsKLQlyZXR1cm4gKCpl bnYpLT5OZXdPYmplY3QoZW52LCBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBS SU1MSUJfQllURSksIGNvbnN0cnVjdCwgYik7IAotfQotCi1KTklFWFBPUlQgam9iamVjdCBK TklDQUxMIFBSSU1MSUJfV3JhcENoYXIgICAoSk5JRW52ICogZW52LCBqY2hhciBjKSB7Ci0J am1ldGhvZElEIGNvbnN0cnVjdCA9IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzQ29uc3Ry dWN0b3IoZW52LCBQUklNTElCX0NIQVIpOwotCUpDTF9SRVRIUk9XX0VYQ0VQVElPTihlbnYp OwotCXJldHVybiAoKmVudiktPk5ld09iamVjdChlbnYsIFBSSU1MSUJfR2V0TmF0aXZlV3Jh cENsYXNzKGVudiwgUFJJTUxJQl9DSEFSKSwgY29uc3RydWN0LCBjKTsKLX0KLQotSk5JRVhQ T1JUIGpvYmplY3QgSk5JQ0FMTCBQUklNTElCX1dyYXBTaG9ydCAgKEpOSUVudiAqIGVudiwg anNob3J0IHMpIHsKLQlqbWV0aG9kSUQgY29uc3RydWN0ID0gUFJJTUxJQl9HZXROYXRpdmVX cmFwQ2xhc3NDb25zdHJ1Y3RvcihlbnYsIFBSSU1MSUJfU0hPUlQpOwotCUpDTF9SRVRIUk9X X0VYQ0VQVElPTihlbnYpOwotCXJldHVybiAoKmVudiktPk5ld09iamVjdChlbnYsIFBSSU1M SUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9TSE9SVCksIGNvbnN0cnVjdCwg cyk7Ci19Ci0KLUpOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwgUFJJTUxJQl9XcmFwSW50ICAg IChKTklFbnYgKiBlbnYsIGppbnQgaSkgewotCWptZXRob2RJRCBjb25zdHJ1Y3QgPSBQUklN TElCX0dldE5hdGl2ZVdyYXBDbGFzc0NvbnN0cnVjdG9yKGVudiwgUFJJTUxJQl9JTlQpOwot CUpDTF9SRVRIUk9XX0VYQ0VQVElPTihlbnYpOwotCXJldHVybiAoKmVudiktPk5ld09iamVj dChlbnYsIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9JTlQpLCBj b25zdHJ1Y3QsIGkpOwotfQotCi1KTklFWFBPUlQgam9iamVjdCBKTklDQUxMIFBSSU1MSUJf V3JhcExvbmcgICAoSk5JRW52ICogZW52LCBqbG9uZyBsKSB7Ci0Jam1ldGhvZElEIGNvbnN0 cnVjdCA9IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzQ29uc3RydWN0b3IoZW52LCBQUklN TElCX0xPTkcpOwotCUpDTF9SRVRIUk9XX0VYQ0VQVElPTihlbnYpOwotCXJldHVybiAoKmVu diktPk5ld09iamVjdChlbnYsIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJ TUxJQl9MT05HKSwgY29uc3RydWN0LCBsKTsKLX0KLQotSk5JRVhQT1JUIGpvYmplY3QgSk5J Q0FMTCBQUklNTElCX1dyYXBGbG9hdCAgKEpOSUVudiAqIGVudiwgamZsb2F0IGYpIHsKLQlq bWV0aG9kSUQgY29uc3RydWN0ID0gUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3NDb25zdHJ1 Y3RvcihlbnYsIFBSSU1MSUJfRkxPQVQpOwotCUpDTF9SRVRIUk9XX0VYQ0VQVElPTihlbnYp OwotCXJldHVybiAoKmVudiktPk5ld09iamVjdChlbnYsIFBSSU1MSUJfR2V0TmF0aXZlV3Jh cENsYXNzKGVudiwgUFJJTUxJQl9GTE9BVCksIGNvbnN0cnVjdCwgZik7Ci19Ci0KLUpOSUVY UE9SVCBqb2JqZWN0IEpOSUNBTEwgUFJJTUxJQl9XcmFwRG91YmxlIChKTklFbnYgKiBlbnYs IGpkb3VibGUgZCkgewotCWptZXRob2RJRCBjb25zdHJ1Y3QgPSBQUklNTElCX0dldE5hdGl2 ZVdyYXBDbGFzc0NvbnN0cnVjdG9yKGVudiwgUFJJTUxJQl9ET1VCTEUpOwotCUpDTF9SRVRI Uk9XX0VYQ0VQVElPTihlbnYpOwotCXJldHVybiAoKmVudiktPk5ld09iamVjdChlbnYsIFBS SU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9ET1VCTEUpLCBjb25zdHJ1 Y3QsIGQpOwotfQotCi0KLUpOSUVYUE9SVCBqYm9vbGVhbiBKTklDQUxMIFBSSU1MSUJfVW53 cmFwQm9vbGVhbihKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKSB7Ci0JaWYoKCplbnYpLT5J c0luc3RhbmNlT2YoZW52LCBvYmosIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwg UFJJTUxJQl9CT09MRUFOKSkpIHsKLQkJcmV0dXJuIFBSSU1MSUJfR2V0Qm9vbGVhbk9iamVj dFZhbHVlKGVudiwgb2JqKTsKLQl9IGVsc2UgewotCQlKQ0xfVGhyb3dFeGNlcHRpb24oZW52 LCAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIsICJBcmd1bWVudCBub3Qg b2YgY29ycmVjdCB0eXBlLiIpOwotCQlyZXR1cm4gSk5JX0ZBTFNFOwotCX0KLX0KLQotSk5J RVhQT1JUIGpieXRlIEpOSUNBTEwgUFJJTUxJQl9VbndyYXBCeXRlKEpOSUVudiAqIGVudiwg am9iamVjdCBvYmopIHsKLQlpZigoKmVudiktPklzSW5zdGFuY2VPZihlbnYsIG9iaiwgUFJJ TUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCBQUklNTElCX0JZVEUpKSkgewotCQlyZXR1 cm4gUFJJTUxJQl9HZXRCeXRlT2JqZWN0VmFsdWUoZW52LCBvYmopOwotCX0gZWxzZSB7Ci0J CUpDTF9UaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhj ZXB0aW9uIiwgIkFyZ3VtZW50IG5vdCBvZiBjb3JyZWN0IHR5cGUuIik7Ci0JCXJldHVybiAw OwotCX0KLX0KLQotSk5JRVhQT1JUIGpzaG9ydCBKTklDQUxMIFBSSU1MSUJfVW53cmFwU2hv cnQoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iaikgewotCWlmKCgqZW52KS0+SXNJbnN0YW5j ZU9mKGVudiwgb2JqLCBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJf U0hPUlQpKSkgewotCQlyZXR1cm4gUFJJTUxJQl9HZXRTaG9ydE9iamVjdFZhbHVlKGVudiwg b2JqKTsKLQl9IGVsc2UgaWYoKCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmosIFBSSU1M SUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9CWVRFKSkpIHsKLQkJcmV0dXJu IChqc2hvcnQpUFJJTUxJQl9HZXRCeXRlT2JqZWN0VmFsdWUoZW52LCBvYmopOwotCX0gZWxz ZSB7Ci0JCUpDTF9UaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3Vt ZW50RXhjZXB0aW9uIiwgIkFyZ3VtZW50IG5vdCBvZiBjb3JyZWN0IHR5cGUuIik7Ci0JCXJl dHVybiAwOwotCX0KLX0KLQotSk5JRVhQT1JUIGpjaGFyIEpOSUNBTEwgUFJJTUxJQl9Vbndy YXBDaGFyKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopIHsKLQlpZigoKmVudiktPklzSW5z dGFuY2VPZihlbnYsIG9iaiwgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCBQUklN TElCX0NIQVIpKSkgewotCQlyZXR1cm4gUFJJTUxJQl9HZXRDaGFyT2JqZWN0VmFsdWUoZW52 LCBvYmopOwotCX0gZWxzZSB7Ci0JCUpDTF9UaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xh bmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiwgIkFyZ3VtZW50IG5vdCBvZiBjb3JyZWN0 IHR5cGUuIik7Ci0JCXJldHVybiAwOwotCX0KLX0KLQotSk5JRVhQT1JUIGppbnQgSk5JQ0FM TCBQUklNTElCX1Vud3JhcEludChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKSB7Ci0JaWYo KCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmosIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENs YXNzKGVudiwgUFJJTUxJQl9JTlQpKSkgewotCQlyZXR1cm4gUFJJTUxJQl9HZXRJbnRPYmpl Y3RWYWx1ZShlbnYsIG9iaik7Ci0JfSBlbHNlIGlmKCgqZW52KS0+SXNJbnN0YW5jZU9mKGVu diwgb2JqLCBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJfU0hPUlQp KSkgewotCQlyZXR1cm4gKGppbnQpUFJJTUxJQl9HZXRTaG9ydE9iamVjdFZhbHVlKGVudiwg b2JqKTsKLQl9IGVsc2UgaWYoKCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmosIFBSSU1M SUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9DSEFSKSkpIHsKLQkJcmV0dXJu IChqaW50KVBSSU1MSUJfR2V0Q2hhck9iamVjdFZhbHVlKGVudiwgb2JqKTsKLQl9IGVsc2Ug aWYoKCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmosIFBSSU1MSUJfR2V0TmF0aXZlV3Jh cENsYXNzKGVudiwgUFJJTUxJQl9CWVRFKSkpIHsKLQkJcmV0dXJuIChqaW50KVBSSU1MSUJf R2V0Qnl0ZU9iamVjdFZhbHVlKGVudiwgb2JqKTsKLQl9IGVsc2UgewotCQlKQ0xfVGhyb3dF eGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIsICJB cmd1bWVudCBub3Qgb2YgY29ycmVjdCB0eXBlLiIpOwotCQlyZXR1cm4gMDsKLQl9Ci19Ci0K LUpOSUVYUE9SVCBqbG9uZyBKTklDQUxMIFBSSU1MSUJfVW53cmFwTG9uZyhKTklFbnYgKiBl bnYsIGpvYmplY3Qgb2JqKSB7Ci0JaWYoKCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmos IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9MT05HKSkpIHsKLQkJ cmV0dXJuIFBSSU1MSUJfR2V0TG9uZ09iamVjdFZhbHVlKGVudiwgb2JqKTsKLQl9IGVsc2Ug aWYoKCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmosIFBSSU1MSUJfR2V0TmF0aXZlV3Jh cENsYXNzKGVudiwgUFJJTUxJQl9JTlQpKSkgewotCQlyZXR1cm4gKGpsb25nKVBSSU1MSUJf R2V0SW50T2JqZWN0VmFsdWUoZW52LCBvYmopOwotCX0gZWxzZSBpZigoKmVudiktPklzSW5z dGFuY2VPZihlbnYsIG9iaiwgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCBQUklN TElCX1NIT1JUKSkpIHsKLQkJcmV0dXJuIChqbG9uZylQUklNTElCX0dldFNob3J0T2JqZWN0 VmFsdWUoZW52LCBvYmopOwotCX0gZWxzZSBpZigoKmVudiktPklzSW5zdGFuY2VPZihlbnYs IG9iaiwgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCBQUklNTElCX0NIQVIpKSkg ewotCQlyZXR1cm4gKGpsb25nKVBSSU1MSUJfR2V0Q2hhck9iamVjdFZhbHVlKGVudiwgb2Jq KTsKLQl9IGVsc2UgaWYoKCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmosIFBSSU1MSUJf R2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9CWVRFKSkpIHsKLQkJcmV0dXJuIChq bG9uZylQUklNTElCX0dldEJ5dGVPYmplY3RWYWx1ZShlbnYsIG9iaik7Ci0JfSBlbHNlIHsK LQkJSkNMX1Rocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRF eGNlcHRpb24iLCAiQXJndW1lbnQgbm90IG9mIGNvcnJlY3QgdHlwZS4iKTsKLQkJcmV0dXJu IDA7Ci0JfQotfQotCi1KTklFWFBPUlQgamZsb2F0IEpOSUNBTEwgUFJJTUxJQl9VbndyYXBG bG9hdChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKSB7Ci0JaWYoKCplbnYpLT5Jc0luc3Rh bmNlT2YoZW52LCBvYmosIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJ Ql9GTE9BVCkpKSB7Ci0JCXJldHVybiBQUklNTElCX0dldEZsb2F0T2JqZWN0VmFsdWUoZW52 LCBvYmopOwotCX0gZWxzZSBpZigoKmVudiktPklzSW5zdGFuY2VPZihlbnYsIG9iaiwgUFJJ TUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCBQUklNTElCX0xPTkcpKSkgewotCQlyZXR1 cm4gKGpmbG9hdClQUklNTElCX0dldExvbmdPYmplY3RWYWx1ZShlbnYsIG9iaik7Ci0JfSBl bHNlIGlmKCgqZW52KS0+SXNJbnN0YW5jZU9mKGVudiwgb2JqLCBQUklNTElCX0dldE5hdGl2 ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJfSU5UKSkpIHsKLQkJcmV0dXJuIChqZmxvYXQpUFJJ TUxJQl9HZXRJbnRPYmplY3RWYWx1ZShlbnYsIG9iaik7Ci0JfSBlbHNlIGlmKCgqZW52KS0+ SXNJbnN0YW5jZU9mKGVudiwgb2JqLCBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYs IFBSSU1MSUJfU0hPUlQpKSkgewotCQlyZXR1cm4gKGpmbG9hdClQUklNTElCX0dldFNob3J0 T2JqZWN0VmFsdWUoZW52LCBvYmopOwotCX0gZWxzZSBpZigoKmVudiktPklzSW5zdGFuY2VP ZihlbnYsIG9iaiwgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCBQUklNTElCX0NI QVIpKSkgewotCQlyZXR1cm4gKGpmbG9hdClQUklNTElCX0dldENoYXJPYmplY3RWYWx1ZShl bnYsIG9iaik7Ci0JfSBlbHNlIGlmKCgqZW52KS0+SXNJbnN0YW5jZU9mKGVudiwgb2JqLCBQ UklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJfQllURSkpKSB7Ci0JCXJl dHVybiAoamZsb2F0KVBSSU1MSUJfR2V0Qnl0ZU9iamVjdFZhbHVlKGVudiwgb2JqKTsKLQl9 IGVsc2UgewotCQlKQ0xfVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxB cmd1bWVudEV4Y2VwdGlvbiIsICJBcmd1bWVudCBub3Qgb2YgY29ycmVjdCB0eXBlLiIpOwot CQlyZXR1cm4gMDsKLQl9Ci19Ci0KLUpOSUVYUE9SVCBqZG91YmxlIEpOSUNBTEwgUFJJTUxJ Ql9VbndyYXBEb3VibGUoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iaikgewotCWlmKCgqZW52 KS0+SXNJbnN0YW5jZU9mKGVudiwgb2JqLCBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhl bnYsIFBSSU1MSUJfRE9VQkxFKSkpIHsKLQkJcmV0dXJuIFBSSU1MSUJfR2V0RG91YmxlT2Jq ZWN0VmFsdWUoZW52LCBvYmopOwotCX0gZWxzZSBpZigoKmVudiktPklzSW5zdGFuY2VPZihl bnYsIG9iaiwgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCBQUklNTElCX0ZMT0FU KSkpIHsKLQkJcmV0dXJuIChqZG91YmxlKVBSSU1MSUJfR2V0RmxvYXRPYmplY3RWYWx1ZShl bnYsIG9iaik7Ci0JfSBlbHNlIGlmKCgqZW52KS0+SXNJbnN0YW5jZU9mKGVudiwgb2JqLCBQ UklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJfTE9ORykpKSB7Ci0JCXJl dHVybiAoamRvdWJsZSlQUklNTElCX0dldExvbmdPYmplY3RWYWx1ZShlbnYsIG9iaik7Ci0J fSBlbHNlIGlmKCgqZW52KS0+SXNJbnN0YW5jZU9mKGVudiwgb2JqLCBQUklNTElCX0dldE5h dGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJfSU5UKSkpIHsKLQkJcmV0dXJuIChqZG91Ymxl KVBSSU1MSUJfR2V0SW50T2JqZWN0VmFsdWUoZW52LCBvYmopOwotCX0gZWxzZSBpZigoKmVu diktPklzSW5zdGFuY2VPZihlbnYsIG9iaiwgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3Mo ZW52LCBQUklNTElCX1NIT1JUKSkpIHsKLQkJcmV0dXJuIChqZG91YmxlKVBSSU1MSUJfR2V0 U2hvcnRPYmplY3RWYWx1ZShlbnYsIG9iaik7Ci0JfSBlbHNlIGlmKCgqZW52KS0+SXNJbnN0 YW5jZU9mKGVudiwgb2JqLCBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1M SUJfQ0hBUikpKSB7Ci0JCXJldHVybiAoamRvdWJsZSlQUklNTElCX0dldENoYXJPYmplY3RW YWx1ZShlbnYsIG9iaik7Ci0JfSBlbHNlIGlmKCgqZW52KS0+SXNJbnN0YW5jZU9mKGVudiwg b2JqLCBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJfQllURSkpKSB7 Ci0JCXJldHVybiAoamRvdWJsZSlQUklNTElCX0dldEJ5dGVPYmplY3RWYWx1ZShlbnYsIG9i aik7Ci0JfSBlbHNlIHsKLQkJSkNMX1Rocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9J bGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iLCAiQXJndW1lbnQgbm90IG9mIGNvcnJlY3QgdHlw ZS4iKTsKLQkJcmV0dXJuIDA7Ci0JfQotfQotCi1KTklFWFBPUlQgamludCBKTklDQUxMIFBS SU1MSUJfR2V0UmVmbGVjdGl2ZVdyYXBwZXJUeXBlKEpOSUVudiAqIGVudiwgam9iamVjdCBv YmopIHsKLQlqY2xhc3MgdHlwZUNsYXNzOwotCWlmKG9iaiA9PSBOVUxMKSB7Ci0JCXJldHVy biBQUklNTElCX05VTEw7Ci0JfQotCi0JdHlwZUNsYXNzID0gUFJJTUxJQl9HZXROYXRpdmVX cmFwQ2xhc3MoZW52LCBQUklNTElCX0RPVUJMRSk7Ci0JaWYoKCplbnYpLT5Jc0luc3RhbmNl T2YoZW52LCBvYmosIHR5cGVDbGFzcykpIHsKLQkJcmV0dXJuIFBSSU1MSUJfRE9VQkxFOwot CX0KLQl0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1M SUJfRkxPQVQpOwotCWlmKCgqZW52KS0+SXNJbnN0YW5jZU9mKGVudiwgb2JqLCB0eXBlQ2xh c3MpKSB7Ci0JCXJldHVybiBQUklNTElCX0ZMT0FUOwotCX0KLQl0eXBlQ2xhc3MgPSBQUklN TElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJfTE9ORyk7Ci0JaWYoKCplbnYp LT5Jc0luc3RhbmNlT2YoZW52LCBvYmosIHR5cGVDbGFzcykpIHsKLQkJcmV0dXJuIFBSSU1M SUJfTE9ORzsKLQl9Ci0JdHlwZUNsYXNzID0gUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3Mo ZW52LCBQUklNTElCX0lOVCk7Ci0JaWYoKCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmos IHR5cGVDbGFzcykpIHsKLQkJcmV0dXJuIFBSSU1MSUJfSU5UOwotCX0KLQl0eXBlQ2xhc3Mg PSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhlbnYsIFBSSU1MSUJfQ0hBUik7Ci0JaWYo KCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmosIHR5cGVDbGFzcykpIHsKLQkJcmV0dXJu IFBSSU1MSUJfQ0hBUjsKLQl9Ci0JdHlwZUNsYXNzID0gUFJJTUxJQl9HZXROYXRpdmVXcmFw Q2xhc3MoZW52LCBQUklNTElCX1NIT1JUKTsKLQlpZigoKmVudiktPklzSW5zdGFuY2VPZihl bnYsIG9iaiwgdHlwZUNsYXNzKSkgewotCQlyZXR1cm4gUFJJTUxJQl9TSE9SVDsKLQl9Ci0J dHlwZUNsYXNzID0gUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MoZW52LCBQUklNTElCX0JZ VEUpOwotCWlmKCgqZW52KS0+SXNJbnN0YW5jZU9mKGVudiwgb2JqLCB0eXBlQ2xhc3MpKSB7 Ci0JCXJldHVybiBQUklNTElCX0JZVEU7Ci0JfQotCXR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0 TmF0aXZlV3JhcENsYXNzKGVudiwgUFJJTUxJQl9CT09MRUFOKTsKLQlpZigoKmVudiktPklz SW5zdGFuY2VPZihlbnYsIG9iaiwgdHlwZUNsYXNzKSkgewotCQlyZXR1cm4gUFJJTUxJQl9C T09MRUFOOwotCX0KLQl0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyhl bnYsIFBSSU1MSUJfVk9JRCk7Ci0JaWYoKCplbnYpLT5Jc0luc3RhbmNlT2YoZW52LCBvYmos IHR5cGVDbGFzcykpIHsKLQkJcmV0dXJuIFBSSU1MSUJfVk9JRDsKLQl9Ci0JcmV0dXJuIFBS SU1MSUJfT0JKRUNUOwotfQotCi1KTklFWFBPUlQgamludCBKTklDQUxMIFBSSU1MSUJfR2V0 UmVmbGVjdGl2ZVR5cGUoSk5JRW52ICogZW52LCBqY2xhc3MgcmV0dXJuVHlwZSkgewotCWpj bGFzcyB0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5hdGl2ZVR5cGVDbGFzcyhlbnYsIFBSSU1M SUJfRE9VQkxFKTsKLQlpZigoKmVudiktPklzQXNzaWduYWJsZUZyb20oZW52LCByZXR1cm5U eXBlLCB0eXBlQ2xhc3MpKSB7Ci0JCXJldHVybiBQUklNTElCX0RPVUJMRTsKLQl9Ci0JdHlw ZUNsYXNzID0gUFJJTUxJQl9HZXROYXRpdmVUeXBlQ2xhc3MoZW52LCBQUklNTElCX0ZMT0FU KTsKLQlpZigoKmVudiktPklzQXNzaWduYWJsZUZyb20oZW52LCByZXR1cm5UeXBlLCB0eXBl Q2xhc3MpKSB7Ci0JCXJldHVybiBQUklNTElCX0ZMT0FUOwotCX0KLQl0eXBlQ2xhc3MgPSBQ UklNTElCX0dldE5hdGl2ZVR5cGVDbGFzcyhlbnYsIFBSSU1MSUJfTE9ORyk7Ci0JaWYoKCpl bnYpLT5Jc0Fzc2lnbmFibGVGcm9tKGVudiwgcmV0dXJuVHlwZSwgdHlwZUNsYXNzKSkgewot CQlyZXR1cm4gUFJJTUxJQl9MT05HOwotCX0KLQl0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5h dGl2ZVR5cGVDbGFzcyhlbnYsIFBSSU1MSUJfSU5UKTsKLQlpZigoKmVudiktPklzQXNzaWdu YWJsZUZyb20oZW52LCByZXR1cm5UeXBlLCB0eXBlQ2xhc3MpKSB7Ci0JCXJldHVybiBQUklN TElCX0lOVDsKLQl9Ci0JdHlwZUNsYXNzID0gUFJJTUxJQl9HZXROYXRpdmVUeXBlQ2xhc3Mo ZW52LCBQUklNTElCX0NIQVIpOwotCWlmKCgqZW52KS0+SXNBc3NpZ25hYmxlRnJvbShlbnYs IHJldHVyblR5cGUsIHR5cGVDbGFzcykpIHsKLQkJcmV0dXJuIFBSSU1MSUJfQ0hBUjsKLQl9 Ci0JdHlwZUNsYXNzID0gUFJJTUxJQl9HZXROYXRpdmVUeXBlQ2xhc3MoZW52LCBQUklNTElC X1NIT1JUKTsKLQlpZigoKmVudiktPklzQXNzaWduYWJsZUZyb20oZW52LCByZXR1cm5UeXBl LCB0eXBlQ2xhc3MpKSB7Ci0JCXJldHVybiBQUklNTElCX1NIT1JUOwotCX0KLQl0eXBlQ2xh c3MgPSBQUklNTElCX0dldE5hdGl2ZVR5cGVDbGFzcyhlbnYsIFBSSU1MSUJfQllURSk7Ci0J aWYoKCplbnYpLT5Jc0Fzc2lnbmFibGVGcm9tKGVudiwgcmV0dXJuVHlwZSwgdHlwZUNsYXNz KSkgewotCQlyZXR1cm4gUFJJTUxJQl9CWVRFOwotCX0KLQl0eXBlQ2xhc3MgPSBQUklNTElC X0dldE5hdGl2ZVR5cGVDbGFzcyhlbnYsIFBSSU1MSUJfQk9PTEVBTik7Ci0JaWYoKCplbnYp LT5Jc0Fzc2lnbmFibGVGcm9tKGVudiwgcmV0dXJuVHlwZSwgdHlwZUNsYXNzKSkgewotCQly ZXR1cm4gUFJJTUxJQl9CT09MRUFOOwotCX0KLQl0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5h dGl2ZVR5cGVDbGFzcyhlbnYsIFBSSU1MSUJfVk9JRCk7Ci0JaWYoKCplbnYpLT5Jc0Fzc2ln bmFibGVGcm9tKGVudiwgcmV0dXJuVHlwZSwgdHlwZUNsYXNzKSkgewotCQlyZXR1cm4gUFJJ TUxJQl9WT0lEOwotCX0KLQlyZXR1cm4gUFJJTUxJQl9PQkpFQ1Q7Ci19Ci0KLQotSk5JRVhQ T1JUIGpib29sZWFuIEpOSUNBTEwgUFJJTUxJQl9HZXRCb29sZWFuT2JqZWN0VmFsdWUoSk5J RW52ICogZW52LCBqb2JqZWN0IG9iaikgewotCWptZXRob2RJRCBhY2MgPSBQUklNTElCX0dl dE5hdGl2ZVdyYXBDbGFzc0FjY2Vzc29yKGVudiwgUFJJTUxJQl9CT09MRUFOKTsKLQlyZXR1 cm4gKCplbnYpLT5DYWxsQm9vbGVhbk1ldGhvZChlbnYsIG9iaiwgYWNjKTsKLX0KLQotSk5J RVhQT1JUIGpieXRlIEpOSUNBTEwgUFJJTUxJQl9HZXRCeXRlT2JqZWN0VmFsdWUoSk5JRW52 ICogZW52LCBqb2JqZWN0IG9iaikgewotCWptZXRob2RJRCBhY2MgPSBQUklNTElCX0dldE5h dGl2ZVdyYXBDbGFzc0FjY2Vzc29yKGVudiwgUFJJTUxJQl9CWVRFKTsKLQlyZXR1cm4gKCpl bnYpLT5DYWxsQnl0ZU1ldGhvZChlbnYsIG9iaiwgYWNjKTsKLX0KLQotSk5JRVhQT1JUIGpz aG9ydCBKTklDQUxMIFBSSU1MSUJfR2V0U2hvcnRPYmplY3RWYWx1ZShKTklFbnYgKiBlbnYs IGpvYmplY3Qgb2JqKSB7Ci0Jam1ldGhvZElEIGFjYyA9IFBSSU1MSUJfR2V0TmF0aXZlV3Jh cENsYXNzQWNjZXNzb3IoZW52LCBQUklNTElCX1NIT1JUKTsKLQlyZXR1cm4gKCplbnYpLT5D YWxsU2hvcnRNZXRob2QoZW52LCBvYmosIGFjYyk7Ci19Ci0KLUpOSUVYUE9SVCBqY2hhciBK TklDQUxMIFBSSU1MSUJfR2V0Q2hhck9iamVjdFZhbHVlKEpOSUVudiAqIGVudiwgam9iamVj dCBvYmopIHsKLQlqbWV0aG9kSUQgYWNjID0gUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3NB Y2Nlc3NvcihlbnYsIFBSSU1MSUJfQ0hBUik7Ci0JcmV0dXJuICgqZW52KS0+Q2FsbENoYXJN ZXRob2QoZW52LCBvYmosIGFjYyk7Ci19Ci0KLUpOSUVYUE9SVCBqaW50IEpOSUNBTEwgUFJJ TUxJQl9HZXRJbnRPYmplY3RWYWx1ZShKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKSB7Ci0J am1ldGhvZElEIGFjYyA9IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzQWNjZXNzb3IoZW52 LCBQUklNTElCX0lOVCk7Ci0JcmV0dXJuICgqZW52KS0+Q2FsbEludE1ldGhvZChlbnYsIG9i aiwgYWNjKTsKLX0KK3N0YXRpYyBqbWV0aG9kSUQgbmF0aXZlV3JhcENsYXNzQWNjZXNzb3Jb UFJJTUxJQl9OVU1UWVBFU10gPQorICB7IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEwsCisgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwKK307CiAKLUpO SUVYUE9SVCBqbG9uZyBKTklDQUxMIFBSSU1MSUJfR2V0TG9uZ09iamVjdFZhbHVlKEpOSUVu diAqIGVudiwgam9iamVjdCBvYmopIHsKLQlqbWV0aG9kSUQgYWNjID0gUFJJTUxJQl9HZXRO YXRpdmVXcmFwQ2xhc3NBY2Nlc3NvcihlbnYsIFBSSU1MSUJfTE9ORyk7Ci0JcmV0dXJuICgq ZW52KS0+Q2FsbExvbmdNZXRob2QoZW52LCBvYmosIGFjYyk7Ci19CitzdGF0aWMgY2hhciAq bmF0aXZlV3JhcENsYXNzTmFtZVtQUklNTElCX05VTVRZUEVTXSA9IHsKKyAgTlVMTCwKKyAg TlVMTCwKKyAgImphdmEvbGFuZy9Cb29sZWFuIiwKKyAgImphdmEvbGFuZy9CeXRlIiwKKyAg ImphdmEvbGFuZy9DaGFyYWN0ZXIiLAorICAiamF2YS9sYW5nL1Nob3J0IiwKKyAgImphdmEv bGFuZy9JbnRlZ2VyIiwKKyAgImphdmEvbGFuZy9Mb25nIiwKKyAgImphdmEvbGFuZy9GbG9h dCIsCisgICJqYXZhL2xhbmcvRG91YmxlIiwKKyAgImphdmEvbGFuZy9Wb2lkIiwKKyAgTlVM TAorfTsKIAotSk5JRVhQT1JUIGpmbG9hdCBKTklDQUxMIFBSSU1MSUJfR2V0RmxvYXRPYmpl Y3RWYWx1ZShKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKSB7Ci0Jam1ldGhvZElEIGFjYyA9 IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzQWNjZXNzb3IoZW52LCBQUklNTElCX0ZMT0FU KTsKLQlyZXR1cm4gKCplbnYpLT5DYWxsRmxvYXRNZXRob2QoZW52LCBvYmosIGFjYyk7Ci19 CitzdGF0aWMgY2hhciAqbmF0aXZlV3JhcENsYXNzQ29uc3RydWN0b3JTaWdbUFJJTUxJQl9O VU1UWVBFU10gPSB7CisgIE5VTEwsCisgIE5VTEwsCisgICIoWilWIiwKKyAgIihCKVYiLAor ICAiKEMpViIsCisgICIoUylWIiwKKyAgIihJKVYiLAorICAiKEopViIsCisgICIoRilWIiwK KyAgIihEKVYiLAorICAiKClWIiwKKyAgTlVMTAorfTsKIAotSk5JRVhQT1JUIGpkb3VibGUg Sk5JQ0FMTCBQUklNTElCX0dldERvdWJsZU9iamVjdFZhbHVlKEpOSUVudiAqIGVudiwgam9i amVjdCBvYmopIHsKLQlqbWV0aG9kSUQgYWNjID0gUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xh c3NBY2Nlc3NvcihlbnYsIFBSSU1MSUJfRE9VQkxFKTsKLQlyZXR1cm4gKCplbnYpLT5DYWxs RG91YmxlTWV0aG9kKGVudiwgb2JqLCBhY2MpOwotfQorc3RhdGljIGNoYXIgKm5hdGl2ZVdy YXBDbGFzc0FjY2Vzc29yTmFtZVtQUklNTElCX05VTVRZUEVTXSA9IHsKKyAgTlVMTCwKKyAg TlVMTCwKKyAgImJvb2xlYW5WYWx1ZSIsCisgICJieXRlVmFsdWUiLAorICAiY2hhclZhbHVl IiwKKyAgInNob3J0VmFsdWUiLAorICAiaW50VmFsdWUiLAorICAibG9uZ1ZhbHVlIiwKKyAg ImZsb2F0VmFsdWUiLAorICAiZG91YmxlVmFsdWUiLAorICBOVUxMLAorICBOVUxMCit9Owog CitzdGF0aWMgY2hhciAqbmF0aXZlV3JhcENsYXNzQWNjZXNzb3JTaWdbUFJJTUxJQl9OVU1U WVBFU10gPSB7CisgIE5VTEwsCisgIE5VTEwsCisgICIoKVoiLAorICAiKClCIiwKKyAgIigp QyIsCisgICIoKVMiLAorICAiKClJIiwKKyAgIigpSiIsCisgICIoKUYiLAorICAiKClEIiwK KyAgTlVMTCwKKyAgTlVMTAorfTsKIAogCi1KTklFWFBPUlQganZhbHVlIEpOSUNBTEwgUFJJ TUxJQl9VbndyYXBKVmFsdWUoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xh c3NUeXBlKSB7Ci0JanZhbHVlIHJldHZhbDsKLQlqaW50IG9ialR5cGUgPSBQUklNTElCX0dl dFJlZmxlY3RpdmVUeXBlKGVudiwgY2xhc3NUeXBlKTsKLQlpZihvYmpUeXBlID09IFBSSU1M SUJfQk9PTEVBTikgewotCQlyZXR2YWwueiA9IFBSSU1MSUJfVW53cmFwQm9vbGVhbihlbnYs b2JqKTsKLQl9IGVsc2UgaWYob2JqVHlwZSA9PSBQUklNTElCX0JZVEUpIHsKLQkJcmV0dmFs LmIgPSBQUklNTElCX1Vud3JhcEJ5dGUoZW52LG9iaik7Ci0JfSBlbHNlIGlmKG9ialR5cGUg PT0gUFJJTUxJQl9DSEFSKSB7Ci0JCXJldHZhbC5jID0gUFJJTUxJQl9VbndyYXBDaGFyKGVu dixvYmopOwotCX0gZWxzZSBpZihvYmpUeXBlID09IFBSSU1MSUJfU0hPUlQpIHsKLQkJcmV0 dmFsLnMgPSBQUklNTElCX1Vud3JhcFNob3J0KGVudixvYmopOwotCX0gZWxzZSBpZihvYmpU eXBlID09IFBSSU1MSUJfSU5UKSB7Ci0JCXJldHZhbC5pID0gUFJJTUxJQl9VbndyYXBJbnQo ZW52LG9iaik7Ci0JfSBlbHNlIGlmKG9ialR5cGUgPT0gUFJJTUxJQl9MT05HKSB7Ci0JCXJl dHZhbC5qID0gUFJJTUxJQl9VbndyYXBMb25nKGVudixvYmopOwotCX0gZWxzZSBpZihvYmpU eXBlID09IFBSSU1MSUJfRkxPQVQpIHsKLQkJcmV0dmFsLmYgPSBQUklNTElCX1Vud3JhcEZs b2F0KGVudixvYmopOwotCX0gZWxzZSBpZihvYmpUeXBlID09IFBSSU1MSUJfRE9VQkxFKSB7 Ci0JCXJldHZhbC5kID0gUFJJTUxJQl9VbndyYXBEb3VibGUoZW52LG9iaik7Ci0JfSBlbHNl IHsKLQkJaWYob2JqICE9IE5VTEwgJiYgISgqZW52KS0+SXNJbnN0YW5jZU9mKGVudiwgb2Jq LCBjbGFzc1R5cGUpKSB7Ci0JCQlKQ0xfVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5n L0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIsICJBcmd1bWVudCBub3Qgb2YgY29ycmVjdCBv YmplY3QgdHlwZS4iKTsKLQkJCXJldHVybiByZXR2YWw7Ci0JCX0KLQkJcmV0dmFsLmwgPSBv Ymo7Ci0JfQotCXJldHVybiByZXR2YWw7CitKTklFWFBPUlQgamNsYXNzIEpOSUNBTEwKK1BS SU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChKTklFbnYgKiBlbnYsIGludCByZWZsZWN0VHlw ZSkKK3sKKyAgcmV0dXJuIExJTktfTGlua0NsYXNzIChlbnYsIG5hdGl2ZVdyYXBDbGFzc1ty ZWZsZWN0VHlwZV0sCisJCQkgbmF0aXZlV3JhcENsYXNzTmFtZVtyZWZsZWN0VHlwZV0pOwor fQorCitzdGF0aWMgamNsYXNzCitBY3R1YWxseUdldE5hdGl2ZVR5cGVDbGFzcyAoSk5JRW52 ICogZW52LCBpbnQgcmVmbGVjdFR5cGUpCit7CisgIGpjbGFzcyB3cmFwQ2xhc3M7CisgIGpm aWVsZElEIHR5cGVGaWVsZDsKKworICB3cmFwQ2xhc3MgPSBQUklNTElCX0dldE5hdGl2ZVdy YXBDbGFzcyAoZW52LCByZWZsZWN0VHlwZSk7CisgIGlmICh3cmFwQ2xhc3MgPT0gTlVMTCkK KyAgICByZXR1cm4gTlVMTDsKKyAgdHlwZUZpZWxkID0KKyAgICAoKmVudiktPkdldFN0YXRp Y0ZpZWxkSUQgKGVudiwgd3JhcENsYXNzLCAiVFlQRSIsICJMamF2YS9sYW5nL0NsYXNzIik7 CisgIGlmICh0eXBlRmllbGQgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKyAgcmV0dXJu ICgqZW52KS0+R2V0U3RhdGljT2JqZWN0RmllbGQgKGVudiwgd3JhcENsYXNzLCB0eXBlRmll bGQpOworfQorCitKTklFWFBPUlQgamNsYXNzIEpOSUNBTEwKK1BSSU1MSUJfR2V0TmF0aXZl VHlwZUNsYXNzIChKTklFbnYgKiBlbnYsIGludCByZWZsZWN0VHlwZSkKK3sKKyAgcmV0dXJu IExJTktfTGlua0tub3duQ2xhc3MgKGVudiwgbmF0aXZlVHlwZUNsYXNzW3JlZmxlY3RUeXBl XSwKKwkJCSAgICAgIEFjdHVhbGx5R2V0TmF0aXZlVHlwZUNsYXNzIChlbnYsIHJlZmxlY3RU eXBlKSk7Cit9CisKK0pOSUVYUE9SVCBqbWV0aG9kSUQgSk5JQ0FMTAorUFJJTUxJQl9HZXRO YXRpdmVXcmFwQ2xhc3NDb25zdHJ1Y3RvciAoSk5JRW52ICogZW52LCBpbnQgcmVmbGVjdFR5 cGUpCit7CisgIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIHJlZmxlY3RUeXBl KTsKKyAgcmV0dXJuIExJTktfTGlua0NvbnN0cnVjdG9yIChlbnYsIG5hdGl2ZVdyYXBDbGFz c0NvbnN0cnVjdG9yW3JlZmxlY3RUeXBlXSwKKwkJCSAgICAgICBuYXRpdmVXcmFwQ2xhc3Nb cmVmbGVjdFR5cGVdLAorCQkJICAgICAgIG5hdGl2ZVdyYXBDbGFzc0NvbnN0cnVjdG9yU2ln W3JlZmxlY3RUeXBlXSk7Cit9CisKK0pOSUVYUE9SVCBqbWV0aG9kSUQgSk5JQ0FMTAorUFJJ TUxJQl9HZXROYXRpdmVXcmFwQ2xhc3NBY2Nlc3NvciAoSk5JRW52ICogZW52LCBpbnQgcmVm bGVjdFR5cGUpCit7CisgIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIHJlZmxl Y3RUeXBlKTsKKyAgcmV0dXJuIExJTktfTGlua01ldGhvZCAoZW52LCBuYXRpdmVXcmFwQ2xh c3NBY2Nlc3NvcltyZWZsZWN0VHlwZV0sCisJCQkgIG5hdGl2ZVdyYXBDbGFzc1tyZWZsZWN0 VHlwZV0sCisJCQkgIG5hdGl2ZVdyYXBDbGFzc0FjY2Vzc29yTmFtZVtyZWZsZWN0VHlwZV0s CisJCQkgIG5hdGl2ZVdyYXBDbGFzc0FjY2Vzc29yU2lnW3JlZmxlY3RUeXBlXSk7Cit9CisK KworCitKTklFWFBPUlQgam9iamVjdCBKTklDQUxMCitQUklNTElCX1dyYXBCb29sZWFuIChK TklFbnYgKiBlbnYsIGpib29sZWFuIGIpCit7CisgIGptZXRob2RJRCBjb25zdHJ1Y3QgPQor ICAgIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzQ29uc3RydWN0b3IgKGVudiwgUFJJTUxJ Ql9CT09MRUFOKTsKKyAgSkNMX1JFVEhST1dfRVhDRVBUSU9OIChlbnYpOworICByZXR1cm4g KCplbnYpLT5OZXdPYmplY3QgKGVudiwKKwkJCSAgICBQUklNTElCX0dldE5hdGl2ZVdyYXBD bGFzcyAoZW52LCBQUklNTElCX0JPT0xFQU4pLAorCQkJICAgIGNvbnN0cnVjdCwgYik7Cit9 CisKK0pOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwKK1BSSU1MSUJfV3JhcEJ5dGUgKEpOSUVu diAqIGVudiwgamJ5dGUgYikKK3sKKyAgam1ldGhvZElEIGNvbnN0cnVjdCA9CisgICAgUFJJ TUxJQl9HZXROYXRpdmVXcmFwQ2xhc3NDb25zdHJ1Y3RvciAoZW52LCBQUklNTElCX0JZVEUp OworICBKQ0xfUkVUSFJPV19FWENFUFRJT04gKGVudik7CisgIHJldHVybiAoKmVudiktPk5l d09iamVjdCAoZW52LAorCQkJICAgIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYs IFBSSU1MSUJfQllURSksCisJCQkgICAgY29uc3RydWN0LCBiKTsKK30KKworSk5JRVhQT1JU IGpvYmplY3QgSk5JQ0FMTAorUFJJTUxJQl9XcmFwQ2hhciAoSk5JRW52ICogZW52LCBqY2hh ciBjKQoreworICBqbWV0aG9kSUQgY29uc3RydWN0ID0KKyAgICBQUklNTElCX0dldE5hdGl2 ZVdyYXBDbGFzc0NvbnN0cnVjdG9yIChlbnYsIFBSSU1MSUJfQ0hBUik7CisgIEpDTF9SRVRI Uk9XX0VYQ0VQVElPTiAoZW52KTsKKyAgcmV0dXJuICgqZW52KS0+TmV3T2JqZWN0IChlbnYs CisJCQkgICAgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MgKGVudiwgUFJJTUxJQl9DSEFS KSwKKwkJCSAgICBjb25zdHJ1Y3QsIGMpOworfQorCitKTklFWFBPUlQgam9iamVjdCBKTklD QUxMCitQUklNTElCX1dyYXBTaG9ydCAoSk5JRW52ICogZW52LCBqc2hvcnQgcykKK3sKKyAg am1ldGhvZElEIGNvbnN0cnVjdCA9CisgICAgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3ND b25zdHJ1Y3RvciAoZW52LCBQUklNTElCX1NIT1JUKTsKKyAgSkNMX1JFVEhST1dfRVhDRVBU SU9OIChlbnYpOworICByZXR1cm4gKCplbnYpLT5OZXdPYmplY3QgKGVudiwKKwkJCSAgICBQ UklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX1NIT1JUKSwKKwkJCSAg ICBjb25zdHJ1Y3QsIHMpOworfQorCitKTklFWFBPUlQgam9iamVjdCBKTklDQUxMCitQUklN TElCX1dyYXBJbnQgKEpOSUVudiAqIGVudiwgamludCBpKQoreworICBqbWV0aG9kSUQgY29u c3RydWN0ID0KKyAgICBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzc0NvbnN0cnVjdG9yIChl bnYsIFBSSU1MSUJfSU5UKTsKKyAgSkNMX1JFVEhST1dfRVhDRVBUSU9OIChlbnYpOworICBy ZXR1cm4gKCplbnYpLT5OZXdPYmplY3QgKGVudiwKKwkJCSAgICBQUklNTElCX0dldE5hdGl2 ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0lOVCksCisJCQkgICAgY29uc3RydWN0LCBpKTsK K30KKworSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTAorUFJJTUxJQl9XcmFwTG9uZyAoSk5J RW52ICogZW52LCBqbG9uZyBsKQoreworICBqbWV0aG9kSUQgY29uc3RydWN0ID0KKyAgICBQ UklNTElCX0dldE5hdGl2ZVdyYXBDbGFzc0NvbnN0cnVjdG9yIChlbnYsIFBSSU1MSUJfTE9O Ryk7CisgIEpDTF9SRVRIUk9XX0VYQ0VQVElPTiAoZW52KTsKKyAgcmV0dXJuICgqZW52KS0+ TmV3T2JqZWN0IChlbnYsCisJCQkgICAgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MgKGVu diwgUFJJTUxJQl9MT05HKSwKKwkJCSAgICBjb25zdHJ1Y3QsIGwpOworfQorCitKTklFWFBP UlQgam9iamVjdCBKTklDQUxMCitQUklNTElCX1dyYXBGbG9hdCAoSk5JRW52ICogZW52LCBq ZmxvYXQgZikKK3sKKyAgam1ldGhvZElEIGNvbnN0cnVjdCA9CisgICAgUFJJTUxJQl9HZXRO YXRpdmVXcmFwQ2xhc3NDb25zdHJ1Y3RvciAoZW52LCBQUklNTElCX0ZMT0FUKTsKKyAgSkNM X1JFVEhST1dfRVhDRVBUSU9OIChlbnYpOworICByZXR1cm4gKCplbnYpLT5OZXdPYmplY3Qg KGVudiwKKwkJCSAgICBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElC X0ZMT0FUKSwKKwkJCSAgICBjb25zdHJ1Y3QsIGYpOworfQorCitKTklFWFBPUlQgam9iamVj dCBKTklDQUxMCitQUklNTElCX1dyYXBEb3VibGUgKEpOSUVudiAqIGVudiwgamRvdWJsZSBk KQoreworICBqbWV0aG9kSUQgY29uc3RydWN0ID0KKyAgICBQUklNTElCX0dldE5hdGl2ZVdy YXBDbGFzc0NvbnN0cnVjdG9yIChlbnYsIFBSSU1MSUJfRE9VQkxFKTsKKyAgSkNMX1JFVEhS T1dfRVhDRVBUSU9OIChlbnYpOworICByZXR1cm4gKCplbnYpLT5OZXdPYmplY3QgKGVudiwK KwkJCSAgICBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0RPVUJM RSksCisJCQkgICAgY29uc3RydWN0LCBkKTsKK30KKworCitKTklFWFBPUlQgamJvb2xlYW4g Sk5JQ0FMTAorUFJJTUxJQl9VbndyYXBCb29sZWFuIChKTklFbnYgKiBlbnYsIGpvYmplY3Qg b2JqKQoreworICBpZiAoKCplbnYpLT4KKyAgICAgIElzSW5zdGFuY2VPZiAoZW52LCBvYmos CisJCSAgICBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0JPT0xF QU4pKSkKKyAgICB7CisgICAgICByZXR1cm4gUFJJTUxJQl9HZXRCb29sZWFuT2JqZWN0VmFs dWUgKGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBKQ0xfVGhyb3dF eGNlcHRpb24gKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iLAor CQkJICAiQXJndW1lbnQgbm90IG9mIGNvcnJlY3QgdHlwZS4iKTsKKyAgICAgIHJldHVybiBK TklfRkFMU0U7CisgICAgfQorfQorCitKTklFWFBPUlQgamJ5dGUgSk5JQ0FMTAorUFJJTUxJ Ql9VbndyYXBCeXRlIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKQoreworICBpZiAoKCpl bnYpLT4KKyAgICAgIElzSW5zdGFuY2VPZiAoZW52LCBvYmosIFBSSU1MSUJfR2V0TmF0aXZl V3JhcENsYXNzIChlbnYsIFBSSU1MSUJfQllURSkpKQorICAgIHsKKyAgICAgIHJldHVybiBQ UklNTElCX0dldEJ5dGVPYmplY3RWYWx1ZSAoZW52LCBvYmopOworICAgIH0KKyAgZWxzZQor ICAgIHsKKyAgICAgIEpDTF9UaHJvd0V4Y2VwdGlvbiAoZW52LCAiamF2YS9sYW5nL0lsbGVn YWxBcmd1bWVudEV4Y2VwdGlvbiIsCisJCQkgICJBcmd1bWVudCBub3Qgb2YgY29ycmVjdCB0 eXBlLiIpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitKTklFWFBPUlQganNob3J0 IEpOSUNBTEwKK1BSSU1MSUJfVW53cmFwU2hvcnQgKEpOSUVudiAqIGVudiwgam9iamVjdCBv YmopCit7CisgIGlmICgoKmVudiktPgorICAgICAgSXNJbnN0YW5jZU9mIChlbnYsIG9iaiwK KwkJICAgIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1MSUJfU0hPUlQp KSkKKyAgICB7CisgICAgICByZXR1cm4gUFJJTUxJQl9HZXRTaG9ydE9iamVjdFZhbHVlIChl bnYsIG9iaik7CisgICAgfQorICBlbHNlIGlmICgoKmVudiktPgorCSAgIElzSW5zdGFuY2VP ZiAoZW52LCBvYmosCisJCQkgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MgKGVudiwgUFJJ TUxJQl9CWVRFKSkpCisgICAgeworICAgICAgcmV0dXJuIChqc2hvcnQpIFBSSU1MSUJfR2V0 Qnl0ZU9iamVjdFZhbHVlIChlbnYsIG9iaik7CisgICAgfQorICBlbHNlCisgICAgeworICAg ICAgSkNMX1Rocm93RXhjZXB0aW9uIChlbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50 RXhjZXB0aW9uIiwKKwkJCSAgIkFyZ3VtZW50IG5vdCBvZiBjb3JyZWN0IHR5cGUuIik7Cisg ICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK0pOSUVYUE9SVCBqY2hhciBKTklDQUxMCitQ UklNTElCX1Vud3JhcENoYXIgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopCit7CisgIGlm ICgoKmVudiktPgorICAgICAgSXNJbnN0YW5jZU9mIChlbnYsIG9iaiwgUFJJTUxJQl9HZXRO YXRpdmVXcmFwQ2xhc3MgKGVudiwgUFJJTUxJQl9DSEFSKSkpCisgICAgeworICAgICAgcmV0 dXJuIFBSSU1MSUJfR2V0Q2hhck9iamVjdFZhbHVlIChlbnYsIG9iaik7CisgICAgfQorICBl bHNlCisgICAgeworICAgICAgSkNMX1Rocm93RXhjZXB0aW9uIChlbnYsICJqYXZhL2xhbmcv SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiwKKwkJCSAgIkFyZ3VtZW50IG5vdCBvZiBjb3Jy ZWN0IHR5cGUuIik7CisgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK0pOSUVYUE9SVCBq aW50IEpOSUNBTEwKK1BSSU1MSUJfVW53cmFwSW50IChKTklFbnYgKiBlbnYsIGpvYmplY3Qg b2JqKQoreworICBpZiAoKCplbnYpLT4KKyAgICAgIElzSW5zdGFuY2VPZiAoZW52LCBvYmos IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1MSUJfSU5UKSkpCisgICAg eworICAgICAgcmV0dXJuIFBSSU1MSUJfR2V0SW50T2JqZWN0VmFsdWUgKGVudiwgb2JqKTsK KyAgICB9CisgIGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJbnN0YW5jZU9mIChlbnYsIG9i aiwKKwkJCSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX1NIT1JU KSkpCisgICAgeworICAgICAgcmV0dXJuIChqaW50KSBQUklNTElCX0dldFNob3J0T2JqZWN0 VmFsdWUgKGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJ bnN0YW5jZU9mIChlbnYsIG9iaiwKKwkJCSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAo ZW52LCBQUklNTElCX0NIQVIpKSkKKyAgICB7CisgICAgICByZXR1cm4gKGppbnQpIFBSSU1M SUJfR2V0Q2hhck9iamVjdFZhbHVlIChlbnYsIG9iaik7CisgICAgfQorICBlbHNlIGlmICgo KmVudiktPgorCSAgIElzSW5zdGFuY2VPZiAoZW52LCBvYmosCisJCQkgUFJJTUxJQl9HZXRO YXRpdmVXcmFwQ2xhc3MgKGVudiwgUFJJTUxJQl9CWVRFKSkpCisgICAgeworICAgICAgcmV0 dXJuIChqaW50KSBQUklNTElCX0dldEJ5dGVPYmplY3RWYWx1ZSAoZW52LCBvYmopOworICAg IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIEpDTF9UaHJvd0V4Y2VwdGlvbiAoZW52LCAiamF2 YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIsCisJCQkgICJBcmd1bWVudCBub3Qg b2YgY29ycmVjdCB0eXBlLiIpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitKTklF WFBPUlQgamxvbmcgSk5JQ0FMTAorUFJJTUxJQl9VbndyYXBMb25nIChKTklFbnYgKiBlbnYs IGpvYmplY3Qgb2JqKQoreworICBpZiAoKCplbnYpLT4KKyAgICAgIElzSW5zdGFuY2VPZiAo ZW52LCBvYmosIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1MSUJfTE9O RykpKQorICAgIHsKKyAgICAgIHJldHVybiBQUklNTElCX0dldExvbmdPYmplY3RWYWx1ZSAo ZW52LCBvYmopOworICAgIH0KKyAgZWxzZSBpZiAoKCplbnYpLT4KKwkgICBJc0luc3RhbmNl T2YgKGVudiwgb2JqLAorCQkJIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBS SU1MSUJfSU5UKSkpCisgICAgeworICAgICAgcmV0dXJuIChqbG9uZykgUFJJTUxJQl9HZXRJ bnRPYmplY3RWYWx1ZSAoZW52LCBvYmopOworICAgIH0KKyAgZWxzZSBpZiAoKCplbnYpLT4K KwkgICBJc0luc3RhbmNlT2YgKGVudiwgb2JqLAorCQkJIFBSSU1MSUJfR2V0TmF0aXZlV3Jh cENsYXNzIChlbnYsIFBSSU1MSUJfU0hPUlQpKSkKKyAgICB7CisgICAgICByZXR1cm4gKGps b25nKSBQUklNTElCX0dldFNob3J0T2JqZWN0VmFsdWUgKGVudiwgb2JqKTsKKyAgICB9Cisg IGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJbnN0YW5jZU9mIChlbnYsIG9iaiwKKwkJCSBQ UklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0NIQVIpKSkKKyAgICB7 CisgICAgICByZXR1cm4gKGpsb25nKSBQUklNTElCX0dldENoYXJPYmplY3RWYWx1ZSAoZW52 LCBvYmopOworICAgIH0KKyAgZWxzZSBpZiAoKCplbnYpLT4KKwkgICBJc0luc3RhbmNlT2Yg KGVudiwgb2JqLAorCQkJIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1M SUJfQllURSkpKQorICAgIHsKKyAgICAgIHJldHVybiAoamxvbmcpIFBSSU1MSUJfR2V0Qnl0 ZU9iamVjdFZhbHVlIChlbnYsIG9iaik7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAg SkNMX1Rocm93RXhjZXB0aW9uIChlbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhj ZXB0aW9uIiwKKwkJCSAgIkFyZ3VtZW50IG5vdCBvZiBjb3JyZWN0IHR5cGUuIik7CisgICAg ICByZXR1cm4gMDsKKyAgICB9Cit9CisKK0pOSUVYUE9SVCBqZmxvYXQgSk5JQ0FMTAorUFJJ TUxJQl9VbndyYXBGbG9hdCAoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAgaWYg KCgqZW52KS0+CisgICAgICBJc0luc3RhbmNlT2YgKGVudiwgb2JqLAorCQkgICAgUFJJTUxJ Ql9HZXROYXRpdmVXcmFwQ2xhc3MgKGVudiwgUFJJTUxJQl9GTE9BVCkpKQorICAgIHsKKyAg ICAgIHJldHVybiBQUklNTElCX0dldEZsb2F0T2JqZWN0VmFsdWUgKGVudiwgb2JqKTsKKyAg ICB9CisgIGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJbnN0YW5jZU9mIChlbnYsIG9iaiwK KwkJCSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0xPTkcpKSkK KyAgICB7CisgICAgICByZXR1cm4gKGpmbG9hdCkgUFJJTUxJQl9HZXRMb25nT2JqZWN0VmFs dWUgKGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJbnN0 YW5jZU9mIChlbnYsIG9iaiwKKwkJCSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52 LCBQUklNTElCX0lOVCkpKQorICAgIHsKKyAgICAgIHJldHVybiAoamZsb2F0KSBQUklNTElC X0dldEludE9iamVjdFZhbHVlIChlbnYsIG9iaik7CisgICAgfQorICBlbHNlIGlmICgoKmVu diktPgorCSAgIElzSW5zdGFuY2VPZiAoZW52LCBvYmosCisJCQkgUFJJTUxJQl9HZXROYXRp dmVXcmFwQ2xhc3MgKGVudiwgUFJJTUxJQl9TSE9SVCkpKQorICAgIHsKKyAgICAgIHJldHVy biAoamZsb2F0KSBQUklNTElCX0dldFNob3J0T2JqZWN0VmFsdWUgKGVudiwgb2JqKTsKKyAg ICB9CisgIGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJbnN0YW5jZU9mIChlbnYsIG9iaiwK KwkJCSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0NIQVIpKSkK KyAgICB7CisgICAgICByZXR1cm4gKGpmbG9hdCkgUFJJTUxJQl9HZXRDaGFyT2JqZWN0VmFs dWUgKGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJbnN0 YW5jZU9mIChlbnYsIG9iaiwKKwkJCSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52 LCBQUklNTElCX0JZVEUpKSkKKyAgICB7CisgICAgICByZXR1cm4gKGpmbG9hdCkgUFJJTUxJ Ql9HZXRCeXRlT2JqZWN0VmFsdWUgKGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UKKyAgICB7 CisgICAgICBKQ0xfVGhyb3dFeGNlcHRpb24gKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsQXJn dW1lbnRFeGNlcHRpb24iLAorCQkJICAiQXJndW1lbnQgbm90IG9mIGNvcnJlY3QgdHlwZS4i KTsKKyAgICAgIHJldHVybiAwOworICAgIH0KK30KKworSk5JRVhQT1JUIGpkb3VibGUgSk5J Q0FMTAorUFJJTUxJQl9VbndyYXBEb3VibGUgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmop Cit7CisgIGlmICgoKmVudiktPgorICAgICAgSXNJbnN0YW5jZU9mIChlbnYsIG9iaiwKKwkJ ICAgIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1MSUJfRE9VQkxFKSkp CisgICAgeworICAgICAgcmV0dXJuIFBSSU1MSUJfR2V0RG91YmxlT2JqZWN0VmFsdWUgKGVu diwgb2JqKTsKKyAgICB9CisgIGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJbnN0YW5jZU9m IChlbnYsIG9iaiwKKwkJCSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklN TElCX0ZMT0FUKSkpCisgICAgeworICAgICAgcmV0dXJuIChqZG91YmxlKSBQUklNTElCX0dl dEZsb2F0T2JqZWN0VmFsdWUgKGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UgaWYgKCgqZW52 KS0+CisJICAgSXNJbnN0YW5jZU9mIChlbnYsIG9iaiwKKwkJCSBQUklNTElCX0dldE5hdGl2 ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0xPTkcpKSkKKyAgICB7CisgICAgICByZXR1cm4g KGpkb3VibGUpIFBSSU1MSUJfR2V0TG9uZ09iamVjdFZhbHVlIChlbnYsIG9iaik7CisgICAg fQorICBlbHNlIGlmICgoKmVudiktPgorCSAgIElzSW5zdGFuY2VPZiAoZW52LCBvYmosCisJ CQkgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MgKGVudiwgUFJJTUxJQl9JTlQpKSkKKyAg ICB7CisgICAgICByZXR1cm4gKGpkb3VibGUpIFBSSU1MSUJfR2V0SW50T2JqZWN0VmFsdWUg KGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UgaWYgKCgqZW52KS0+CisJICAgSXNJbnN0YW5j ZU9mIChlbnYsIG9iaiwKKwkJCSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQ UklNTElCX1NIT1JUKSkpCisgICAgeworICAgICAgcmV0dXJuIChqZG91YmxlKSBQUklNTElC X0dldFNob3J0T2JqZWN0VmFsdWUgKGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UgaWYgKCgq ZW52KS0+CisJICAgSXNJbnN0YW5jZU9mIChlbnYsIG9iaiwKKwkJCSBQUklNTElCX0dldE5h dGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0NIQVIpKSkKKyAgICB7CisgICAgICByZXR1 cm4gKGpkb3VibGUpIFBSSU1MSUJfR2V0Q2hhck9iamVjdFZhbHVlIChlbnYsIG9iaik7Cisg ICAgfQorICBlbHNlIGlmICgoKmVudiktPgorCSAgIElzSW5zdGFuY2VPZiAoZW52LCBvYmos CisJCQkgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xhc3MgKGVudiwgUFJJTUxJQl9CWVRFKSkp CisgICAgeworICAgICAgcmV0dXJuIChqZG91YmxlKSBQUklNTElCX0dldEJ5dGVPYmplY3RW YWx1ZSAoZW52LCBvYmopOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIEpDTF9UaHJv d0V4Y2VwdGlvbiAoZW52LCAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIs CisJCQkgICJBcmd1bWVudCBub3Qgb2YgY29ycmVjdCB0eXBlLiIpOworICAgICAgcmV0dXJu IDA7CisgICAgfQorfQorCitKTklFWFBPUlQgamludCBKTklDQUxMCitQUklNTElCX0dldFJl ZmxlY3RpdmVXcmFwcGVyVHlwZSAoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAg amNsYXNzIHR5cGVDbGFzczsKKyAgaWYgKG9iaiA9PSBOVUxMKQorICAgIHsKKyAgICAgIHJl dHVybiBQUklNTElCX05VTEw7CisgICAgfQorCisgIHR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0 TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1MSUJfRE9VQkxFKTsKKyAgaWYgKCgqZW52KS0+ SXNJbnN0YW5jZU9mIChlbnYsIG9iaiwgdHlwZUNsYXNzKSkKKyAgICB7CisgICAgICByZXR1 cm4gUFJJTUxJQl9ET1VCTEU7CisgICAgfQorICB0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5h dGl2ZVdyYXBDbGFzcyAoZW52LCBQUklNTElCX0ZMT0FUKTsKKyAgaWYgKCgqZW52KS0+SXNJ bnN0YW5jZU9mIChlbnYsIG9iaiwgdHlwZUNsYXNzKSkKKyAgICB7CisgICAgICByZXR1cm4g UFJJTUxJQl9GTE9BVDsKKyAgICB9CisgIHR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0TmF0aXZl V3JhcENsYXNzIChlbnYsIFBSSU1MSUJfTE9ORyk7CisgIGlmICgoKmVudiktPklzSW5zdGFu Y2VPZiAoZW52LCBvYmosIHR5cGVDbGFzcykpCisgICAgeworICAgICAgcmV0dXJuIFBSSU1M SUJfTE9ORzsKKyAgICB9CisgIHR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENs YXNzIChlbnYsIFBSSU1MSUJfSU5UKTsKKyAgaWYgKCgqZW52KS0+SXNJbnN0YW5jZU9mIChl bnYsIG9iaiwgdHlwZUNsYXNzKSkKKyAgICB7CisgICAgICByZXR1cm4gUFJJTUxJQl9JTlQ7 CisgICAgfQorICB0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52 LCBQUklNTElCX0NIQVIpOworICBpZiAoKCplbnYpLT5Jc0luc3RhbmNlT2YgKGVudiwgb2Jq LCB0eXBlQ2xhc3MpKQorICAgIHsKKyAgICAgIHJldHVybiBQUklNTElCX0NIQVI7CisgICAg fQorICB0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzcyAoZW52LCBQUklN TElCX1NIT1JUKTsKKyAgaWYgKCgqZW52KS0+SXNJbnN0YW5jZU9mIChlbnYsIG9iaiwgdHlw ZUNsYXNzKSkKKyAgICB7CisgICAgICByZXR1cm4gUFJJTUxJQl9TSE9SVDsKKyAgICB9Cisg IHR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1MSUJf QllURSk7CisgIGlmICgoKmVudiktPklzSW5zdGFuY2VPZiAoZW52LCBvYmosIHR5cGVDbGFz cykpCisgICAgeworICAgICAgcmV0dXJuIFBSSU1MSUJfQllURTsKKyAgICB9CisgIHR5cGVD bGFzcyA9IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1MSUJfQk9PTEVB Tik7CisgIGlmICgoKmVudiktPklzSW5zdGFuY2VPZiAoZW52LCBvYmosIHR5cGVDbGFzcykp CisgICAgeworICAgICAgcmV0dXJuIFBSSU1MSUJfQk9PTEVBTjsKKyAgICB9CisgIHR5cGVD bGFzcyA9IFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChlbnYsIFBSSU1MSUJfVk9JRCk7 CisgIGlmICgoKmVudiktPklzSW5zdGFuY2VPZiAoZW52LCBvYmosIHR5cGVDbGFzcykpCisg ICAgeworICAgICAgcmV0dXJuIFBSSU1MSUJfVk9JRDsKKyAgICB9CisgIHJldHVybiBQUklN TElCX09CSkVDVDsKK30KKworSk5JRVhQT1JUIGppbnQgSk5JQ0FMTAorUFJJTUxJQl9HZXRS ZWZsZWN0aXZlVHlwZSAoSk5JRW52ICogZW52LCBqY2xhc3MgcmV0dXJuVHlwZSkKK3sKKyAg amNsYXNzIHR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0TmF0aXZlVHlwZUNsYXNzIChlbnYsIFBS SU1MSUJfRE9VQkxFKTsKKyAgaWYgKCgqZW52KS0+SXNBc3NpZ25hYmxlRnJvbSAoZW52LCBy ZXR1cm5UeXBlLCB0eXBlQ2xhc3MpKQorICAgIHsKKyAgICAgIHJldHVybiBQUklNTElCX0RP VUJMRTsKKyAgICB9CisgIHR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0TmF0aXZlVHlwZUNsYXNz IChlbnYsIFBSSU1MSUJfRkxPQVQpOworICBpZiAoKCplbnYpLT5Jc0Fzc2lnbmFibGVGcm9t IChlbnYsIHJldHVyblR5cGUsIHR5cGVDbGFzcykpCisgICAgeworICAgICAgcmV0dXJuIFBS SU1MSUJfRkxPQVQ7CisgICAgfQorICB0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5hdGl2ZVR5 cGVDbGFzcyAoZW52LCBQUklNTElCX0xPTkcpOworICBpZiAoKCplbnYpLT5Jc0Fzc2lnbmFi bGVGcm9tIChlbnYsIHJldHVyblR5cGUsIHR5cGVDbGFzcykpCisgICAgeworICAgICAgcmV0 dXJuIFBSSU1MSUJfTE9ORzsKKyAgICB9CisgIHR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0TmF0 aXZlVHlwZUNsYXNzIChlbnYsIFBSSU1MSUJfSU5UKTsKKyAgaWYgKCgqZW52KS0+SXNBc3Np Z25hYmxlRnJvbSAoZW52LCByZXR1cm5UeXBlLCB0eXBlQ2xhc3MpKQorICAgIHsKKyAgICAg IHJldHVybiBQUklNTElCX0lOVDsKKyAgICB9CisgIHR5cGVDbGFzcyA9IFBSSU1MSUJfR2V0 TmF0aXZlVHlwZUNsYXNzIChlbnYsIFBSSU1MSUJfQ0hBUik7CisgIGlmICgoKmVudiktPklz QXNzaWduYWJsZUZyb20gKGVudiwgcmV0dXJuVHlwZSwgdHlwZUNsYXNzKSkKKyAgICB7Cisg ICAgICByZXR1cm4gUFJJTUxJQl9DSEFSOworICAgIH0KKyAgdHlwZUNsYXNzID0gUFJJTUxJ Ql9HZXROYXRpdmVUeXBlQ2xhc3MgKGVudiwgUFJJTUxJQl9TSE9SVCk7CisgIGlmICgoKmVu diktPklzQXNzaWduYWJsZUZyb20gKGVudiwgcmV0dXJuVHlwZSwgdHlwZUNsYXNzKSkKKyAg ICB7CisgICAgICByZXR1cm4gUFJJTUxJQl9TSE9SVDsKKyAgICB9CisgIHR5cGVDbGFzcyA9 IFBSSU1MSUJfR2V0TmF0aXZlVHlwZUNsYXNzIChlbnYsIFBSSU1MSUJfQllURSk7CisgIGlm ICgoKmVudiktPklzQXNzaWduYWJsZUZyb20gKGVudiwgcmV0dXJuVHlwZSwgdHlwZUNsYXNz KSkKKyAgICB7CisgICAgICByZXR1cm4gUFJJTUxJQl9CWVRFOworICAgIH0KKyAgdHlwZUNs YXNzID0gUFJJTUxJQl9HZXROYXRpdmVUeXBlQ2xhc3MgKGVudiwgUFJJTUxJQl9CT09MRUFO KTsKKyAgaWYgKCgqZW52KS0+SXNBc3NpZ25hYmxlRnJvbSAoZW52LCByZXR1cm5UeXBlLCB0 eXBlQ2xhc3MpKQorICAgIHsKKyAgICAgIHJldHVybiBQUklNTElCX0JPT0xFQU47CisgICAg fQorICB0eXBlQ2xhc3MgPSBQUklNTElCX0dldE5hdGl2ZVR5cGVDbGFzcyAoZW52LCBQUklN TElCX1ZPSUQpOworICBpZiAoKCplbnYpLT5Jc0Fzc2lnbmFibGVGcm9tIChlbnYsIHJldHVy blR5cGUsIHR5cGVDbGFzcykpCisgICAgeworICAgICAgcmV0dXJuIFBSSU1MSUJfVk9JRDsK KyAgICB9CisgIHJldHVybiBQUklNTElCX09CSkVDVDsKK30KKworCitKTklFWFBPUlQgamJv b2xlYW4gSk5JQ0FMTAorUFJJTUxJQl9HZXRCb29sZWFuT2JqZWN0VmFsdWUgKEpOSUVudiAq IGVudiwgam9iamVjdCBvYmopCit7CisgIGptZXRob2RJRCBhY2MgPSBQUklNTElCX0dldE5h dGl2ZVdyYXBDbGFzc0FjY2Vzc29yIChlbnYsIFBSSU1MSUJfQk9PTEVBTik7CisgIHJldHVy biAoKmVudiktPkNhbGxCb29sZWFuTWV0aG9kIChlbnYsIG9iaiwgYWNjKTsKK30KKworSk5J RVhQT1JUIGpieXRlIEpOSUNBTEwKK1BSSU1MSUJfR2V0Qnl0ZU9iamVjdFZhbHVlIChKTklF bnYgKiBlbnYsIGpvYmplY3Qgb2JqKQoreworICBqbWV0aG9kSUQgYWNjID0gUFJJTUxJQl9H ZXROYXRpdmVXcmFwQ2xhc3NBY2Nlc3NvciAoZW52LCBQUklNTElCX0JZVEUpOworICByZXR1 cm4gKCplbnYpLT5DYWxsQnl0ZU1ldGhvZCAoZW52LCBvYmosIGFjYyk7Cit9CisKK0pOSUVY UE9SVCBqc2hvcnQgSk5JQ0FMTAorUFJJTUxJQl9HZXRTaG9ydE9iamVjdFZhbHVlIChKTklF bnYgKiBlbnYsIGpvYmplY3Qgb2JqKQoreworICBqbWV0aG9kSUQgYWNjID0gUFJJTUxJQl9H ZXROYXRpdmVXcmFwQ2xhc3NBY2Nlc3NvciAoZW52LCBQUklNTElCX1NIT1JUKTsKKyAgcmV0 dXJuICgqZW52KS0+Q2FsbFNob3J0TWV0aG9kIChlbnYsIG9iaiwgYWNjKTsKK30KKworSk5J RVhQT1JUIGpjaGFyIEpOSUNBTEwKK1BSSU1MSUJfR2V0Q2hhck9iamVjdFZhbHVlIChKTklF bnYgKiBlbnYsIGpvYmplY3Qgb2JqKQoreworICBqbWV0aG9kSUQgYWNjID0gUFJJTUxJQl9H ZXROYXRpdmVXcmFwQ2xhc3NBY2Nlc3NvciAoZW52LCBQUklNTElCX0NIQVIpOworICByZXR1 cm4gKCplbnYpLT5DYWxsQ2hhck1ldGhvZCAoZW52LCBvYmosIGFjYyk7Cit9CisKK0pOSUVY UE9SVCBqaW50IEpOSUNBTEwKK1BSSU1MSUJfR2V0SW50T2JqZWN0VmFsdWUgKEpOSUVudiAq IGVudiwgam9iamVjdCBvYmopCit7CisgIGptZXRob2RJRCBhY2MgPSBQUklNTElCX0dldE5h dGl2ZVdyYXBDbGFzc0FjY2Vzc29yIChlbnYsIFBSSU1MSUJfSU5UKTsKKyAgcmV0dXJuICgq ZW52KS0+Q2FsbEludE1ldGhvZCAoZW52LCBvYmosIGFjYyk7Cit9CisKK0pOSUVYUE9SVCBq bG9uZyBKTklDQUxMCitQUklNTElCX0dldExvbmdPYmplY3RWYWx1ZSAoSk5JRW52ICogZW52 LCBqb2JqZWN0IG9iaikKK3sKKyAgam1ldGhvZElEIGFjYyA9IFBSSU1MSUJfR2V0TmF0aXZl V3JhcENsYXNzQWNjZXNzb3IgKGVudiwgUFJJTUxJQl9MT05HKTsKKyAgcmV0dXJuICgqZW52 KS0+Q2FsbExvbmdNZXRob2QgKGVudiwgb2JqLCBhY2MpOworfQorCitKTklFWFBPUlQgamZs b2F0IEpOSUNBTEwKK1BSSU1MSUJfR2V0RmxvYXRPYmplY3RWYWx1ZSAoSk5JRW52ICogZW52 LCBqb2JqZWN0IG9iaikKK3sKKyAgam1ldGhvZElEIGFjYyA9IFBSSU1MSUJfR2V0TmF0aXZl V3JhcENsYXNzQWNjZXNzb3IgKGVudiwgUFJJTUxJQl9GTE9BVCk7CisgIHJldHVybiAoKmVu diktPkNhbGxGbG9hdE1ldGhvZCAoZW52LCBvYmosIGFjYyk7Cit9CisKK0pOSUVYUE9SVCBq ZG91YmxlIEpOSUNBTEwKK1BSSU1MSUJfR2V0RG91YmxlT2JqZWN0VmFsdWUgKEpOSUVudiAq IGVudiwgam9iamVjdCBvYmopCit7CisgIGptZXRob2RJRCBhY2MgPSBQUklNTElCX0dldE5h dGl2ZVdyYXBDbGFzc0FjY2Vzc29yIChlbnYsIFBSSU1MSUJfRE9VQkxFKTsKKyAgcmV0dXJu ICgqZW52KS0+Q2FsbERvdWJsZU1ldGhvZCAoZW52LCBvYmosIGFjYyk7Cit9CisKKworCitK TklFWFBPUlQganZhbHVlIEpOSUNBTEwKK1BSSU1MSUJfVW53cmFwSlZhbHVlIChKTklFbnYg KiBlbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhc3NUeXBlKQoreworICBqdmFsdWUgcmV0 dmFsOworICBqaW50IG9ialR5cGUgPSBQUklNTElCX0dldFJlZmxlY3RpdmVUeXBlIChlbnYs IGNsYXNzVHlwZSk7CisgIGlmIChvYmpUeXBlID09IFBSSU1MSUJfQk9PTEVBTikKKyAgICB7 CisgICAgICByZXR2YWwueiA9IFBSSU1MSUJfVW53cmFwQm9vbGVhbiAoZW52LCBvYmopOwor ICAgIH0KKyAgZWxzZSBpZiAob2JqVHlwZSA9PSBQUklNTElCX0JZVEUpCisgICAgeworICAg ICAgcmV0dmFsLmIgPSBQUklNTElCX1Vud3JhcEJ5dGUgKGVudiwgb2JqKTsKKyAgICB9Cisg IGVsc2UgaWYgKG9ialR5cGUgPT0gUFJJTUxJQl9DSEFSKQorICAgIHsKKyAgICAgIHJldHZh bC5jID0gUFJJTUxJQl9VbndyYXBDaGFyIChlbnYsIG9iaik7CisgICAgfQorICBlbHNlIGlm IChvYmpUeXBlID09IFBSSU1MSUJfU0hPUlQpCisgICAgeworICAgICAgcmV0dmFsLnMgPSBQ UklNTElCX1Vud3JhcFNob3J0IChlbnYsIG9iaik7CisgICAgfQorICBlbHNlIGlmIChvYmpU eXBlID09IFBSSU1MSUJfSU5UKQorICAgIHsKKyAgICAgIHJldHZhbC5pID0gUFJJTUxJQl9V bndyYXBJbnQgKGVudiwgb2JqKTsKKyAgICB9CisgIGVsc2UgaWYgKG9ialR5cGUgPT0gUFJJ TUxJQl9MT05HKQorICAgIHsKKyAgICAgIHJldHZhbC5qID0gUFJJTUxJQl9VbndyYXBMb25n IChlbnYsIG9iaik7CisgICAgfQorICBlbHNlIGlmIChvYmpUeXBlID09IFBSSU1MSUJfRkxP QVQpCisgICAgeworICAgICAgcmV0dmFsLmYgPSBQUklNTElCX1Vud3JhcEZsb2F0IChlbnYs IG9iaik7CisgICAgfQorICBlbHNlIGlmIChvYmpUeXBlID09IFBSSU1MSUJfRE9VQkxFKQor ICAgIHsKKyAgICAgIHJldHZhbC5kID0gUFJJTUxJQl9VbndyYXBEb3VibGUgKGVudiwgb2Jq KTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAob2JqICE9IE5VTEwgJiYgISgq ZW52KS0+SXNJbnN0YW5jZU9mIChlbnYsIG9iaiwgY2xhc3NUeXBlKSkKKwl7CisJICBKQ0xf VGhyb3dFeGNlcHRpb24gKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRp b24iLAorCQkJICAgICAgIkFyZ3VtZW50IG5vdCBvZiBjb3JyZWN0IG9iamVjdCB0eXBlLiIp OworCSAgcmV0dXJuIHJldHZhbDsKKwl9CisgICAgICByZXR2YWwubCA9IG9iajsKKyAgICB9 CisgIHJldHVybiByZXR2YWw7CiB9Ci0KSW5kZXg6IG5hdGl2ZS9qbmkvY2xhc3NwYXRoL3By aW1saWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9jbGFzc3BhdGgvY2xh c3NwYXRoL25hdGl2ZS9qbmkvY2xhc3NwYXRoL3ByaW1saWIuaCx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS40CmRpZmYgLUkqLmNsYXNzIC11IC1yMS40IHByaW1saWIuaAotLS0gbmF0aXZl L2puaS9jbGFzc3BhdGgvcHJpbWxpYi5oCTI5IE1hciAyMDA0IDA3OjA3OjI2IC0wMDAwCTEu NAorKysgbmF0aXZlL2puaS9jbGFzc3BhdGgvcHJpbWxpYi5oCTIxIEp1biAyMDA0IDE4OjU4 OjMxIC0wMDAwCkBAIC01NSw0OCArNTUsNjUgQEAKICNkZWZpbmUgUFJJTUxJQl9OVU1UWVBF UyAxMgogCiAvKiBMb3ctbGV2ZWwgcHJpbWl0aXZlIGNsYXNzIGFjY2Vzc29yIGZ1bmN0aW9u cy4gKi8KLUpOSUVYUE9SVCBqY2xhc3MgSk5JQ0FMTCBQUklNTElCX0dldE5hdGl2ZVdyYXBD bGFzcyhKTklFbnYgKiBlbnYsIGludCByZWZsZWN0VHlwZSk7Ci1KTklFWFBPUlQgamNsYXNz IEpOSUNBTEwgUFJJTUxJQl9HZXROYXRpdmVUeXBlQ2xhc3MoSk5JRW52ICogZW52LCBpbnQg cmVmbGVjdFR5cGUpOwotSk5JRVhQT1JUIGptZXRob2RJRCBKTklDQUxMIFBSSU1MSUJfR2V0 TmF0aXZlV3JhcENsYXNzQ29uc3RydWN0b3IoSk5JRW52ICogZW52LCBpbnQgcmVmbGVjdFR5 cGUpOwotSk5JRVhQT1JUIGptZXRob2RJRCBKTklDQUxMIFBSSU1MSUJfR2V0TmF0aXZlV3Jh cENsYXNzQWNjZXNzb3IoSk5JRW52ICogZW52LCBpbnQgcmVmbGVjdFR5cGUpOworSk5JRVhQ T1JUIGpjbGFzcyBKTklDQUxMIFBSSU1MSUJfR2V0TmF0aXZlV3JhcENsYXNzIChKTklFbnYg KiBlbnYsCisJCQkJCQkgICAgIGludCByZWZsZWN0VHlwZSk7CitKTklFWFBPUlQgamNsYXNz IEpOSUNBTEwgUFJJTUxJQl9HZXROYXRpdmVUeXBlQ2xhc3MgKEpOSUVudiAqIGVudiwKKwkJ CQkJCSAgICAgaW50IHJlZmxlY3RUeXBlKTsKK0pOSUVYUE9SVCBqbWV0aG9kSUQgSk5JQ0FM TCBQUklNTElCX0dldE5hdGl2ZVdyYXBDbGFzc0NvbnN0cnVjdG9yIChKTklFbnYgKgorCQkJ CQkJCQkgICBlbnYsCisJCQkJCQkJCSAgIGludAorCQkJCQkJCQkgICByZWZsZWN0VHlwZSk7 CitKTklFWFBPUlQgam1ldGhvZElEIEpOSUNBTEwgUFJJTUxJQl9HZXROYXRpdmVXcmFwQ2xh c3NBY2Nlc3NvciAoSk5JRW52ICogZW52LAorCQkJCQkJCQlpbnQKKwkJCQkJCQkJcmVmbGVj dFR5cGUpOwogCiAvKiBUeXBlIGRpc2NvdmVyeSBmdW5jdGlvbnM6IFdyYXBwZXJUeXBlIGZp bmRzIG91dCBqLmwuQm9vbGVhbi9CeXRlL2V0Yy4sIGFuZAogICAgVHlwZSBmaW5kcyBvdXQg ai5sLkJvb2xlYW4uVFlQRSwgZXRjLgogKi8KLUpOSUVYUE9SVCBqaW50IEpOSUNBTEwgUFJJ TUxJQl9HZXRSZWZsZWN0aXZlV3JhcHBlclR5cGUoSk5JRW52ICogZW52LCBqb2JqZWN0IG9i aik7Ci1KTklFWFBPUlQgamludCBKTklDQUxMIFBSSU1MSUJfR2V0UmVmbGVjdGl2ZVR5cGUo Sk5JRW52ICogZW52LCBqY2xhc3MgcmV0dXJuVHlwZSk7CitKTklFWFBPUlQgamludCBKTklD QUxMIFBSSU1MSUJfR2V0UmVmbGVjdGl2ZVdyYXBwZXJUeXBlIChKTklFbnYgKiBlbnYsCisJ CQkJCQkJIGpvYmplY3Qgb2JqKTsKK0pOSUVYUE9SVCBqaW50IEpOSUNBTEwgUFJJTUxJQl9H ZXRSZWZsZWN0aXZlVHlwZSAoSk5JRW52ICogZW52LAorCQkJCQkJICBqY2xhc3MgcmV0dXJu VHlwZSk7CiAKIC8qIENvbnN0cnVjdG9yIGZ1bmN0aW9ucy4gKi8KLUpOSUVYUE9SVCBqb2Jq ZWN0IEpOSUNBTEwgUFJJTUxJQl9XcmFwQm9vbGVhbihKTklFbnYgKiBlbnYsIGpib29sZWFu IGIpOwotSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCBQUklNTElCX1dyYXBCeXRlICAgKEpO SUVudiAqIGVudiwgamJ5dGUgYik7Ci1KTklFWFBPUlQgam9iamVjdCBKTklDQUxMIFBSSU1M SUJfV3JhcENoYXIgICAoSk5JRW52ICogZW52LCBqY2hhciBjKTsKLUpOSUVYUE9SVCBqb2Jq ZWN0IEpOSUNBTEwgUFJJTUxJQl9XcmFwU2hvcnQgIChKTklFbnYgKiBlbnYsIGpzaG9ydCBz KTsKLUpOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwgUFJJTUxJQl9XcmFwSW50ICAgIChKTklF bnYgKiBlbnYsIGppbnQgaSk7Ci1KTklFWFBPUlQgam9iamVjdCBKTklDQUxMIFBSSU1MSUJf V3JhcExvbmcgICAoSk5JRW52ICogZW52LCBqbG9uZyBsKTsKLUpOSUVYUE9SVCBqb2JqZWN0 IEpOSUNBTEwgUFJJTUxJQl9XcmFwRmxvYXQgIChKTklFbnYgKiBlbnYsIGpmbG9hdCBmKTsK K0pOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwgUFJJTUxJQl9XcmFwQm9vbGVhbiAoSk5JRW52 ICogZW52LCBqYm9vbGVhbiBiKTsKK0pOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwgUFJJTUxJ Ql9XcmFwQnl0ZSAoSk5JRW52ICogZW52LCBqYnl0ZSBiKTsKK0pOSUVYUE9SVCBqb2JqZWN0 IEpOSUNBTEwgUFJJTUxJQl9XcmFwQ2hhciAoSk5JRW52ICogZW52LCBqY2hhciBjKTsKK0pO SUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwgUFJJTUxJQl9XcmFwU2hvcnQgKEpOSUVudiAqIGVu diwganNob3J0IHMpOworSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCBQUklNTElCX1dyYXBJ bnQgKEpOSUVudiAqIGVudiwgamludCBpKTsKK0pOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwg UFJJTUxJQl9XcmFwTG9uZyAoSk5JRW52ICogZW52LCBqbG9uZyBsKTsKK0pOSUVYUE9SVCBq b2JqZWN0IEpOSUNBTEwgUFJJTUxJQl9XcmFwRmxvYXQgKEpOSUVudiAqIGVudiwgamZsb2F0 IGYpOwogSk5JRVhQT1JUIGpvYmplY3QgSk5JQ0FMTCBQUklNTElCX1dyYXBEb3VibGUgKEpO SUVudiAqIGVudiwgamRvdWJsZSBkKTsKIAogLyogV2lkZW5pbmcgY29udmVyc2lvbiB1bndy YXBwaW5nIGZ1bmN0aW9ucy4gKi8KLUpOSUVYUE9SVCBqYm9vbGVhbiBKTklDQUxMIFBSSU1M SUJfVW53cmFwQm9vbGVhbihKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKTsKLUpOSUVYUE9S VCBqYnl0ZSAgICBKTklDQUxMIFBSSU1MSUJfVW53cmFwQnl0ZSAgIChKTklFbnYgKiBlbnYs IGpvYmplY3Qgb2JqKTsKLUpOSUVYUE9SVCBqc2hvcnQgICBKTklDQUxMIFBSSU1MSUJfVW53 cmFwU2hvcnQgIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKTsKLUpOSUVYUE9SVCBqY2hh ciAgICBKTklDQUxMIFBSSU1MSUJfVW53cmFwQ2hhciAgIChKTklFbnYgKiBlbnYsIGpvYmpl Y3Qgb2JqKTsKLUpOSUVYUE9SVCBqaW50ICAgICBKTklDQUxMIFBSSU1MSUJfVW53cmFwSW50 ICAgIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKTsKLUpOSUVYUE9SVCBqbG9uZyAgICBK TklDQUxMIFBSSU1MSUJfVW53cmFwTG9uZyAgIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2Jq KTsKLUpOSUVYUE9SVCBqZmxvYXQgICBKTklDQUxMIFBSSU1MSUJfVW53cmFwRmxvYXQgIChK TklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKTsKLUpOSUVYUE9SVCBqZG91YmxlICBKTklDQUxM IFBSSU1MSUJfVW53cmFwRG91YmxlIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKTsKK0pO SUVYUE9SVCBqYm9vbGVhbiBKTklDQUxMIFBSSU1MSUJfVW53cmFwQm9vbGVhbiAoSk5JRW52 ICogZW52LCBqb2JqZWN0IG9iaik7CitKTklFWFBPUlQgamJ5dGUgSk5JQ0FMTCBQUklNTElC X1Vud3JhcEJ5dGUgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopOworSk5JRVhQT1JUIGpz aG9ydCBKTklDQUxMIFBSSU1MSUJfVW53cmFwU2hvcnQgKEpOSUVudiAqIGVudiwgam9iamVj dCBvYmopOworSk5JRVhQT1JUIGpjaGFyIEpOSUNBTEwgUFJJTUxJQl9VbndyYXBDaGFyIChK TklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKTsKK0pOSUVYUE9SVCBqaW50IEpOSUNBTEwgUFJJ TUxJQl9VbndyYXBJbnQgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopOworSk5JRVhQT1JU IGpsb25nIEpOSUNBTEwgUFJJTUxJQl9VbndyYXBMb25nIChKTklFbnYgKiBlbnYsIGpvYmpl Y3Qgb2JqKTsKK0pOSUVYUE9SVCBqZmxvYXQgSk5JQ0FMTCBQUklNTElCX1Vud3JhcEZsb2F0 IChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKTsKK0pOSUVYUE9SVCBqZG91YmxlIEpOSUNB TEwgUFJJTUxJQl9VbndyYXBEb3VibGUgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopOwog CiAvKiBTaW1wbGUgdW53cmFwcGluZyBmdW5jdGlvbnMuIE9iamVjdHMgKm11c3QqIGJlIG9m IGNvcnJlY3QgdHlwZS4gKi8KLUpOSUVYUE9SVCBqYm9vbGVhbiBKTklDQUxMIFBSSU1MSUJf R2V0Qm9vbGVhbk9iamVjdFZhbHVlKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopOwotSk5J RVhQT1JUIGpieXRlICAgIEpOSUNBTEwgUFJJTUxJQl9HZXRCeXRlT2JqZWN0VmFsdWUgICAo Sk5JRW52ICogZW52LCBqb2JqZWN0IG9iaik7Ci1KTklFWFBPUlQganNob3J0ICAgSk5JQ0FM TCBQUklNTElCX0dldFNob3J0T2JqZWN0VmFsdWUgIChKTklFbnYgKiBlbnYsIGpvYmplY3Qg b2JqKTsKLUpOSUVYUE9SVCBqY2hhciAgICBKTklDQUxMIFBSSU1MSUJfR2V0Q2hhck9iamVj dFZhbHVlICAgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopOwotSk5JRVhQT1JUIGppbnQg ICAgIEpOSUNBTEwgUFJJTUxJQl9HZXRJbnRPYmplY3RWYWx1ZSAgICAoSk5JRW52ICogZW52 LCBqb2JqZWN0IG9iaik7Ci1KTklFWFBPUlQgamxvbmcgICAgSk5JQ0FMTCBQUklNTElCX0dl dExvbmdPYmplY3RWYWx1ZSAgIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKTsKLUpOSUVY UE9SVCBqZmxvYXQgICBKTklDQUxMIFBSSU1MSUJfR2V0RmxvYXRPYmplY3RWYWx1ZSAgKEpO SUVudiAqIGVudiwgam9iamVjdCBvYmopOwotSk5JRVhQT1JUIGpkb3VibGUgIEpOSUNBTEwg UFJJTUxJQl9HZXREb3VibGVPYmplY3RWYWx1ZSAoSk5JRW52ICogZW52LCBqb2JqZWN0IG9i aik7CitKTklFWFBPUlQgamJvb2xlYW4gSk5JQ0FMTCBQUklNTElCX0dldEJvb2xlYW5PYmpl Y3RWYWx1ZSAoSk5JRW52ICogZW52LAorCQkJCQkJCSAgam9iamVjdCBvYmopOworSk5JRVhQ T1JUIGpieXRlIEpOSUNBTEwgUFJJTUxJQl9HZXRCeXRlT2JqZWN0VmFsdWUgKEpOSUVudiAq IGVudiwKKwkJCQkJCSAgICBqb2JqZWN0IG9iaik7CitKTklFWFBPUlQganNob3J0IEpOSUNB TEwgUFJJTUxJQl9HZXRTaG9ydE9iamVjdFZhbHVlIChKTklFbnYgKiBlbnYsCisJCQkJCQkg ICAgICBqb2JqZWN0IG9iaik7CitKTklFWFBPUlQgamNoYXIgSk5JQ0FMTCBQUklNTElCX0dl dENoYXJPYmplY3RWYWx1ZSAoSk5JRW52ICogZW52LAorCQkJCQkJICAgIGpvYmplY3Qgb2Jq KTsKK0pOSUVYUE9SVCBqaW50IEpOSUNBTEwgUFJJTUxJQl9HZXRJbnRPYmplY3RWYWx1ZSAo Sk5JRW52ICogZW52LCBqb2JqZWN0IG9iaik7CitKTklFWFBPUlQgamxvbmcgSk5JQ0FMTCBQ UklNTElCX0dldExvbmdPYmplY3RWYWx1ZSAoSk5JRW52ICogZW52LAorCQkJCQkJICAgIGpv YmplY3Qgb2JqKTsKK0pOSUVYUE9SVCBqZmxvYXQgSk5JQ0FMTCBQUklNTElCX0dldEZsb2F0 T2JqZWN0VmFsdWUgKEpOSUVudiAqIGVudiwKKwkJCQkJCSAgICAgIGpvYmplY3Qgb2JqKTsK K0pOSUVYUE9SVCBqZG91YmxlIEpOSUNBTEwgUFJJTUxJQl9HZXREb3VibGVPYmplY3RWYWx1 ZSAoSk5JRW52ICogZW52LAorCQkJCQkJCWpvYmplY3Qgb2JqKTsKIAogLyoganZhbHVlIGNv bnZlcnNpb246IFVud3JhcCBvYmogdG8gdGhlIHR5cGUgb2YgY2xhc3NUeXBlLCB3aXRoIHdp ZGVuaW5nIGNvbnZlcnNpb24uICovCi1KTklFWFBPUlQganZhbHVlIEpOSUNBTEwgUFJJTUxJ Ql9VbndyYXBKVmFsdWUoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhc3NU eXBlKTsKK0pOSUVYUE9SVCBqdmFsdWUgSk5JQ0FMTCBQUklNTElCX1Vud3JhcEpWYWx1ZSAo Sk5JRW52ICogZW52LCBqb2JqZWN0IG9iaiwKKwkJCQkJICAgICAgIGpjbGFzcyBjbGFzc1R5 cGUpOwogCiAjZW5kaWYK --------------080800000206040705060306-- From MAILER-DAEMON Mon Jun 21 15:25:05 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcUPh-0000o5-0g for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 15:25:05 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcUPf-0000nD-Eq for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:25:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcUPd-0000lz-9X for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:25:02 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcUPc-0000lo-Uc for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:25:01 -0400 Received: from [212.6.122.151] (helo=mail5.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcUOD-0008SW-1J for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:23:33 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-93-099.ewetel.net [80.228.93.99]) by mail5.ewetel.de (8.12.1/8.12.9) with ESMTP id i5LJNQuQ007215; Mon, 21 Jun 2004 21:23:26 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BcUTC-0003H4-00; Mon, 21 Jun 2004 21:28:42 +0200 From: Michael Koch To: Steven Augart Date: Mon, 21 Jun 2004 21:25:00 +0200 User-Agent: KMail/1.6.2 References: <40D71D11.6000802@watson.ibm.com> <200406211958.05106.konqueror@gmx.de> <40D7306F.9090808@watson.ibm.com> In-Reply-To: <40D7306F.9090808@watson.ibm.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Message-Id: <200406212125.00313.konqueror@gmx.de> X-CheckCompat: OK Cc: commit-classpath@gnu.org Subject: Re: libclasspath reformatting patch (was: Re: fix const/non-const warnings in jcl.c, jcl.h) X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 19:25:03 -0000 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Montag, 21. Juni 2004 21:01 schrieb Steven Augart: > Michael Koch wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > > Hash: SHA1 > > > > Am Montag, 21. Juni 2004 19:38 schrieb Steven Augart: > >>2004-06-20 Steven Augart > >> > >> * native/jni/classpath/jcl.c, native/jni/classpath/jcl.h > >> (JCL_FindClass): Fixed const/non-const warning in > >> function prototype. (JCL_ThrowException): Ditto. > >> (JCL_free_cstring): Fixed logical const/non-const problem > >>in function prototype. > >> > >> * native/jni/classpath/jcl.c: Reformatted according to > >> GNU standards. > > > > Can you provide two patches, one for functional changes and one > > for the reformatting ? This makes it easier later to track > > changes. > > That is indeed a better idea. > > I'm attaching the patch for reformatting first. > > Will submit the other one shortly. I hate having multiple patches > to the same file outstanding; whine whine. I think such things are obvious, please commit. (I forgot to say this=20 in my last mail, sorry) Thanks for you work. Michael =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA1zYMWSOgCCdjSDsRAtFfAKCWMYD+9szTPtXI1pXFht0wA8XDGwCeJBEn /kahJABFeWekdDWitTcOwfU=3D =3DWbme =2D----END PGP SIGNATURE----- From MAILER-DAEMON Mon Jun 21 15:32:12 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcUWZ-0003Ac-Bx for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 15:32:11 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcUWX-00039r-T7 for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:32:10 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcUWV-00038l-SU for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:32:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcUWV-00038i-Pl for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:32:07 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcUUb-0000kY-7j for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:30:09 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5LJTlo40610; Mon, 21 Jun 2004 15:29:47 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LJTwX38270; Mon, 21 Jun 2004 15:29:58 -0400 Received: from watson.ibm.com (bilbo.watson.ibm.com [9.2.32.197]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LJTvf38268; Mon, 21 Jun 2004 15:29:57 -0400 Message-ID: <40D73735.60508@watson.ibm.com> Date: Mon, 21 Jun 2004 15:29:57 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: Michael Koch References: <40D71D11.6000802@watson.ibm.com> <200406211958.05106.konqueror@gmx.de> In-Reply-To: <200406211958.05106.konqueror@gmx.de> Content-Type: multipart/mixed; boundary="------------000506080809040908030609" Cc: commit-classpath@gnu.org Subject: libclasspath const/non-const warnings (was: Re: fix const/non-const warnings in jcl.c, jcl.h) X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 19:32:10 -0000 This is a multi-part message in MIME format. --------------000506080809040908030609 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Michael Koch wrote: > Can you provide two patches, one for functional changes and one for > the reformatting ? This makes it easier later to track changes. This is the patch for functional changes, using the reformatted code as a base. -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------000506080809040908030609 Content-Type: text/plain; name="jcl-warnings-2.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="jcl-warnings-2.patch" ClRoZXNlIGFyZSB0aGUgc3Vic3RhbnRpdmUgY2hhbmdlcy4KCjIwMDQtMDYtMjEgIFN0ZXZl biBBdWdhcnQgPGF1Z2FydEB3YXRzb24uaWJtLmNvbT4KCgkqIG5hdGl2ZS9qbmkvY2xhc3Nw YXRoL2pjbC5jLCBuYXRpdmUvam5pL2NsYXNzcGF0aC9qY2wuaAoJKEpDTF9GaW5kQ2xhc3Mp OiBGaXhlZCBjb25zdC9ub24tY29uc3Qgd2FybmluZyBpbiBmdW5jdGlvbiBwcm90b3R5cGUu CgkoSkNMX1Rocm93RXhjZXB0aW9uKTogSWRlbS4KCShKQ0xfZnJlZV9jc3RyaW5nKTogRml4 ZWQgbG9naWNhbCBjb25zdC9ub24tY29uc3QgcHJvYmxlbSBpbgoJZnVuY3Rpb24gcHJvdG90 eXBlLgoKCSogbmF0aXZlL2puaS9jbGFzc3BhdGgvam5pbGluay5jLCBuYXRpdmUvam5pL2Ns YXNzcGF0aC9qbmlsaW5rLmgKCShMSU5LX1JlYWxseUxpbmtDbGFzcyk6IEZpeCBjb25zdC9u b24tY29uc3Qgd2FybmluZyBpbiBmdW5jdGlvbgoJcHJvdG90eXBlLiAKCShMSU5LX1JlbGlu a0NsYXNzKTogSWRlbS4KCShMSU5LX1JlbGlua01ldGhvZCk6IElkZW0uCgkoTElOS19SZWxp bmtTdGF0aWNNZXRob2QpOiBJZGVtLgoJKExJTktfUmVsaW5rRmllbGQpOiBJZGVtLgoJKExJ TktfUmVsaW5rU3RhdGljRmllbGQpOiBJZGVtLgoJCgkqIG5hdGl2ZS9qbmkvY2xhc3NwYXRo L3ByaW1saWIuYyAobmF0aXZlV3JhcENsYXNzTmFtZSk6IE1ha2UgY29uc3QuCgkobmF0aXZl V3JhcENsYXNzQ29uc3RydWN0b3JTaWcpOiBJZGVtLgoJKG5hdGl2ZVdyYXBDbGFzc0FjY2Vz c29yTmFtZSk6IElkZW0uCgkobmF0aXZlV3JhcENsYXNzQWNjZXNzb3JTaWcpOiBJZGVtLgoJ CgkKCQoKLS0tIG5hdGl2ZS9qbmkvY2xhc3NwYXRoL2pjbC5jLnJlZm9ybWF0dGVkCTIwMDQt MDYtMjEgMTg6NTE6NDcuMDAwMDAwMDAwICswMDAwCisrKyBuYXRpdmUvam5pL2NsYXNzcGF0 aC9qY2wuYwkyMDA0LTA2LTIxIDE5OjA2OjI4LjAwMDAwMDAwMCArMDAwMApAQCAtNDcsNyAr NDcsNyBAQAogI2VuZGlmCiAKIEpOSUVYUE9SVCB2b2lkIEpOSUNBTEwKLUpDTF9UaHJvd0V4 Y2VwdGlvbiAoSk5JRW52ICogZW52LCBjaGFyICpjbGFzc05hbWUsIGNoYXIgKmVyck1zZykK K0pDTF9UaHJvd0V4Y2VwdGlvbiAoSk5JRW52ICogZW52LCBjb25zdCBjaGFyICpjbGFzc05h bWUsIGNvbnN0IGNoYXIgKmVyck1zZykKIHsKICAgamNsYXNzIGV4Y0NsYXNzOwogICBpZiAo KCplbnYpLT5FeGNlcHRpb25PY2N1cnJlZCAoZW52KSkKQEAgLTcyLDkgKzcyLDkgQEAKIAkg ICAgICByZXR1cm47CiAJICAgIH0KIAl9Ci0gICAgICAvKiBSZW1vdmVkIHRoaXMgKG1vcmUg Y29tcHJlaGVuc2l2ZSkgZXJyb3Igc3RyaW5nIHRvIGF2b2lkIHRoZSBuZWVkIGZvciBhIAot ICAgICAgICogc3RhdGljIHZhcmlhYmxlIG9yIGFsbG9jYXRpb24gb2YgYSBidWZmZXIgZm9y IHRoaXMgbWVzc2FnZSBpbiB0aGlzICh1bmxpa2VseSkgCi0gICAgICAgKiBlcnJvciBjYXNl LiAtLUZyaWRpLiAKKyAgICAgIC8qIFJlbW92ZWQgdGhpcyAobW9yZSBjb21wcmVoZW5zaXZl KSBlcnJvciBzdHJpbmcgdG8gYXZvaWQgdGhlIG5lZWQgZm9yCisgICAgICAgKiBhIHN0YXRp YyB2YXJpYWJsZSBvciBhbGxvY2F0aW9uIG9mIGEgYnVmZmVyIGZvciB0aGlzIG1lc3NhZ2Ug aW4gdGhpcworICAgICAgICogKHVubGlrZWx5KSBlcnJvciBjYXNlLiAtLUZyaWRpLiAKICAg ICAgICAqCiAgICAgICAgKiBzcHJpbnRmKGVycnN0ciwiSkNMOiBGYWlsZWQgdG8gdGhyb3cg ZXhjZXB0aW9uICVzIHdpdGggbWVzc2FnZSAlczogY291bGQgbm90IGZpbmQgZXhjZXB0aW9u IGNsYXNzLiIsIGNsYXNzTmFtZSwgZXJyTXNnKTsgCiAgICAgICAgKi8KQEAgLTEzOSw3ICsx MzksNyBAQAogfQogCiBKTklFWFBPUlQgdm9pZCBKTklDQUxMCi1KQ0xfZnJlZV9jc3RyaW5n IChKTklFbnYgKiBlbnYsIGpzdHJpbmcgcywgY29uc3QgY2hhciAqY3N0cikKK0pDTF9mcmVl X2NzdHJpbmcgKEpOSUVudiAqIGVudiwganN0cmluZyBzLCBjaGFyICpjc3RyKQogewogICAo KmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LCBzLCBjc3RyKTsKIH0KQEAgLTE2 OSw3ICsxNjksNyBAQAogfQogCiBKTklFWFBPUlQgamNsYXNzIEpOSUNBTEwKLUpDTF9GaW5k Q2xhc3MgKEpOSUVudiAqIGVudiwgY2hhciAqY2xhc3NOYW1lKQorSkNMX0ZpbmRDbGFzcyAo Sk5JRW52ICogZW52LCBjb25zdCBjaGFyICpjbGFzc05hbWUpCiB7CiAgIGpjbGFzcyByZXR2 YWwgPSAoKmVudiktPkZpbmRDbGFzcyAoZW52LCBjbGFzc05hbWUpOwogICBpZiAocmV0dmFs ID09IE5VTEwpCi0tLSBuYXRpdmUvam5pL2NsYXNzcGF0aC9qY2wuaC5yZWZvcm1hdHRlZAky MDA0LTA2LTIxIDE4OjUxOjQ3LjAwMDAwMDAwMCArMDAwMAorKysgbmF0aXZlL2puaS9jbGFz c3BhdGgvamNsLmgJMjAwNC0wNi0yMSAxOTowODo0My4wMDAwMDAwMDAgKzAwMDAKQEAgLTQy LDE2ICs0MiwxNiBAQAogI2luY2x1ZGUgPGpuaS5oPgogI2luY2x1ZGUgPGNvbmZpZy5oPgog Ci1KTklFWFBPUlQgamNsYXNzIEpOSUNBTEwgSkNMX0ZpbmRDbGFzcyAoSk5JRW52ICogZW52 LCBjaGFyICpjbGFzc05hbWUpOwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKQ0xfVGhyb3dF eGNlcHRpb24gKEpOSUVudiAqIGVudiwgY2hhciAqY2xhc3NOYW1lLAotCQkJCQkgICBjaGFy ICplcnJNc2cpOworSk5JRVhQT1JUIGpjbGFzcyBKTklDQUxMIEpDTF9GaW5kQ2xhc3MgKEpO SUVudiAqIGVudiwgY29uc3QgY2hhciAqY2xhc3NOYW1lKTsKK0pOSUVYUE9SVCB2b2lkIEpO SUNBTEwgSkNMX1Rocm93RXhjZXB0aW9uIChKTklFbnYgKiBlbnYsCisJCQkJCSAgIGNvbnN0 IGNoYXIgKmNsYXNzTmFtZSwKKwkJCQkJICAgY29uc3QgY2hhciAqZXJyTXNnKTsKIEpOSUVY UE9SVCB2b2lkICpKTklDQUxMIEpDTF9tYWxsb2MgKEpOSUVudiAqIGVudiwgc2l6ZV90IHNp emUpOwogSk5JRVhQT1JUIHZvaWQgKkpOSUNBTEwgSkNMX3JlYWxsb2MgKEpOSUVudiAqIGVu diwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CiBKTklFWFBPUlQgdm9pZCBKTklDQUxMIEpD TF9mcmVlIChKTklFbnYgKiBlbnYsIHZvaWQgKnApOwogSk5JRVhQT1JUIGNvbnN0IGNoYXIg KkpOSUNBTEwgSkNMX2pzdHJpbmdfdG9fY3N0cmluZyAoSk5JRW52ICogZW52LAogCQkJCQkJ ICAgICAganN0cmluZyBzKTsKLUpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSkNMX2ZyZWVfY3N0 cmluZyAoSk5JRW52ICogZW52LCBqc3RyaW5nIHMsCi0JCQkJCSBjb25zdCBjaGFyICpjc3Ry KTsKK0pOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSkNMX2ZyZWVfY3N0cmluZyAoSk5JRW52ICog ZW52LCBqc3RyaW5nIHMsIGNoYXIgKmNzdHIpOwogSk5JRVhQT1JUIGppbnQgSk5JQ0FMTCBK Q0xfTW9uaXRvckVudGVyIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgbyk7CiBKTklFWFBPUlQg amludCBKTklDQUxMIEpDTF9Nb25pdG9yRXhpdCAoSk5JRW52ICogZW52LCBqb2JqZWN0IG8p OwogCi0tLSBuYXRpdmUvam5pL2NsYXNzcGF0aC9qbmlsaW5rLmMucmVmb3JtYXR0ZWQJMjAw NC0wNi0yMSAxODo1MTo0Ny4wMDAwMDAwMDAgKzAwMDAKKysrIG5hdGl2ZS9qbmkvY2xhc3Nw YXRoL2puaWxpbmsuYwkyMDA0LTA2LTIxIDE5OjE0OjAxLjAwMDAwMDAwMCArMDAwMApAQCAt NDUsNyArNDUsNyBAQAogI2RlZmluZSBHRVRDTEFTUyhjKSAqKGpjbGFzcyopKGMpCiAKIEpO SUVYUE9SVCBqY2xhc3MgSk5JQ0FMTAotTElOS19SZWxpbmtDbGFzcyAoSk5JRW52ICogZW52 LCBsaW5rZWRDbGFzcyAqIGMsIGNoYXIgKm5hbWUpCitMSU5LX1JlbGlua0NsYXNzIChKTklF bnYgKiBlbnYsIGxpbmtlZENsYXNzICogYywgY29uc3QgY2hhciAqbmFtZSkKIHsKICAgamNs YXNzIGZvdW5kOwogICBMSU5LX1VubGlua0NsYXNzIChlbnYsICpjKTsKQEAgLTc3LDcgKzc3 LDcgQEAKIAogSk5JRVhQT1JUIGptZXRob2RJRCBKTklDQUxMCiBMSU5LX1JlbGlua01ldGhv ZCAoSk5JRW52ICogZW52LCBqbWV0aG9kSUQgKiBtLCBsaW5rZWRDbGFzcyBjLAotCQkgICBj aGFyICpuYW1lLCBjaGFyICpzaWcpCisJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNo YXIgKnNpZykKIHsKICAgKm0gPSAoKmVudiktPkdldE1ldGhvZElEIChlbnYsIEdFVENMQVNT IChjKSwgbmFtZSwgc2lnKTsKICAgcmV0dXJuICptOwpAQCAtODUsNyArODUsNyBAQAogCiBK TklFWFBPUlQgam1ldGhvZElEIEpOSUNBTEwKIExJTktfUmVsaW5rU3RhdGljTWV0aG9kIChK TklFbnYgKiBlbnYsIGptZXRob2RJRCAqIG0sIGxpbmtlZENsYXNzIGMsCi0JCQkgY2hhciAq bmFtZSwgY2hhciAqc2lnKQorCQkJIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNp ZykKIHsKICAgKm0gPSAoKmVudiktPkdldFN0YXRpY01ldGhvZElEIChlbnYsIEdFVENMQVNT IChjKSwgbmFtZSwgc2lnKTsKICAgcmV0dXJuICptOwpAQCAtOTMsNyArOTMsNyBAQAogCiBK TklFWFBPUlQgamZpZWxkSUQgSk5JQ0FMTAogTElOS19SZWxpbmtGaWVsZCAoSk5JRW52ICog ZW52LCBqZmllbGRJRCAqIGYsIGxpbmtlZENsYXNzIGMsCi0JCSAgY2hhciAqbmFtZSwgY2hh ciAqc2lnKQorCQkgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNpZykKIHsKICAg KmYgPSAoKmVudiktPkdldEZpZWxkSUQgKGVudiwgR0VUQ0xBU1MgKGMpLCBuYW1lLCBzaWcp OwogICByZXR1cm4gKmY7CkBAIC0xMDEsNyArMTAxLDcgQEAKIAogSk5JRVhQT1JUIGpmaWVs ZElEIEpOSUNBTEwKIExJTktfUmVsaW5rU3RhdGljRmllbGQgKEpOSUVudiAqIGVudiwgamZp ZWxkSUQgKiBmLCBsaW5rZWRDbGFzcyBjLAotCQkJY2hhciAqbmFtZSwgY2hhciAqc2lnKQor CQkJY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc2lnKQogewogICAqZiA9ICgqZW52 KS0+R2V0U3RhdGljRmllbGRJRCAoZW52LCBHRVRDTEFTUyAoYyksIG5hbWUsIHNpZyk7CiAg IHJldHVybiAqZjsKLS0tIG5hdGl2ZS9qbmkvY2xhc3NwYXRoL2puaWxpbmsuaC5yZWZvcm1h dHRlZAkyMDA0LTA2LTIxIDE4OjUxOjQ3LjAwMDAwMDAwMCArMDAwMAorKysgbmF0aXZlL2pu aS9jbGFzc3BhdGgvam5pbGluay5oCTIwMDQtMDYtMjEgMTk6MTM6MDUuMDAwMDAwMDAwICsw MDAwCkBAIC01MywyNSArNTMsMjUgQEAKICNkZWZpbmUgTElOS19MaW5rQ29uc3RydWN0b3Io ZW52LG0sYyxzaWcpICAgICAgICgobSk9PU5VTEwgPyBMSU5LX1JlbGlua01ldGhvZCgoZW52 KSwmKG0pLChjKSwiPGluaXQ+Iiwoc2lnKSkgOiAobSkpCiAKIEpOSUVYUE9SVCBqY2xhc3Mg Sk5JQ0FMTAotTElOS19SZWFsbHlMaW5rQ2xhc3MgKEpOSUVudiAqIGVudiwgbGlua2VkQ2xh c3MgKiBjLCBjaGFyICpuYW1lKTsKK0xJTktfUmVhbGx5TGlua0NsYXNzIChKTklFbnYgKiBl bnYsIGxpbmtlZENsYXNzICogYywgY29uc3QgY2hhciAqbmFtZSk7CiBKTklFWFBPUlQgamNs YXNzIEpOSUNBTEwKIExJTktfUmVhbGx5TGlua0tub3duQ2xhc3MgKEpOSUVudiAqIGVudiwg bGlua2VkQ2xhc3MgKiBjLCBqY2xhc3MgbmV3Q2xhc3MpOwogSk5JRVhQT1JUIGpjbGFzcyBK TklDQUxMCi1MSU5LX1JlbGlua0NsYXNzIChKTklFbnYgKiBlbnYsIGxpbmtlZENsYXNzICog YywgY2hhciAqbmFtZSk7CitMSU5LX1JlbGlua0NsYXNzIChKTklFbnYgKiBlbnYsIGxpbmtl ZENsYXNzICogYywgY29uc3QgY2hhciAqbmFtZSk7CiBKTklFWFBPUlQgamNsYXNzIEpOSUNB TEwKIExJTktfUmVsaW5rS25vd25DbGFzcyAoSk5JRW52ICogZW52LCBsaW5rZWRDbGFzcyAq IGMsIGpjbGFzcyBuZXdDbGFzcyk7CiBKTklFWFBPUlQgam1ldGhvZElEIEpOSUNBTEwKIExJ TktfUmVsaW5rTWV0aG9kIChKTklFbnYgKiBlbnYsIGptZXRob2RJRCAqIG0sIGxpbmtlZENs YXNzIGMsCi0JCSAgIGNoYXIgKm5hbWUsIGNoYXIgKnNpZyk7CisJCSAgIGNvbnN0IGNoYXIg Km5hbWUsIGNvbnN0IGNoYXIgKnNpZyk7CiBKTklFWFBPUlQgam1ldGhvZElEIEpOSUNBTEwK IExJTktfUmVsaW5rU3RhdGljTWV0aG9kIChKTklFbnYgKiBlbnYsIGptZXRob2RJRCAqIG0s IGxpbmtlZENsYXNzIGMsCi0JCQkgY2hhciAqbmFtZSwgY2hhciAqc2lnKTsKKwkJCSBjb25z dCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzaWcpOwogSk5JRVhQT1JUIGpmaWVsZElEIEpO SUNBTEwKIExJTktfUmVsaW5rRmllbGQgKEpOSUVudiAqIGVudiwgamZpZWxkSUQgKiBmLCBs aW5rZWRDbGFzcyBjLAotCQkgIGNoYXIgKm5hbWUsIGNoYXIgKnNpZyk7CisJCSAgY29uc3Qg Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqc2lnKTsKIEpOSUVYUE9SVCBqZmllbGRJRCBKTklD QUxMCiBMSU5LX1JlbGlua1N0YXRpY0ZpZWxkIChKTklFbnYgKiBlbnYsIGpmaWVsZElEICog ZiwgbGlua2VkQ2xhc3MgYywKLQkJCWNoYXIgKm5hbWUsIGNoYXIgKnNpZyk7CisJCQljb25z dCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzaWcpOwogCiAvKiBUaGVzZSBhcmUgZm9yIHdo ZW4gdGhlIGNsYXNzIHJlZmVyZW5jaW5nIHRoZSBzeW1ib2xzIGlzIHVubG9hZGVkOyBpdAog ZGVzdHJveXMgYW55IG9iamVjdCByZWZlcmVuY2VzCi0tLSBuYXRpdmUvam5pL2NsYXNzcGF0 aC9wcmltbGliLmMucmVmb3JtYXR0ZWQJMjAwNC0wNi0yMSAxODo1MTo0Ny4wMDAwMDAwMDAg KzAwMDAKKysrIG5hdGl2ZS9qbmkvY2xhc3NwYXRoL3ByaW1saWIuYwkyMDA0LTA2LTIxIDE5 OjA5OjUzLjAwMDAwMDAwMCArMDAwMApAQCAtNTksNyArNTksNyBAQAogICBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMCiB9OwogCi1zdGF0aWMgY2hhciAqbmF0aXZlV3Jh cENsYXNzTmFtZVtQUklNTElCX05VTVRZUEVTXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICpu YXRpdmVXcmFwQ2xhc3NOYW1lW1BSSU1MSUJfTlVNVFlQRVNdID0gewogICBOVUxMLAogICBO VUxMLAogICAiamF2YS9sYW5nL0Jvb2xlYW4iLApAQCAtNzQsNyArNzQsNyBAQAogICBOVUxM CiB9OwogCi1zdGF0aWMgY2hhciAqbmF0aXZlV3JhcENsYXNzQ29uc3RydWN0b3JTaWdbUFJJ TUxJQl9OVU1UWVBFU10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqbmF0aXZlV3JhcENsYXNz Q29uc3RydWN0b3JTaWdbUFJJTUxJQl9OVU1UWVBFU10gPSB7CiAgIE5VTEwsCiAgIE5VTEws CiAgICIoWilWIiwKQEAgLTg5LDcgKzg5LDcgQEAKICAgTlVMTAogfTsKIAotc3RhdGljIGNo YXIgKm5hdGl2ZVdyYXBDbGFzc0FjY2Vzc29yTmFtZVtQUklNTElCX05VTVRZUEVTXSA9IHsK K3N0YXRpYyBjb25zdCBjaGFyICpuYXRpdmVXcmFwQ2xhc3NBY2Nlc3Nvck5hbWVbUFJJTUxJ Ql9OVU1UWVBFU10gPSB7CiAgIE5VTEwsCiAgIE5VTEwsCiAgICJib29sZWFuVmFsdWUiLApA QCAtMTA0LDcgKzEwNCw3IEBACiAgIE5VTEwKIH07CiAKLXN0YXRpYyBjaGFyICpuYXRpdmVX cmFwQ2xhc3NBY2Nlc3NvclNpZ1tQUklNTElCX05VTVRZUEVTXSA9IHsKK3N0YXRpYyBjb25z dCBjaGFyICpuYXRpdmVXcmFwQ2xhc3NBY2Nlc3NvclNpZ1tQUklNTElCX05VTVRZUEVTXSA9 IHsKICAgTlVMTCwKICAgTlVMTCwKICAgIigpWiIsCg== --------------000506080809040908030609-- From MAILER-DAEMON Mon Jun 21 15:38:10 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcUcM-0005Bk-7C for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 15:38:10 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcUcL-0005Bb-CE for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:38:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcUcJ-0005B6-NL for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:38:09 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcUcJ-0005Ay-KX for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:38:07 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcUb0-0000xi-A5 for commit-classpath@gnu.org; Mon, 21 Jun 2004 15:36:46 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5LJaWo99804; Mon, 21 Jun 2004 15:36:32 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LJagX50072; Mon, 21 Jun 2004 15:36:42 -0400 Received: from watson.ibm.com (bilbo.watson.ibm.com [9.2.32.197]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LJagf51424; Mon, 21 Jun 2004 15:36:42 -0400 Message-ID: <40D738C9.9080801@watson.ibm.com> Date: Mon, 21 Jun 2004 15:36:41 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: Michael Koch References: <40D71D11.6000802@watson.ibm.com> <200406211958.05106.konqueror@gmx.de> <40D7306F.9090808@watson.ibm.com> <200406212125.00313.konqueror@gmx.de> In-Reply-To: <200406212125.00313.konqueror@gmx.de> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: commit-classpath@gnu.org Subject: Re: libclasspath reformatting patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 19:38:09 -0000 Michael Koch wrote: > I think such things are obvious, please commit. (I forgot to say this > in my last mail, sorry) No problem. I've committed the reformatting patch and am about to commit the const-warnings patch. > Thanks for you work. You're most welcome. --Steve A -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm From MAILER-DAEMON Mon Jun 21 16:06:29 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcV3l-0003B2-Fq for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 16:06:29 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcV3j-00039d-5L for commit-classpath@gnu.org; Mon, 21 Jun 2004 16:06:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcV3g-00038X-Om for commit-classpath@gnu.org; Mon, 21 Jun 2004 16:06:26 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcV3g-00038L-Kb for commit-classpath@gnu.org; Mon, 21 Jun 2004 16:06:24 -0400 Received: from [212.6.122.115] (helo=mail1.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcV1f-0002jQ-Q1 for commit-classpath@gnu.org; Mon, 21 Jun 2004 16:04:20 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-93-099.ewetel.net [80.228.93.99]) by mail1.ewetel.de (8.12.1/8.12.9) with ESMTP id i5LK4FTa013674; Mon, 21 Jun 2004 22:04:15 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BcV6i-0003No-00; Mon, 21 Jun 2004 22:09:32 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Mon, 21 Jun 2004 22:05:47 +0200 User-Agent: KMail/1.6.2 References: <40D71D11.6000802@watson.ibm.com> <200406211958.05106.konqueror@gmx.de> <40D73735.60508@watson.ibm.com> In-Reply-To: <40D73735.60508@watson.ibm.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Message-Id: <200406212205.47539.konqueror@gmx.de> X-CheckCompat: OK Cc: Steven Augart Subject: Re: libclasspath const/non-const warnings (was: Re: fix const/non-const warnings in jcl.c, jcl.h) X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 20:06:27 -0000 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Montag, 21. Juni 2004 21:29 schrieb Steven Augart: A little nitpick: > -JCL_free_cstring (JNIEnv * env, jstring s, const char *cstr) > +JCL_free_cstring (JNIEnv * env, jstring s, char *cstr) > =A0{ > =A0 =A0(*env)->ReleaseStringUTFChars (env, s, cstr); > =A0} I would think "cstr" stands for "constant string" but you removed=20 "const". Perhaps you should rename "cstr" to "str". Michael =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA1z+bWSOgCCdjSDsRAslIAKCeYn1WTknxGMg6SiVglSwhPgP0MgCgi5rK rApuzNRmxRQh+XhtRKRThgg=3D =3DPqot =2D----END PGP SIGNATURE----- From MAILER-DAEMON Mon Jun 21 17:50:10 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BcWg6-0006CJ-Bv for mharc-commit-classpath@gnu.org; Mon, 21 Jun 2004 17:50:10 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BcWg4-0006Bu-B5 for commit-classpath@gnu.org; Mon, 21 Jun 2004 17:50:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BcWg2-0006BP-Mt for commit-classpath@gnu.org; Mon, 21 Jun 2004 17:50:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BcWg2-0006BI-Ja for commit-classpath@gnu.org; Mon, 21 Jun 2004 17:50:06 -0400 Received: from [129.34.20.6] (helo=igw2.watson.ibm.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BcWeI-0003Hk-9I for commit-classpath@gnu.org; Mon, 21 Jun 2004 17:48:18 -0400 Received: from sp1n294en1.watson.ibm.com (sp1n294en1.watson.ibm.com [129.34.20.40]) by igw2.watson.ibm.com (8.11.7-20030924/8.11.4) with ESMTP id i5LLm3o15026; Mon, 21 Jun 2004 17:48:03 -0400 Received: from sp1n294en1.watson.ibm.com (localhost [127.0.0.1]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LLmEX47892; Mon, 21 Jun 2004 17:48:14 -0400 Received: from watson.ibm.com (bilbo.watson.ibm.com [9.2.32.197]) by sp1n294en1.watson.ibm.com (8.11.7-20030924/8.11.7/8.11.7-01-14-2004) with ESMTP id i5LLmDf44838; Mon, 21 Jun 2004 17:48:13 -0400 Message-ID: <40D7579D.8060701@watson.ibm.com> Date: Mon, 21 Jun 2004 17:48:13 -0400 From: Steven Augart Organization: IBM Watson Research Ctr., Jikes RVM Project User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, it MIME-Version: 1.0 To: Michael Koch References: <40D71D11.6000802@watson.ibm.com> <200406211958.05106.konqueror@gmx.de> <40D73735.60508@watson.ibm.com> <200406212205.47539.konqueror@gmx.de> In-Reply-To: <200406212205.47539.konqueror@gmx.de> Content-Type: multipart/mixed; boundary="------------020203000208080400040000" Cc: commit-classpath@gnu.org Subject: Re: libclasspath const/non-const warnings X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2004 21:50:08 -0000 This is a multi-part message in MIME format. --------------020203000208080400040000 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Michael Koch wrote: >>-JCL_free_cstring (JNIEnv * env, jstring s, const char *cstr) >>+JCL_free_cstring (JNIEnv * env, jstring s, char *cstr) >> { >> (*env)->ReleaseStringUTFChars (env, s, cstr); >> } > > > I would think "cstr" stands for "constant string" but you removed > "const". Perhaps you should rename "cstr" to "str". Logically, you'd think so. But it's just the counter-part of JCL_jstring_to_cstring, which converts a Java string into a C string. Thus the "cstr". I converted it to take a non-const pointer because the underlying ReleaseStringUTFChars may call free() to release the memory. I am looking this over more carefully, though, and I see that the JNI spec defines GetStringUTFChars as returning a "const char *", and ReleaseStringUTFChars as taking a "const char *" -- presumably, because the designers thought there might be some VM out there that natively stores strings as UTF? So, that change was not appropriate, and I have backed it out. Thanks for catching this. --Steven -- Steven Augart Jikes RVM, a free, open source, Virtual Machine: http://oss.software.ibm.com/jikesrvm --------------020203000208080400040000 Content-Type: text/plain; name="jcl-free-cstring-back-to-const.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="jcl-free-cstring-back-to-const.patch" Q2hhbmdlTG9nIGVudHJ5OgoKMjAwNC0wNi0yMSAgU3RldmVuIEF1Z2FydCAgPGF1Z2FydEB3 YXRzb24uaWJtLmNvbT4KCgkqIG5hdGl2ZS9qbmkvY2xhc3NwYXRoL2pjbC5oLCBuYXRpdmUv am5pL2NsYXNzcGF0aC9qY2wuYwoJKEpDTF9mcmVlX2NzdHJpbmcpOiAiY3N0ciIgYXJndW1l bnQgYmFjayB0byBjb25zdC4KCkluZGV4OiBuYXRpdmUvam5pL2NsYXNzcGF0aC9qY2wuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9jbGFzc3BhdGgvY2xhc3NwYXRoL25h dGl2ZS9qbmkvY2xhc3NwYXRoL2pjbC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCmRp ZmYgLUkqLmNsYXNzIC11IC1yMS4xMCBqY2wuYwotLS0gbmF0aXZlL2puaS9jbGFzc3BhdGgv amNsLmMJMjEgSnVuIDIwMDQgMTk6Mzk6NDEgLTAwMDAJMS4xMAorKysgbmF0aXZlL2puaS9j bGFzc3BhdGgvamNsLmMJMjEgSnVuIDIwMDQgMjE6NDU6MTkgLTAwMDAKQEAgLTEzOSw3ICsx MzksNyBAQAogfQogCiBKTklFWFBPUlQgdm9pZCBKTklDQUxMCi1KQ0xfZnJlZV9jc3RyaW5n IChKTklFbnYgKiBlbnYsIGpzdHJpbmcgcywgY2hhciAqY3N0cikKK0pDTF9mcmVlX2NzdHJp bmcgKEpOSUVudiAqIGVudiwganN0cmluZyBzLCBjb25zdCBjaGFyICpjc3RyKQogewogICAo KmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LCBzLCBjc3RyKTsKIH0KSW5kZXg6 IG5hdGl2ZS9qbmkvY2xhc3NwYXRoL2pjbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j dnNyb290L2NsYXNzcGF0aC9jbGFzc3BhdGgvbmF0aXZlL2puaS9jbGFzc3BhdGgvamNsLmgs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOApkaWZmIC1JKi5jbGFzcyAtdSAtcjEuOCBqY2wu aAotLS0gbmF0aXZlL2puaS9jbGFzc3BhdGgvamNsLmgJMjEgSnVuIDIwMDQgMTk6Mzk6NDEg LTAwMDAJMS44CisrKyBuYXRpdmUvam5pL2NsYXNzcGF0aC9qY2wuaAkyMSBKdW4gMjAwNCAy MTo0NToxOSAtMDAwMApAQCAtNTEsNyArNTEsOCBAQAogSk5JRVhQT1JUIHZvaWQgSk5JQ0FM TCBKQ0xfZnJlZSAoSk5JRW52ICogZW52LCB2b2lkICpwKTsKIEpOSUVYUE9SVCBjb25zdCBj aGFyICpKTklDQUxMIEpDTF9qc3RyaW5nX3RvX2NzdHJpbmcgKEpOSUVudiAqIGVudiwKIAkJ CQkJCSAgICAgIGpzdHJpbmcgcyk7Ci1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEpDTF9mcmVl X2NzdHJpbmcgKEpOSUVudiAqIGVudiwganN0cmluZyBzLCBjaGFyICpjc3RyKTsKK0pOSUVY UE9SVCB2b2lkIEpOSUNBTEwgSkNMX2ZyZWVfY3N0cmluZyAoSk5JRW52ICogZW52LCBqc3Ry aW5nIHMsIAorCQkJCQkgY29uc3QgY2hhciAqY3N0cik7CiBKTklFWFBPUlQgamludCBKTklD QUxMIEpDTF9Nb25pdG9yRW50ZXIgKEpOSUVudiAqIGVudiwgam9iamVjdCBvKTsKIEpOSUVY UE9SVCBqaW50IEpOSUNBTEwgSkNMX01vbml0b3JFeGl0IChKTklFbnYgKiBlbnYsIGpvYmpl Y3Qgbyk7CiAK --------------020203000208080400040000-- From MAILER-DAEMON Tue Jun 22 00:09:43 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BccbP-00035S-1c for mharc-commit-classpath@gnu.org; Tue, 22 Jun 2004 00:09:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BccbL-00032T-M9 for commit-classpath@gnu.org; Tue, 22 Jun 2004 00:09:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BccbI-00030g-C8 for commit-classpath@gnu.org; Tue, 22 Jun 2004 00:09:38 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BccbI-0002za-8p for commit-classpath@gnu.org; Tue, 22 Jun 2004 00:09:36 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BccZv-00044C-Ad for commit-classpath@gnu.org; Tue, 22 Jun 2004 00:08:11 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 7B8DF62424 for ; Tue, 22 Jun 2004 04:08:10 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 92929-07 for ; Tue, 22 Jun 2004 04:08:09 +0000 (GMT) Received: from reali.dnsalias.net (212-41-77-134.adsl.solnet.ch [212.41.77.134]) by mail01.solnet.ch (Postfix) with ESMTP id 60C5562421 for ; Tue, 22 Jun 2004 04:08:09 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id ABE6C1042D7; Tue, 22 Jun 2004 06:04:39 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040622040439.ABE6C1042D7@reali.dnsalias.net> Date: Tue, 22 Jun 2004 06:04:39 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040622 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Jun 2004 04:09:40 -0000 From MAILER-DAEMON Tue Jun 22 18:02:19 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BctLP-0002xl-1A for mharc-commit-classpath@gnu.org; Tue, 22 Jun 2004 18:02:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BctLN-0002vz-HD for commit-classpath@gnu.org; Tue, 22 Jun 2004 18:02:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BctLN-0002vc-01 for commit-classpath@gnu.org; Tue, 22 Jun 2004 18:02:17 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BctLM-0002vV-TI for commit-classpath@gnu.org; Tue, 22 Jun 2004 18:02:16 -0400 Received: from [219.160.177.9] (helo=asao.gcd.org) by monty-python.gnu.org with smtp (Exim 4.34) id 1BctJz-0001ja-8r for commit-classpath@gnu.org; Tue, 22 Jun 2004 18:00:52 -0400 Received: (qmail 4902 invoked by uid 10); 23 Jun 2004 06:54:08 +0900 Received: (qmail 1942 invoked by uid 1000); 22 Jun 2004 21:53:45 -0000 Message-ID: <20040622215345.1941.qmail@maczuka.gcd.org> From: Ito Kazumitsu To: classpath@gnu.org, commit-classpath@gnu.org In-reply-to: Your message of "Wed, 16 Jun 2004 07:33:16 JST" References: <20040615223317.63173.qmail@maczuka.gcd.org> User-Agent: EMH/1.10.0 SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.2 (i386-unknown-freebsd4.7) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: text/plain; charset=US-ASCII Date: Wed, 23 Jun 2004 06:53:44 +0900 Sender: kaz@maczuka.gcd.org Cc: Subject: Re: Bug: java/text/MessageFormat.java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Jun 2004 22:02:17 -0000 >>>>> ":" == Ito Kazumitsu writes: :> Hi, :> As reported to the Kaffe mailing list: :> http://www.kaffe.org/pipermail/kaffe/2004-June/046657.html :> java/text/MessageFormat.java has a bug. :> :> This is my suggested patch. In addition to that, I found another difference between the API document and Classpath's implementation. I made some test cases for checking these bugs and updated the mauve test: gnu/testlet/java/text/MessageFormat/format.java. My patch follows. Changelog entry: 2004-06-22 Ito Kazumitsu * java/text/MessageFormat.java (formatInternal): Append "{n}" if argument n is unavailable. (format(Object, StringBuffer, FieldPosition)): This should be equivalent to format(Object[], StringBuffer, FieldPosition). --- java/text/MessageFormat.java.orig Mon May 10 00:17:30 2004 +++ java/text/MessageFormat.java Wed Jun 23 06:35:11 2004 @@ -157,7 +157,7 @@ * This is the attribute set for all characters produced * by MessageFormat during a formatting. */ - public static final MessageFormat.Field ARGUMENT = new Field("argument"); + public static final MessageFormat.Field ARGUMENT = new MessageFormat.Field("argument"); // For deserialization private Field() @@ -414,10 +414,13 @@ for (int i = 0; i < elements.length; ++i) { - if (elements[i].argNumber >= arguments.length) - throw new IllegalArgumentException("Not enough arguments given"); + Object thisArg = null; + boolean unavailable = false; + if (arguments == null || elements[i].argNumber >= arguments.length) + unavailable = true; + else + thisArg = arguments[elements[i].argNumber]; - Object thisArg = arguments[elements[i].argNumber]; AttributedCharacterIterator iterator = null; Format formatter = null; @@ -425,22 +428,27 @@ if (fp != null && i == fp.getField() && fp.getFieldAttribute() == Field.ARGUMENT) fp.setBeginIndex(appendBuf.length()); - if (elements[i].setFormat != null) - formatter = elements[i].setFormat; - else if (elements[i].format != null) + if (unavailable) + appendBuf.append("{" + elements[i].argNumber + "}"); + else { - if (elements[i].formatClass != null - && ! elements[i].formatClass.isInstance(thisArg)) - throw new IllegalArgumentException("Wrong format class"); + if (elements[i].setFormat != null) + formatter = elements[i].setFormat; + else if (elements[i].format != null) + { + if (elements[i].formatClass != null + && ! elements[i].formatClass.isInstance(thisArg)) + throw new IllegalArgumentException("Wrong format class"); - formatter = elements[i].format; + formatter = elements[i].format; + } + else if (thisArg instanceof Number) + formatter = NumberFormat.getInstance(locale); + else if (thisArg instanceof Date) + formatter = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale); + else + appendBuf.append(thisArg); } - else if (thisArg instanceof Number) - formatter = NumberFormat.getInstance(locale); - else if (thisArg instanceof Date) - formatter = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale); - else - appendBuf.append(thisArg); if (fp != null && fp.getField() == i && fp.getFieldAttribute() == Field.ARGUMENT) fp.setEndIndex(appendBuf.length()); @@ -497,28 +505,16 @@ /** * Returns the pattern with the formatted objects. + * This is equivalent to format((Object[]) singleArg, appendBuf, fpos) * - * @param source The object to be formatted. - * @param result The StringBuffer where the text is appened. + * @param singleArg The object to be formatted. + * @param appendBuf The StringBuffer where the text is appened. * @param fpos A FieldPosition object (it is ignored). */ public final StringBuffer format (Object singleArg, StringBuffer appendBuf, FieldPosition fpos) { - Object[] args; - - if (singleArg instanceof Object[]) - { - // This isn't specified in any manual, but it follows the - // JDK implementation. - args = (Object[]) singleArg; - } - else - { - args = new Object[1]; - args[0] = singleArg; - } - return format (args, appendBuf, fpos); + return format ((Object[])singleArg, appendBuf, fpos); } /** From MAILER-DAEMON Wed Jun 23 00:13:07 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bcz8F-0002ih-Jp for mharc-commit-classpath@gnu.org; Wed, 23 Jun 2004 00:13:07 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bcz8E-0002ib-4d for commit-classpath@gnu.org; Wed, 23 Jun 2004 00:13:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bcz8C-0002iG-74 for commit-classpath@gnu.org; Wed, 23 Jun 2004 00:13:05 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bcz8C-0002i6-52 for commit-classpath@gnu.org; Wed, 23 Jun 2004 00:13:04 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bcz6A-0004cV-D7 for commit-classpath@gnu.org; Wed, 23 Jun 2004 00:10:58 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 08E3662447 for ; Wed, 23 Jun 2004 04:10:57 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19957-04 for ; Wed, 23 Jun 2004 04:10:56 +0000 (GMT) Received: from reali.dnsalias.net (212-41-77-134.adsl.solnet.ch [212.41.77.134]) by mail01.solnet.ch (Postfix) with ESMTP id 9EFD86242B for ; Wed, 23 Jun 2004 04:10:55 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 014031032A4; Wed, 23 Jun 2004 06:07:25 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040623040725.014031032A4@reali.dnsalias.net> Date: Wed, 23 Jun 2004 06:07:25 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040623 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Jun 2004 04:13:06 -0000 From MAILER-DAEMON Wed Jun 23 11:28:03 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bd9fP-0005qP-Lc for mharc-commit-classpath@gnu.org; Wed, 23 Jun 2004 11:28:03 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bd9fN-0005q7-SQ for commit-classpath@gnu.org; Wed, 23 Jun 2004 11:28:01 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bd9fN-0005pn-2u for commit-classpath@gnu.org; Wed, 23 Jun 2004 11:28:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bd9fM-0005pk-Or for commit-classpath@gnu.org; Wed, 23 Jun 2004 11:28:00 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1Bd9cs-0002UO-50 for commit-classpath@gnu.org; Wed, 23 Jun 2004 11:25:26 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1Bd9eS-0002v9-VN for commit-classpath@gnu.org; Wed, 23 Jun 2004 11:27:05 -0400 From: "Stephen Crawley" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3159 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225 X-Apparently-From: 130.102.176.6 X-Copy-To: Array Message-Id: Date: Wed, 23 Jun 2004 11:28:01 -0400 Subject: [patch #3159] Fixes for bugs in gnu.java.nio.channels.FileChannelImpl.read/write X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Jun 2004 15:28:02 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3159] Full Item Snapshot: URL: Project: classpath Submitted by: Stephen Crawley On: Wed 06/23/2004 at 15:27 Category: None Priority: 5 - Normal Resolution: None Assigned to: None Originator Email: Status: Open Summary: Fixes for bugs in gnu.java.nio.channels.FileChannelImpl.read/write Original Submission: The three argument read and write native methods may throw IOException("Unexpected JNI error") when passed a zero byte buffer (and length 0). This is because the behaviour of the JNI GetByteArrayElements call is unspecified for a zero length array, and some VMs treat this as a JNI failure. The patch also fixes a possible memory leak in 'read' and a couple of possible segfaults in 'write', all caused by incorrect error handling. 2004-06-21 Stephen Crawley * native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c (Java_gnu_java_nio_channels_FileChannelImpl_read___3BII): handle zero length reads, and fix associated memory leak (Java_gnu_java_nio_channels_FileChannelImpl_write___3BII): handle zero length writes, and fix error handling bugs. CC List ------- CC Address | Comment ------------------------------------+----------------------------- stevenaugart | File Attachments ------------------- ------------------------------------------------------- Date: Wed 06/23/2004 at 15:27 Name: diffs Size: 1KB By: crawley http://savannah.gnu.org/patch/download.php?item_id=3159&item_file_id=3392 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Thu Jun 24 00:12:49 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BdLbV-0003Nt-6c for mharc-commit-classpath@gnu.org; Thu, 24 Jun 2004 00:12:49 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BdLbT-0003Nl-8T for commit-classpath@gnu.org; Thu, 24 Jun 2004 00:12:47 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BdLbR-0003NX-Q4 for commit-classpath@gnu.org; Thu, 24 Jun 2004 00:12:46 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BdLbR-0003NU-NO for commit-classpath@gnu.org; Thu, 24 Jun 2004 00:12:45 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BdLZg-0005Ne-EC for commit-classpath@gnu.org; Thu, 24 Jun 2004 00:10:56 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id DB40D6244A for ; Thu, 24 Jun 2004 04:10:55 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 44832-09 for ; Thu, 24 Jun 2004 04:10:55 +0000 (GMT) Received: from reali.dnsalias.net (212-41-71-55.adsl.solnet.ch [212.41.71.55]) by mail01.solnet.ch (Postfix) with ESMTP id BD1766242B for ; Thu, 24 Jun 2004 04:10:54 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 57987103285; Thu, 24 Jun 2004 06:07:24 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040624040724.57987103285@reali.dnsalias.net> Date: Thu, 24 Jun 2004 06:07:24 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040624 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Jun 2004 04:12:47 -0000 From MAILER-DAEMON Thu Jun 24 08:09:34 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BdT2s-0007Kd-Fi for mharc-commit-classpath@gnu.org; Thu, 24 Jun 2004 08:09:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BdT2r-0007KS-2e for commit-classpath@gnu.org; Thu, 24 Jun 2004 08:09:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BdT2o-0007K8-Js for commit-classpath@gnu.org; Thu, 24 Jun 2004 08:09:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BdT2o-0007K5-Ht for commit-classpath@gnu.org; Thu, 24 Jun 2004 08:09:30 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BdT0N-0006l4-2v for commit-classpath@gnu.org; Thu, 24 Jun 2004 08:06:59 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BdSzl-0001Qu-00; Thu, 24 Jun 2004 14:06:21 +0200 From: Mark Wielaard To: Steven Augart In-Reply-To: <40D72C9B.7070909@watson.ibm.com> References: <1087734735.1151.121.camel@elsschot.wildebeest.org> <40D72C9B.7070909@watson.ibm.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-/rj3LdUQshfledVQkcFF" Message-Id: <1088078792.14704.95.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Thu, 24 Jun 2004 14:06:32 +0200 Cc: commit-classpath@gnu.org Subject: Re: gtk-peer Makefile fixlets X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Jun 2004 12:09:33 -0000 --=-/rj3LdUQshfledVQkcFF Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, On Mon, 2004-06-21 at 20:44, Steven Augart wrote: > > We will include the generated .h file for now since most javah, gcjh > > implementations out there have some subtle bugs. Maybe when gcj 3.5 is > > out we can build them from source during build automatically again. > > I apologize for leaving out those changes to the Makefile.am files.=20 > It's the problem with having several uncommitted patches hanging fire=20 > simultaneously; I sometimes leave out files, and don't notice them for=20 > a while. No worries, it is easily detected and fixed. I was surprised that Michael his auto-builder didn't pick it up though. When adding/removing files it is a good idea to run 'make distcheck' before committing. It tries to create a fresh distribution tar ball and then building and installing that in/from a fresh new temporary directory. (Note that current automake and gnu tar don't work nicely together though. So you will have to make sure to have GNU tar =3D< 1.13.25 installed. This is being worked on according to the last automake release announcement.) Cheers, Mark --=-/rj3LdUQshfledVQkcFF Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA2sPIxVhZCJWr9QwRAjL7AJ4qJMUvn55C73pBsN1fohAXgKHiswCgoSS0 8ivojJf9VetK1v4xmPTEU4U= =SwK5 -----END PGP SIGNATURE----- --=-/rj3LdUQshfledVQkcFF-- From MAILER-DAEMON Thu Jun 24 13:22:38 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BdXvq-0007Bw-J2 for mharc-commit-classpath@gnu.org; Thu, 24 Jun 2004 13:22:38 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BdXvo-0007AZ-FE for commit-classpath@gnu.org; Thu, 24 Jun 2004 13:22:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BdXvm-0007AM-FC for commit-classpath@gnu.org; Thu, 24 Jun 2004 13:22:36 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BdXvm-0007AJ-DB for commit-classpath@gnu.org; Thu, 24 Jun 2004 13:22:34 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BdXuG-0005e2-BX for commit-classpath@gnu.org; Thu, 24 Jun 2004 13:21:00 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BdXtx-0002GT-00 for ; Thu, 24 Jun 2004 19:20:41 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-B6IH1oA/hZnvCuQkrZxy" Message-Id: <1088097652.2710.6.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Thu, 24 Jun 2004 19:20:52 +0200 Subject: Small static method call cleanup X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Jun 2004 17:22:36 -0000 --=-B6IH1oA/hZnvCuQkrZxy Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, here is a small static method call cleanup to silence a compiler warning. 2004-06-24 Mark Wielaard * gnu/java/nio/SelectorImpl.java (select): Call static Thread interrupted() method to clear interupt flag of our Thread. Committed. Cheers, Mark diff -u -r1.14 SelectorImpl.java --- gnu/java/nio/SelectorImpl.java 8 Jan 2004 08:43:37 -0000 =20 1.14 +++ gnu/java/nio/SelectorImpl.java 24 Jun 2004 17:19:23 -0000 @@ -261,7 +261,7 @@ if (unhandledWakeup) { unhandledWakeup =3D false; - selectThread.interrupted (); + Thread.interrupted (); } selectThread =3D null; } --=-B6IH1oA/hZnvCuQkrZxy Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA2w10xVhZCJWr9QwRAmfFAJ91LC/dIQXIUafsFFJk4LitZPWWbwCfQbEK qLcpWiRvCo++JuMd9bHgDJ8= =NZ19 -----END PGP SIGNATURE----- --=-B6IH1oA/hZnvCuQkrZxy-- From MAILER-DAEMON Fri Jun 25 00:09:47 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bdi27-0002WL-Mz for mharc-commit-classpath@gnu.org; Fri, 25 Jun 2004 00:09:47 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bdi26-0002WD-K5 for commit-classpath@gnu.org; Fri, 25 Jun 2004 00:09:46 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bdi25-0002W1-2P for commit-classpath@gnu.org; Fri, 25 Jun 2004 00:09:46 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bdi24-0002Vy-V3 for commit-classpath@gnu.org; Fri, 25 Jun 2004 00:09:45 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bdi0S-0000Vn-SN for commit-classpath@gnu.org; Fri, 25 Jun 2004 00:08:05 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 7A8BC62472 for ; Fri, 25 Jun 2004 04:07:51 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 63566-01 for ; Fri, 25 Jun 2004 04:07:50 +0000 (GMT) Received: from reali.dnsalias.net (212-41-71-55.adsl.solnet.ch [212.41.71.55]) by mail01.solnet.ch (Postfix) with ESMTP id 4213B62461 for ; Fri, 25 Jun 2004 04:07:49 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 8A5C41047D8; Fri, 25 Jun 2004 06:04:17 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040625040417.8A5C41047D8@reali.dnsalias.net> Date: Fri, 25 Jun 2004 06:04:17 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040625 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Jun 2004 04:09:46 -0000 From MAILER-DAEMON Fri Jun 25 10:33:30 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bdrli-00067D-As for mharc-commit-classpath@gnu.org; Fri, 25 Jun 2004 10:33:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bdrlg-00066c-Qu for commit-classpath@gnu.org; Fri, 25 Jun 2004 10:33:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bdrle-00065k-Us for commit-classpath@gnu.org; Fri, 25 Jun 2004 10:33:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bdrle-00065T-RK for commit-classpath@gnu.org; Fri, 25 Jun 2004 10:33:26 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bdrk9-0004Ex-NG for commit-classpath@gnu.org; Fri, 25 Jun 2004 10:31:54 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1Bdrjp-0005V1-00 for ; Fri, 25 Jun 2004 16:31:33 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-iPbC8uPCYGSEnmEVKk90" Message-Id: <1088173902.2712.42.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Fri, 25 Jun 2004 16:31:42 +0200 Subject: FYI: FilePermission constructor argument checks X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Jun 2004 14:33:29 -0000 --=-iPbC8uPCYGSEnmEVKk90 Content-Type: multipart/mixed; boundary="=-x0zNN6cbjLjqzxySYXCA" --=-x0zNN6cbjLjqzxySYXCA Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, The following adds explicit argument checking to the FilePermission constructor. 2004-06-25 Mark Wielaard * java/io/FilePermission.java (usingPerms): Removed. (actionsString): Made final. (cachePerms): Renamed to checkPerms. (checkPerms): Renamed from cachePerms. Call trim() and toLowerCase() on action String. (FilePermission): Check arguments, call checkPerms(). (equals): Remove cachePerms() call. (implies): Likewise. The following fixes some new mauve tests that were recently added. Committed. Cheers, Mark --=-x0zNN6cbjLjqzxySYXCA Content-Disposition: inline; filename=FilePermission.patch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=FilePermission.patch; charset=ISO-8859-1 SW5kZXg6IGphdmEvaW8vRmlsZVBlcm1pc3Npb24uamF2YQ0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6 IC9jdnNyb290L2NsYXNzcGF0aC9jbGFzc3BhdGgvamF2YS9pby9GaWxlUGVybWlzc2lvbi5qYXZh LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNQ0KZGlmZiAtdSAtcjEuMTUgRmlsZVBlcm1pc3Np b24uamF2YQ0KLS0tIGphdmEvaW8vRmlsZVBlcm1pc3Npb24uamF2YQkyMyBBcHIgMjAwNCAyMTox MzoyMCAtMDAwMAkxLjE1DQorKysgamF2YS9pby9GaWxlUGVybWlzc2lvbi5qYXZhCTI1IEp1biAy MDA0IDE0OjMxOjE2IC0wMDAwDQpAQCAtMSw1ICsxLDUgQEANCiAvKiBqYXZhLmxhbmcuRmlsZVBl cm1pc3Npb24NCi0gICBDb3B5cmlnaHQgKEMpIDE5OTgsIDIwMDAsIDIwMDMgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorICAgQ29weXJpZ2h0IChDKSAxOTk4LCAyMDAwLCAyMDAzLCAy MDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KIA0KIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdOVSBDbGFzc3BhdGguDQogDQpAQCAtNDYsMjMgKzQ2LDIxIEBADQogDQogICBwcml2YXRl IHN0YXRpYyBmaW5hbCBTdHJpbmcgQ1VSUkVOVF9ESVJFQ1RPUlkgPSANCiAgICAgU3lzdGVtLmdl dFByb3BlcnR5KCJ1c2VyLmRpciIpOw0KLSAgcHJpdmF0ZSBib29sZWFuIHVzaW5nUGVybXMgPSBm YWxzZTsNCiAgIHByaXZhdGUgYm9vbGVhbiByZWFkUGVybSA9IGZhbHNlOw0KICAgcHJpdmF0ZSBi b29sZWFuIHdyaXRlUGVybSA9IGZhbHNlOw0KICAgcHJpdmF0ZSBib29sZWFuIGV4ZWN1dGVQZXJt ID0gZmFsc2U7DQogICBwcml2YXRlIGJvb2xlYW4gZGVsZXRlUGVybSA9IGZhbHNlOw0KLSAgcHJp dmF0ZSBTdHJpbmcgYWN0aW9uc1N0cmluZzsNCisgIHByaXZhdGUgZmluYWwgU3RyaW5nIGFjdGlv bnNTdHJpbmc7DQogICANCi0gIHByaXZhdGUgdm9pZCBjYWNoZVBlcm1zKCkgDQorICAvLyBDaGVj a3MgYW5kIGNhY2hlcyB0aGUgYWN0aW9ucw0KKyAgcHJpdmF0ZSB2b2lkIGNoZWNrUGVybXMoKSB0 aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uDQogICB7DQotICAgIC8vIFdoaWxlIHJhY2Ug Y29uZGl0aW9ucyBjb3VsZCBvY2N1ciwgdGhleSBkb24ndCBtYXR0ZXIgYXQgYWxsLg0KLSAgICAN CiAgICAgU3RyaW5nIGFjdGlvbjsNCiAgICAgaW50IGkgPSBhY3Rpb25zU3RyaW5nLmluZGV4T2Yo JywnKTsNCiAgICAgaW50IHN0YXJ0SSA9IDA7DQogICAgIHdoaWxlKGkgIT0gLTEpIA0KICAgICAg IHsNCi0gICAgICAgIGFjdGlvbiA9IGFjdGlvbnNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0SSxpKTsN CisgICAgICAgIGFjdGlvbiA9IGFjdGlvbnNTdHJpbmcuc3Vic3RyaW5nKHN0YXJ0SSxpKS50cmlt KCkudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgIGlmKGFjdGlvbi5lcXVhbHMoInJlYWQiKSkNCiAg ICAgICAgICAgcmVhZFBlcm0gPSB0cnVlOw0KICAgICAgICAgZWxzZSBpZihhY3Rpb24uZXF1YWxz KCJ3cml0ZSIpKQ0KQEAgLTcxLDEyICs2OSwxNCBAQA0KICAgICAgICAgICBleGVjdXRlUGVybSA9 IHRydWU7DQogICAgICAgICBlbHNlIGlmKGFjdGlvbi5lcXVhbHMoImRlbGV0ZSIpKQ0KICAgICAg ICAgICBkZWxldGVQZXJtID0gdHJ1ZTsNCisJZWxzZQ0KKwkgIHRocm93IG5ldyBJbGxlZ2FsQXJn dW1lbnRFeGNlcHRpb24oIlVua25vd24gYWN0aW9uOiAiICsgYWN0aW9uKTsNCiAgICAgICANCiAg ICAgICAgIHN0YXJ0SSA9IGkrMTsNCiAgICAgICAgIGkgPSBhY3Rpb25zU3RyaW5nLmluZGV4T2Yo JywnLHN0YXJ0SSk7DQogICAgICAgfQ0KICAgICANCi0gICAgYWN0aW9uID0gYWN0aW9uc1N0cmlu Zy5zdWJzdHJpbmcoc3RhcnRJKTsNCisgICAgYWN0aW9uID0gYWN0aW9uc1N0cmluZy5zdWJzdHJp bmcoc3RhcnRJKS50cmltKCkudG9Mb3dlckNhc2UoKTsNCiAgICAgaWYoYWN0aW9uLmVxdWFscygi cmVhZCIpKQ0KICAgICAgIHJlYWRQZXJtID0gdHJ1ZTsNCiAgICAgZWxzZSBpZihhY3Rpb24uZXF1 YWxzKCJ3cml0ZSIpKQ0KQEAgLTg1LDE5ICs4NSwzMCBAQA0KICAgICAgIGV4ZWN1dGVQZXJtID0g dHJ1ZTsNCiAgICAgZWxzZSBpZihhY3Rpb24uZXF1YWxzKCJkZWxldGUiKSkNCiAgICAgICBkZWxl dGVQZXJtID0gdHJ1ZTsNCisgICAgZWxzZQ0KKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1l bnRFeGNlcHRpb24oIlVua25vd24gYWN0aW9uOiAiICsgYWN0aW9uKTsNCiAgIH0NCiAgIA0KLSAg LyoqIENyZWF0ZSBhIG5ldyBGaWxlUGVybWlzc2lvbi4NCi0gICAqKiBAcGFyYW0gcGF0aEV4cHJl c3Npb24gYW4gZXhwcmVzc2lvbiBzcGVjaWZ5aW5nIHRoZSBwYXRocyB0aGlzDQotICAgKiogICAg ICAgIHBlcm1pc3Npb24gcmVwcmVzZW50cy4NCi0gICAqKiBAcGFyYW0gYWN0aW9uc1N0cmluZyBh IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBhY3Rpb25zIHRoaXMNCi0gICAqKiAgICAgICAg cGVybWlzc2lvbiByZXByZXNlbnRzLg0KLSAgICoqIEZJWE1FOiB3aGF0IHRvIGRvIHdoZW4gdGhl IGZpbGUgc3RyaW5nIGlzIG1hbGZvcm1lZD8NCi0gICAqKi8NCisgIC8qDQorICAgKiBDcmVhdGUg YSBuZXcgRmlsZVBlcm1pc3Npb24uDQorICAgKg0KKyAgICogQHBhcmFtIHBhdGhFeHByZXNzaW9u IGFuIGV4cHJlc3Npb24gc3BlY2lmeWluZyB0aGUgcGF0aHMgdGhpcw0KKyAgICogICAgICAgIHBl cm1pc3Npb24gcmVwcmVzZW50cy4NCisgICAqIEBwYXJhbSBhY3Rpb25zU3RyaW5nIGEgY29tbWEt c2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGFjdGlvbnMgdGhpcw0KKyAgICogICAgICAgIHBlcm1pc3Np b24gcmVwcmVzZW50cy4gVGhlIGFjdGlvbnMgbXVzdCBiZSAicmVhZCIsICJ3cml0ZSIsDQorICAg KiAgICAgICAgImV4ZWN1dGUiIGFuZC9vciAiZGVsZXRlIi4NCisgICAqDQorICAgKiBGSVhNRTog d2hhdCB0byBkbyB3aGVuIHRoZSBmaWxlIHN0cmluZyBpcyBtYWxmb3JtZWQ/DQorICAgKi8NCiAg IHB1YmxpYyBGaWxlUGVybWlzc2lvbihTdHJpbmcgcGF0aEV4cHJlc3Npb24sIFN0cmluZyBhY3Rp b25zU3RyaW5nKSANCiAgIHsNCiAgICAgc3VwZXIocGF0aEV4cHJlc3Npb24pOw0KKyAgICBpZiAo cGF0aEV4cHJlc3Npb24gPT0gbnVsbCkNCisgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNl cHRpb24oInBhdGhFeHByZXNzaW9uIik7DQorICAgIGlmIChhY3Rpb25zU3RyaW5nID09IG51bGwp DQorICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiYWN0aW9uc1N0cmlu ZyIpOw0KICAgICB0aGlzLmFjdGlvbnNTdHJpbmcgPSBhY3Rpb25zU3RyaW5nOw0KKyAgICBjaGVj a1Blcm1zKCk7DQogICB9DQogICANCiAgIC8qKiBHZXQgdGhlIGFjdGlvbnMgdGhpcyBGaWxlUGVy bWlzc2lvbiBzdXBwb3J0cy4NCkBAIC0xMzIsMTAgKzE0Myw2IEBADQogICAgIGlmKCEobyBpbnN0 YW5jZW9mIEZpbGVQZXJtaXNzaW9uKSkNCiAgICAgICByZXR1cm4gZmFsc2U7DQogICAgIEZpbGVQ ZXJtaXNzaW9uIHAgPSAoRmlsZVBlcm1pc3Npb24pbzsNCi0gICAgaWYoIXVzaW5nUGVybXMpDQot ICAgICAgY2FjaGVQZXJtcygpOw0KLSAgICBpZighcC51c2luZ1Blcm1zKQ0KLSAgICAgIHAuY2Fj aGVQZXJtcygpOw0KICAgICANCiAgICAgU3RyaW5nIGYxID0gZ2V0TmFtZSgpOw0KICAgICBTdHJp bmcgZjIgPSBwLmdldE5hbWUoKTsNCkBAIC0yODMsMTEgKzI5MCw2IEBADQogICAgICAgICAgYnJl YWs7DQogICAgICAgfQ0KICAgICANCi0gICAgaWYoIXVzaW5nUGVybXMpDQotICAgICAgY2FjaGVQ ZXJtcygpOw0KLSAgICBpZighZnAudXNpbmdQZXJtcykNCi0gICAgICBmcC5jYWNoZVBlcm1zKCk7 DQotICAgIA0KICAgICBpZihyZWFkUGVybSAmJiAhZnAucmVhZFBlcm0pDQogICAgICAgcmV0dXJu IGZhbHNlOw0KICAgICBpZih3cml0ZVBlcm0gJiYgIWZwLndyaXRlUGVybSkNCg== --=-x0zNN6cbjLjqzxySYXCA-- --=-iPbC8uPCYGSEnmEVKk90 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3DdOxVhZCJWr9QwRAi3gAJsHCKAf4xCpZj5t9619HFAlhECRjgCfYtS3 PntJ9C17UPYtT783QIKAowQ= =ZwJv -----END PGP SIGNATURE----- --=-iPbC8uPCYGSEnmEVKk90-- From MAILER-DAEMON Sat Jun 26 00:11:32 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Be4XM-0003yV-K1 for mharc-commit-classpath@gnu.org; Sat, 26 Jun 2004 00:11:32 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Be4XL-0003yQ-F8 for commit-classpath@gnu.org; Sat, 26 Jun 2004 00:11:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Be4XF-0003xp-05 for commit-classpath@gnu.org; Sat, 26 Jun 2004 00:11:31 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Be4XE-0003xf-US for commit-classpath@gnu.org; Sat, 26 Jun 2004 00:11:24 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Be4V9-0007SQ-2Z for commit-classpath@gnu.org; Sat, 26 Jun 2004 00:09:15 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 8D3A162493 for ; Sat, 26 Jun 2004 04:09:03 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 87519-07 for ; Sat, 26 Jun 2004 04:09:02 +0000 (GMT) Received: from reali.dnsalias.net (212-41-71-55.adsl.solnet.ch [212.41.71.55]) by mail01.solnet.ch (Postfix) with ESMTP id 6E24762472 for ; Sat, 26 Jun 2004 04:09:02 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 1D0CA107F60; Sat, 26 Jun 2004 06:05:28 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040626040528.1D0CA107F60@reali.dnsalias.net> Date: Sat, 26 Jun 2004 06:05:28 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040626 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Jun 2004 04:11:31 -0000 From MAILER-DAEMON Sat Jun 26 07:39:23 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeBWk-0002zZ-Uf for mharc-commit-classpath@gnu.org; Sat, 26 Jun 2004 07:39:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeBWj-0002zN-Gu for commit-classpath@gnu.org; Sat, 26 Jun 2004 07:39:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeBWi-0002zB-0c for commit-classpath@gnu.org; Sat, 26 Jun 2004 07:39:21 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeBWh-0002z8-U4 for commit-classpath@gnu.org; Sat, 26 Jun 2004 07:39:19 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BeBUk-0004Fu-HG for commit-classpath@gnu.org; Sat, 26 Jun 2004 07:37:19 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BeBUH-0000M1-00; Sat, 26 Jun 2004 13:36:49 +0200 From: Mark Wielaard To: Anthony Green In-Reply-To: <1088179403.2785.39.camel@to-dhcp2.toronto.redhat.com> References: <1086759992.2960.14.camel@localhost.localdomain> <200406090756.52273.konqueror@gmx.de> <1086807765.2819.17.camel@dhcp-172-16-25-229.sfbay.redhat.com> <1088178540.2710.71.camel@localhost> <1088179403.2785.39.camel@to-dhcp2.toronto.redhat.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-kLJyldBjuwSKZ6jzuUrQ" Message-Id: <1088249817.2708.89.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sat, 26 Jun 2004 13:36:57 +0200 Cc: commit-classpath@gnu.org Subject: Re: Patch: ZipFile.getInputStream shouldn't throw NoSuchElement. X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Jun 2004 11:39:21 -0000 --=-kLJyldBjuwSKZ6jzuUrQ Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, On Fri, 2004-06-25 at 18:03, Anthony Green wrote: > > So lets go for what Anthony proposes. Return null and document it. >=20 > I've already checked a patch into libgcj with this comment: OK. Also checked into GNU Classpath CVS now as: 2004-06-25 Anthony Green * java/util/zip/ZipFile.java (getInputStream): Return null if entry not found. Thanks, Mark --- java/util/zip/ZipFile.java 25 Nov 2003 22:29:52 -0000 1.15 +++ java/util/zip/ZipFile.java 26 Jun 2004 11:34:06 -0000 @@ -408,8 +408,18 @@ * uncompressed data. Normally zip entry should be an entry * returned by getEntry() or entries(). * + * This implementation returns null if the requested entry does not + * exist. This decision is not obviously correct, however, it does + * appear to mirror Sun's implementation, and it is consistant with + * their javadoc. On the other hand, the old JCL book, 2nd Edition, + * claims that this should return a "non-null ZIP entry". We have + * chosen for now ignore the old book, as modern versions of Ant (an + * important application) depend on this behaviour. See discussion + * in this thread: + * http://gcc.gnu.org/ml/java-patches/2004-q2/msg00602.html + * * @param entry the entry to create an InputStream for. - * @return the input stream. + * @return the input stream, or null if the requested entry does not exi= st. * * @exception IOException if a i/o error occured. * @exception ZipException if the Zip archive is malformed. @@ -420,7 +430,7 @@ String name =3D entry.getName(); ZipEntry zipEntry =3D (ZipEntry) entries.get(name); if (zipEntry =3D=3D null) - throw new NoSuchElementException(name); + return null; long start =3D checkLocalHeader(zipEntry); int method =3D zipEntry.getMethod(); --=-kLJyldBjuwSKZ6jzuUrQ Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3V/ZxVhZCJWr9QwRAnUpAKCvljwFqgraWixE8X1tCl3bhvBsAQCeMga0 ON4KrDfOlh9/prSXXLzIeJM= =x5g0 -----END PGP SIGNATURE----- --=-kLJyldBjuwSKZ6jzuUrQ-- From MAILER-DAEMON Sat Jun 26 12:13:26 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeFny-0006M1-PZ for mharc-commit-classpath@gnu.org; Sat, 26 Jun 2004 12:13:26 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeFnx-0006Ln-Ba for commit-classpath@gnu.org; Sat, 26 Jun 2004 12:13:25 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeFnw-0006Lb-5w for commit-classpath@gnu.org; Sat, 26 Jun 2004 12:13:25 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeFnw-0006LY-1y for commit-classpath@gnu.org; Sat, 26 Jun 2004 12:13:24 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BeFm2-0006Vd-Fm for commit-classpath@gnu.org; Sat, 26 Jun 2004 12:11:27 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BeFli-000136-00 for ; Sat, 26 Jun 2004 18:11:06 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-FqyQIZqpIpcLCycMAHpa" Message-Id: <1088266274.2710.196.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sat, 26 Jun 2004 18:11:14 +0200 Subject: Merged latest gcj gui drop X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Jun 2004 16:13:25 -0000 --=-FqyQIZqpIpcLCycMAHpa Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi all, I just finished and committed the latest gui drop from gcj. Below just the cleaned up ChangeLog as described here: http://gcc.gnu.org/ml/java-patches/2004-q2/msg00816.html The only real diff from the original is the small BasicMenuUI tweak described here: http://gcc.gnu.org/ml/java-patches/2004-q2/msg00815.html The rest of the patch is just like the one posted by Graydon here: http://gcc.gnu.org/ml/java-patches/2004-q2/msg00707.html I am pretty happy with this new gui drop. Everything that worked seems to still work :) MegaMek work a little better now. And fonts look much smoother in both AWT and Swing. Cheers, Mark 2004-06-26 Mark Wielaard * include/gnu_java_awt_peer_gtk_GdkFontMetrics.h: Regenerated. * javax/swing/plaf/basic/BasicMenuUI.java (mousePressed): Don't call protected JMenu methods fireMenuCanceled() and fireMenuSelected(). * javax/swing/Makefile.am (EXTRA_DIST): Add jTextArea. * javax/swing/plaf/basic/Makefile.am (EXTRA_DIST): Add BasicDesktopIconUI.java, BasicDesktopPaneUI.java, BasicInternalFrameTitlePane.java, BasicInternalFrameUI.java, BasicPopupMenuSeparatorUI.java and BasicToolBarUI.java. 2004-06-26 Graydon Hoare * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c: Fix up non-ansi comments. 2004-06-26 Ranjit Mathew * javax/swing/text/AbstractDocument.java: Adding missing import for javax.swing.event.EventListenerList. * javax/swing/text/DefaultCaret.java: Likewise. 2004-06-26 Michael Koch * javax/swing/JToolBar.java (name): Removed. (JToolBar): Use Component.setName(String) instead of doing it all alone. * javax/swing/Timer.java (queueEvent): Added missing modifier. 2004-06-26 Olga Rodimina * javax/swing/JMenu.java: (insertSeparator): Implemented. * javax/swing/JPopupMenu.java: (JPopupMenu.Separator): Implemented. * javax/swing/MenuSelectionManager.java: (processMouseEvent): Use java.awt.Component=20 for event source instead of javax.swing.JComponent.=20 * javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java: New File. Implemented. =09 2004-06-26 David Jee * java/awt/GridBagLayout.java (GetLayoutInfo): Adjust cell sizes iff parent size is not zero. Make sure pos_x and pos_y are never negative. 2004-06-26 Andrew Overholt * javax/swing/JToolBar.java Partially implemented. * javax/swing/plaf/basic/BasicToolBarUI.java New file. Partially implemented. 2004-06-26 Graydon Hoare * gnu/java/awt/peer/gtk/GdkGraphics2D.java=20 (setComposite): Accept AlphaComposite arguments. * gnu/java/awt/peer/gtk/GdkPixbufDecoder.java (createBufferedImage): Add new overloads. * gnu/java/awt/peer/gtk/GtkToolkit.java (createImage): Use GdkPixbufDecoder.createBufferedImage when useGraphics2D() is true. (getImage): Delegate to createImage. * javax/swing/JList.java (isSelectionEmpty): (getFirstVisibleIndex): (getLastVisibleIndex): (setSelectedValue): (ensureIndexIsVisible): New methods. * javax/swing/Timer.java: Reimplement. 2004-06-26 Michael Koch * javax/swing/text/AbstractDocument.java (AbstracElement): Made public, implements java.io.Serializable. (AttributeContext): Made public. (BranchElement): Likewise. (Content): Likewise. (DefaultDocumentEvent): Made public, extends javax.swing.undo.CompoundEdit. (ElementEdit): Made public, extends javax.swing.undo.AbstractUndoableEdit. (LeafElement): Made public. (LeafElement.LeafElement): Made public. 2004-06-26 Michael Koch * javax/swing/text/JTextComponent.java: Totally reworked. Removed many methods (that were obviously never be intended to get included hi this class. Added some methods too. 2004-06-26 Michael Koch * javax/swing/text/PlainDocument.java (serialVersionUID): New constant. (lineLimitAttribute): Likewise. (tabSizeAttribute): Likewise. (tabSize): New field. (PlainDocument): Made public. (PlainDocument): New constructor. 2004-06-26 Michael Koch * javax/swing/text/AbstractDocument.java (insertString): Throws BadLocationException. * javax/swing/text/Document.java (insertString): Likewise. * javax/swing/text/JTextComponent.java: Javadocs and comments cleaned up. 2004-06-26 Michael Koch * javax/swing/event/UndoableEditListener.java: Reformatted. * javax/swing/text/AbstractDocument.java (AbstractDocument): Implements java.io.Serializable. (doc_list): Removed. (undo_list): Removed. (AbstractElement.serialVerionUID): New field. (BranchElement.serialVerionUID): Likewise. (DefaultDocumentEvent.serialVerionUID): Likewise. (ElementEdit.serialVerionUID): Likewise. (LeafElement.serialVerionUID): Likewise. (serialVerionUID): Likewise. (BAD_LOCATION): New constant. (BidiElementName): Likewise. (ContentElementName): Likewise. (ParagraphElementName): Likewise. (SectionElementName): Likewise. (ElementNameAttribute): Likewise. (AbstractDocument): Made protected. (AbstractDocument): New construtor. (listenerList): New field. (fireChangedUpdate): Implemented. (fireInsertUpdate): Likewise. (fireRemoveUpdate): Likewise. (fireUndoableEditUpdate): Likewise. (getListeners): Likewise. (addDocumentListener): Likewise. (removeDocumentListener): Likewise. (addUndoableEditListener): Likewise. (removeUndoableEditListener): Likewise. (getDocumentListeners): New method. (getUndoableEditListeners): Likewise. (getAsynchronousLoadPriority): Made public. (getBidiRootElement): Likewise. (setAsynchronousLoadPriority): Likewise. (setDocumentProperties): Likewise. * javax/swing/text/BadLocationException.java (serialVerionUID): New field. * javax/swing/text/DefaultCaret.java (changeEvent): New field. (listenerList): Likewise. (changes): Removed. (addChangeListener): Reimplemented. (removeChangeListener): Likewise. (getListeners): New method. (getChangeListeners): Likwise. (getComponent): Likewise. * javax/swing/text/GapContent.java (GapContent): Implements java.io.Serializable. (serialVerionUID): New field. 2004-06-26 Michael Koch * javax/swing/JTree.java (treeModel): New field. (JTree): New constructors, one existing one made public. (createTreeModel): New method. (addTreeExpansionListener): Likewise. (removeTreeExpansionListener): Likewise. (getTreeExpansionListeners): Likewise. (fireTreeCollapsed): Likewise. (fireTreeExpanded): Likewise. (addTreeSelectionListener): Likewise. (removeTreeSelectionListener): Likewise. (getTreeSelectionListeners): Likewise. (fireValueChanged): Likewise. (addTreeWillExpandListener): Likewise. (removeTreeWillExpandListener): Likewise. (getTreeWillExpandListeners): Likewise. (fireTreeWillCollapse): Likewise. (fireTreeWillExpand): Likewise. 2004-06-26 Michael Koch * javax/swing/JTree.java: Reformatted. 2004-06-26 Michael Koch * javax/swing/JTextArea.java: New file. * javax/swing/JTextField.java (actions): Removed. (notifyAction): New constant. (columns): New field. (JTextField): New constructors. (createDefaultModel): New method. (addActionListener): Reimplmemented. (removeActionListener): Reimplemented. (getActionListeners): New method. (fireActionPerformed): New method. (getColumns): New method. (setColumne): New method. * javax/swing/text/JTextComponent.java (AccessibleJTextComponent.serialVersionUID): New field. (serialVersionUID): Likewise. (DEFAULT_KEYMAP): Likewise. (FOCUS_ACCELERATOR_KEY): Likewise. (doc): Made private. (icon_gap): Likewise. (icon): Likewise. (align): Likewise. (JTextComponent): Some constructors removed. (getScrollableTracksViewportHeight): New method. (getScrollableTracksViewportWidth): Likewise. 2004-06-26 Graydon Hoare * javax/swing/ImageIcon.java (ImageIcon): New constructor. * javax/swing/JFrame.java (defaultLookAndFeelDecorated): New property. * javax/swing/JViewport.java=20 (getExtentSize): Return size rather than preferred size. (toViewCoordinates): New methods. (getViewSize): Return size rather than preferred size. (setViewSize): Note view size as set. * javax/swing/ViewportLayout.java (layoutContainer): Reimplement. * javax/swing/plaf/basic/BasicScrollBarUI.java=20 (getPreferredSize): Don't redo layout. * javax/swing/plaf/basic/BasicViewportUI.java=20 (paint): Translate image properly and eat exceptions. 2004-06-26 Kim Ho * javax/swing/JTabbedPane.java (setComponent): Remove old component and add new component. (setSelectedIndex): Don't operate on the=20 components if they're null. Don't set index on the model if the index is the same. (insertTab): Don't add or hide the component if it's null. Repaint the container. * javax/swing/plaf/basic/BasicLookAndFeel.java Change colors for TabbedPane. * javax/swing/plaf/basic/BasicTabbedPaneUI.java (mousePressed): Re-layout and paint the component. (layoutContainer): Don't set location on the view. (ScrollingViewport::paint): Remove. 2004-06-26 Thomas Fitzsimmons * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c (gtkWidgetDispatchKeyEvent): Change warning message to comment. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (drawString): Wrap baseline y value in PANGO_PIXELS macro, rather than simply dividing by PANGO_SCALE. Call gdk_flush before leaving GDK critical region. (drawLine): Call gdk_flush before leaving GDK critical region. (fillRect): Likewise. (drawRect): Likewise. (copyArea): Likewise. (copyPixmap): Likewise. (clearRect): Likewise. (drawArc): Likewise. (drawPolyline): Likewise. (drawPolygon): Likewise. (fillPolygon): Likewise. (fillArc): Likewise. (drawOval): Likewise. (fillOval): Likewise. * gnu/java/awt/peer/gtk/GdkFontMetrics.java (initState): Add style parameter. (GdkFontMetrics): Add style argument to initState call. (stringWidth(String,int,int,String)): Add style parameter. (stringWidth(String)): Add style argument to stringWidth call. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c (initState): Set pango font style and weight based on AWT style parameter. Pass default GTK language to pango_context_get_metrics. Use PANGO_PIXELS macro rather than simply dividing by PANGO_SCALE. (stringWidth): Set pango font style and weight based on AWT style parameter. * java/awt/Button.java (next_button_number): New field. (paramString): Change output. (generateName): New method. (getUniqueLong): New method. 2004-06-26 Kim Ho * javax/swing/JTabbedPane.java: (setComponentAt): Set the component, not the enabled status. * javax/swing/plaf/basic/BasicDesktopIconUI.java (actionPerformed): Let deiconize catch exception. 2004-06-26 Olga Rodimina * javax/swing/JPopupMenu.java: (setVisible): Corrected location of a=20 heavyweight popup menu. 2004-06-26 Olga Rodimina * javax/swing/MenuSelectionManager.java:=20 Ran through jalopy to fix formatting style. 2004-06-26 Olga Rodimina =09 * javax/swing/JLayeredPane.java:=20 (remove): Revalidate and repaint layered pane after the component was removed. javax/swing/JMenu.java: (setVisible): Display popup menu at the user location, if one was set by the user. (setMenuLocation): Reimplemented. Fixed javadoc. * javax/swing/JMenuBar.java: Added javadoc. (BORDER_PAINTED_CHANGED_PROPERTY): New Property. (MODEL_CHANGED_PROPERTY): New Property. (isSelected): Implemented. (setBorderPainted): Fire PropertyChangeEvent if paintBorder property changes. (setSelected): Implemented. (setSelectionModel): Implemented. * javax/swing/JPopupMenu.java: Added Javadoc (pack): Implemented. (setVisible): Reimplemented. (show): Fixed location. (JPopupMenu.LigthWeightPopup): Reimplemented to use Container instead of JPanel. * javax/swing/MenuSelectionManager.java: Added Javadocs. (clearSelectedPath): Reimplemented to clear selectedPath in reverse order. (processMouseEvent): Reimplemented. (setSelectedPath): Fire stateChange event indicating that selected menu path has changed. (getPath): Change to use ArrayList instead of Vector. * javax/swing/plaf/basic/BasicMenuBarUI.java: (installUI): call installKeyboardActions(). (uninstallUI): call uninstallKeyboardActions(). 2004-06-26 Michael Koch * javax/swing/text/DefaultCaret.java, javax/swing/text/BadLocationException.java: Reformatted. 2004-06-26 Thomas Fitzsimmons * gnu/java/awt/peer/gtk/GtkTextAreaPeer.java (DEFAULT_ROWS, DEFAULT_COLS): New variables. (create): Don't allow 0 rows or 0 columns. Instead, set the values to DEFAULT_ROWS or DEFAULT_COLS. (getMinimumSize): Likewise. (getPreferredSize): Likewise. (minimumSize): Likewise. (preferredSize): Likewise. (create): Set peer's editable state. * java/awt/TextArea.java (TextArea()): Set rows and columns to zero. Update javadocs. (TextArea(String)): Likewise. (TextArea(int,int)): Fix javadocs. (TextArea(String,int,int,int)): Only throw exception if one of rows or columns is zero. Fix javadocs. 2004-06-26 Thomas Fitzsimmons * java/awt/AWTEvent.java (toString): Handle MenuComponents in addition to Components. * java/awt/MenuItem.java (dispatchEventImpl): If the event wasn't consumed by normal processing, send it to the parent menu. * gnu/java/awt/peer/gtk/GtkImagePainter.java (setPixels(int,int,int,int,ColorModel,int[],int,int)): Remove translation. 2004-06-26 David Jee * java/awt/MediaTracker.java (addImage(Image,int)): Call imageUpdate() to udpate image status. (addImage(Image,int,int,int)): Likewise. 2004-06-26 Michael Koch * javax/swing/text/AbstractDocument.java, javax/swing/text/Document.java, javax/swing/text/GapContent.java, javax/swing/text/JTextComponent.java, javax/swing/text/PlainDocument.java: Reformatted. 2004-06-26 Michael Koch * javax/swing/JRootPane.java (AccessibleJRootPane.serialVersionUID): New field. (AccessibleJRootPane.AccessibleJRootPane): New constructor. (AccessibleJRootPane.getAccessibleRole): New method. (RootLayout): Implements Serializable. (RootLayout.serialVersionUID): New field. (RootLayout.RootLayout): New constructor. (setJMenuBar): Made public. (getJMenuBar): Likewise. (JRootPane): Likewise. (createContentPane): Likewise. (createGlassPane): Likewise. (createLayeredPane): Likewise. 2004-06-26 Michael Koch * javax/swing/SwingUtilities.java (isLeftMouseButton): Fixed javadoc. (isMiddleMouseButton): Likewise. (isRightMouseButton): Likewise. 2004-06-26 Michael Koch * javax/swing/JScrollPane.java (serialVersionUID): New field. (columnHeader): Made protected. (rowHeader): Likewise. (lowerLeft): Likewise. (lowerRight): Likewise. (upperLeft): Likewise. (upperRight): Likewise. (horizontalScrollBar): Likewise. (horizontalScrollBarPolicy): Likewise. (verticalScrollBar): Likewise. (verticalScrollBarPolicy): Likewise. (viewport): Likewise. 2004-06-26 Michael Koch * javax/swing/LookAndFeel.java: Fixed javadocs. 2004-06-26 Michael Koch * javax/swing/JEditorPane.java: Fixed javadocs. (JEditorPane): Removed redundant call to to this(). (fireHyperlinkUpdate): Implemented. 2004-06-26 Olga Rodimina * javax/swing/JMenu.java: Fixed file name=20 in the file comment. 2004-06-26 Olga Rodimina * javax/swing/JMenu.java: Added javadoc. (JMenu): Added MenuChangeListener to listen to=20 ChangeEvents occuring in menu's model.=20 (insert): Throw IllegalArgumentException if=20 index is less than 0 (setSelected): Reimplement. (setPopupMenuVisible): Call menu's model isEnabled() (setDelay): Throw IllegalArgumentException if=20 given amount of delay is less than 0. (createActionComponent): Implemented. (createActionChangeListener): Implemented. (addSeparator): Implemented. (getItem): Throw IllegalArgumentException if index is=20 less than 0. (getItemCount): Implemented. (fireMenuSelected): Changed to use menuEvent. (fireMenuDeselected): Likewise. (fireMenuCanceled): Likewise. (setAccelerator): Changed to throw an error if this=20 method is used.=20 (doClick): Implemented. (JMenu.ActionChangedListener): New inner class to handle PropertyChangeEvents occuring in the actions associated with menu. * javax/swing/plaf/basic/BasicMenuUI.java: Added javadoc. (BasicMenuUI): Added PropertyChangeListener to the menu. (createChangeListener): Implemented. (createMenuDragMouseListener): Likewise. (createMenuKeyListener): Likewise. (createPropertyChangeListener): Likewise. (uninstallListeners): Likewise. (BasicMenuUI.MouseInputHandler): Reimplemented. (BasicMenuUI.PropertyChangeHandler): New class. Not implemented yet. (BasicMenuUI.ChangeHandler): Likewise. (BasicMenuUI.MenuDragMouseHandler): Likewise. (BasicMenuUI.MenuKeyHandler): Likewise. 2004-06-26 David Jee * java/awt/MediaTracker.java (imageUpdate): Only do notifyAll() if the image is complete. 2004-06-26 Olga Rodimina * javax/swing/JApplet.java: (getJMenuBar): Made public. (setJMenuBar): Likewise. * javax/swing/JFrame.java: (getJMenuBar): Made public. (setJMenuBar): Likewise. * javax/swing/JWindow.java: (getJMenuBar): Removed. (setJMenuBar): Removed. 2004-06-26 Michael Koch * javax/swing/JEditorPane.java (createEditorKitForContentType): Fixed visibility. (fireHyperlinkUpdate): Likewise. (getContentType): Likewise. (getEditorKit): Likewise. (getEditorKitForContentType): Likewise. (getPage): Likewise. (read): Likewise. (registerEditorKitForContentTyoe): Likewise. (replaceSelection): Likewise. (setContentType): Likewise. (setEditorKit): Likewise. (setPage): Likewise. 2004-06-26 Michael Koch * javax/swing/Timer.java (Timer): New constructor. * javax/swing/plaf/basic/BasicProgressBarUI.java (animationTimer): Don't initialize at construction. (startAnimationTimer): Added since tag. (stopAnimationTimer): Likewise. (installUI): Use new Timer constructor. * javax/swing/plaf/basic/BasicScrollBarUI.java (installUI): Likewise. * javax/swing/plaf/basic/BasicSliderUI.java (installUI): Likewise. 2004-06-26 Michael Koch * javax/swing/ButtonGroup.java (serialVersionUID): Made private. (buttons): Renamed from v, added javadoc. (sel): Added javadoc. (ButtonGroup): Likewise. (add): Likewise. (remove): Likewise. (getElements): Likewise. (getSelection): Likewise. (setSelected): Likewise. (isSelected): Likewise. (getButtonCount): Likewise. 2004-06-26 Michael Koch * javax/swing/ButtonGroup.java, javax/swing/ImageIcon.java, javax/swing/JEditorPane.java, javax/swing/JRootPane.java, javax/swing/JTextField.java, javax/swing/LookAndFeel.java, javax/swing/plaf/basic/BasicTextUI.java: Reindented. 2004-06-26 Michael Koch * javax/swing/text/Style.java: Added javadocs. 2004-06-26 Michael Koch * javax/swing/JComponent.java (fireVetoableChange): Removed redundant cast. * javax/swing/JLabel.java (getDisabledIcon): Save icon for next call. 2004-06-26 Michael Koch * javax/swing/KeyStroke.java (getKeyStroke(char,boolean)): Marked deprecated. 2004-06-26 Michael Koch * javax/swing/DefaultCellEditor.java, javax/swing/GrayFilter.java, javax/swing/event/DocumentEvent.java, javax/swing/text/JTextComponent.java, javax/swing/text/MutableAttributeSet.java: Reindented. 2004-06-26 Michael Koch * javax/swing/plaf/BorderUIResource.java: Added serialVersionUID all over. 2004-06-26 Michael Koch * javax/swing/DefaultButtonModel.java (ARMED): Made public final, fixed value. (ENABLED): Likewise. (PRESSED): Likewise. (ROLLOVER): Likewise. (SELECTED): Likewise. (stateMask): Initialize directly. (listenerList): Likewise. (mnemonic): Likewise. (fireStateChanged): Removed argument, use changeEvent as event. All places where this method is called are fixed too. (getActionCommant): Fixed javadoc. (setGroup): Fixed javadoc. (getGroup): New method. 2004-06-26 Olga Rodimina * javax/swing/AbstractButton.java (AbstractButton): Use init() to initialize the button. (init): New Method. Initializes AbstractButton. * javax/swing/JMenuItem.java: Documented. (JMenuItem): Reimplemented. (init): Implemented. (setEnabled): Changed to call super.setEnabled() (processMouseEvent): Reimplemented. (fireMenuKeyPressed): Implemented. (fireMenuKeyReleased): Implemented. (fireMenuKeyTyped): Implemented. (menuSelectionChanged): disarm the model if the menu item was deselected. * javax/swing/plaf/basic/BasicMenuItemUI.java:Documented. (getPath): Change to use ArrayList instead of Vector. (getPreferredSize): Renamed variable. (paintMenuItem): Paint margin area of menu item. (MouseInputHandler.mouseEntered): Set selection in MenuSelectionManager. (MouseInputHandler.mouseReleased): Check if mouse was pressed inside menu item's bounds before clearing the selection. =09 2004-06-26 David Jee * gnu/java/awt/peer/gtk/GtkTextComponentPeer.java (GtkTextComponentPeer): Set caret position to 0. * java/awt/TextComponent.java (setText): Set caret position to 0. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c (Java_gnu_java_awt_peer_gtk_GtkComponentPeer_addExposeFilter): Handle GtkScrolledWindow separately. Fix signal handler blocking. (Java_gnu_java_awt_peer_gtk_GtkComponentPeer_removeExposeFilter): Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c (Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_create): Make cursor visible. 2004-06-26 Kim Ho * java/awt/Container.java (getComponentAt): Removed. * javax/swing/AbstractAction.java (ENABLED_PROPERTY): New property. (putValue): Fire PropertyChangeEvents. (setEnabled): ditto. (firePropertyChange): Javadoc and implement convenience method. * javax/swing/AbstractButton.java (setAction): Don't create PropertyChangeListener if new Action is null. (setIcon): Don't set icon till after comparing it. (configurePropertiesFromAction): Check mnemonic key before calling intValue(). (createActionPropertyChangeListener): Check properties rather than bulk change. * javax/swing/DefaultDesktopManager.java: Implement. * javax/swing/DesktopManager.java: Jalopy and javadoc. * javax/swing/JComponent.java (fireVetoableChange): Implement. (paintImmediately): Use root component. * javax/swing/JDesktopPane.java: Implement * javax/swing/JInternalFrame.java: Implement * javax/swing/JLabel.java (getDisabledIcon): Return grayscaled icon if no disabled icon specified. * javax/swing/JMenuBar.java (getComponentAtIndex): Use getComponent * javax/swing/JOptionPane.java (getDesktopPaneForComponent): Use SwingUtilities' getAncestorOfClass (getFrameForComponent): ditto. * javax/swing/JSplitPane.java (remove): Use getComponent. * javax/swing/SwingUtilities.java (convertPoint): Implement. * javax/swing/plaf/basic/BasicButtonUI.java (paintButtonNormal): Check opaqueness before filling background. * javax/swing/plaf/basic/BasicDesktopIconUI.java: Implement * javax/swing/plaf/basic/BasicDesktopPaneUI.java: Implement. * javax/swing/plaf/basic/BasicInternalFrameTitlePane.java: Implement. * javax/swing/plaf/basic/BasicInternalFrameUI.java: Implement. * javax/swing/plaf/basic/BasicLookAndFeel.java: Change InternalFrame and Desktop colors. 2004-06-26 David Jee * java/awt/Container.java (remove): Do not set component to invisible. 2004-06-26 Michael Koch * javax/swing/tree/DefaultMutableTreeNode.java (getLeafCount): Renamed enum to e. 2004-06-26 Michael Koch * javax/swing/plaf/basic/BasicSplitPaneDivider.java (positionForMouseEvent): Removed redundant semicolon. (continueDrag): Use method arguments. 2004-06-26 Michael Koch * javax/swing/border/TitledBorder.java, javax/swing/filechooser/FileSystemView.java, javax/swing/plaf/basic/BasicButtonListener.java, javax/swing/plaf/basic/BasicGraphicsUtils.java, javax/swing/plaf/basic/BasicLabelUI.java, javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java, javax/swing/plaf/basic/BasicScrollBarUI.java, javax/swing/plaf/basic/BasicScrollPaneUI.java, javax/swing/plaf/basic/BasicSliderUI.java, javax/swing/plaf/basic/BasicTabbedPaneUI.java, javax/swing/plaf/basic/BasicToggleButtonUI.java, javax/swing/table/JTableHeader.java, javax/swing/text/AbstractDocument.java, javax/swing/text/DefaultCaret.java, javax/swing/text/StyledEditorKit.java, javax/swing/tree/DefaultTreeCellEditor.java: Reworked import statements. 2004-06-26 Graydon Hoare * javax/swing/Box.java: Temporarily comment out code broken due to visibility bug. 2004-06-26 Michael Koch * javax/swing/ImageIcon.java (ImageIcon): Added missing constructor. 2004-06-26 Michael Koch * javax/swing/JToggleButton.java (JToggleButton): New constructor. (getAccessibleContext): Moved documentation into javadoc. (getUIClassID): Likewise. 2004-06-26 Michael Koch * javax/swing/AbstractButton.java (getDisabledIcon): Create disabled icon if none exists yet. 2004-06-26 Michael Koch * javax/swing/plaf/basic/BasicLookAndFeel.java (initClassDefaults): Added FormattedTextFieldUI. (loadResourceBundle): Renamed enum to e. 2004-06-26 Michael Koch * javax/swing/plaf/basic/BasicButtonUI.java (paintIcon): Simplified. (paintText): Paint disabled button correctly. 2004-06-26 Michael Koch * javax/swing/JComponent.java (createToolTip): Use official JToolTip API. 2004-06-26 Michael Koch * javax/swing/JToolTip.java (JToolTip): No arguments in API. (setTipText): New method. 2004-06-26 Michael Koch * javax/swing/SwingUtilities.java (isLeftMouseButton): New method. (isMiddleMouseButton): New method. (isRightMouseButton): New method. 2004-06-26 Michael Koch * javax/swing/AbstractButton.java, javax/swing/CellRendererPane.java, javax/swing/JCheckBoxMenuItem.java, javax/swing/JColorChooser.java, javax/swing/JComboBox.java, javax/swing/JComponent.java, javax/swing/JDesktopPane.java, javax/swing/JFileChooser.java, javax/swing/JMenu.java, javax/swing/JMenuItem.java, javax/swing/JOptionPane.java, javax/swing/JPasswordField.java, javax/swing/JPopupMenu.java, javax/swing/JProgressBar.java, javax/swing/JRadioButtonMenuItem.java, javax/swing/JScrollBar.java, javax/swing/JSeparator.java, javax/swing/JSlider.java, javax/swing/JSplitPane.java, javax/swing/JTabbedPane.java, javax/swing/JTextField.java, javax/swing/JToolBar.java, javax/swing/text/JTextComponent.java: Fixed all constructors of accessibility classes. 2004-06-26 Michael Koch * javax/swing/ScrollPaneLayout.java: Renamed all memeber variables all over. 2004-06-26 Michael Koch * javax/swing/Box.java (AccessibleBoxFiller): Extends AccessibleAWTComponent. (AccessibleBoxFiller.serialVersionUID): New member variable. * javax/swing/DefaultButtonModel.java (stateMask): Made protected. (listenerList): Likewise. (changeEvent): Likewise. (group): Likewise. (mnemonic): Likewise. (actionCommand): Likewise. (getListeners): New method. (getActionListeners): New method. (getItemListeners): New method. (getChangeListeners): New method. (fireItemStateChanged): Simplified. (fireActionPerformed): Simplified. (fireStateChanged): Simplified. * javax/swing/JFrame.java (JFrame): Implements WindowContants. (HIDE_ON_CLOSE): Removed. (EXIT_ON_CLOSE): Removed. (DISPOSE_ON_CLOSE): Removed. (DO_NOTHING_ON_CLOSE): Removed. (processWindowEvent): Exit with code 0. (setDefaultCloseOperation): Do security check before setting value. * javax/swing/JOptionPane.java (message): Initialize only in constructor. * javax/swing/JToolTip.java: Removed unused imports. * javax/swing/JViewport.java (serialVersionUID): New member variable. (SIMPLE_SCROLL_MODE): Made final, fixed value. (BLIT_SCROLL_MODE): Likewise. (BACKINGSTORE_SCROLL_MODE): Likewise. (scrollUnderway): Made protected. (isViewSizeSet): Likewise. * javax/swing/ListModel.java: Fixed javadoc. * javax/swing/Popup.java: Likewise. * javax/swing/RepaintManager.java (paintDirtyRegions): Don't use internal classes of java.util.AbstractMap. * javax/swing/ScrollPaneConstants.java: Reindented. * javax/swing/ScrollPaneLayout.java (viewport): Made protected. (verticalScrollBar): Made protected, renamed to vsb. (horizontalScrollBar): Made protected, renamed to hsb. (rowHeader): Made protected, renamed to rowHead. (columnHeader): Made protected, renamed to colHead. (lowerLeft): Made protected. (lowerRight): Made protected. (upperLeft): Made protected. (upperRight): Made protected. (verticalScrollBarPolicy): Made protected, renamed to vsbPolicy. (horizontalScrollBarPolicy): Made protected, renamed to hsbPolicy. 2004-06-26 Bernd Schmidt * java/awt/MediaTracker.java (imageUpdate): Only set status to LOADING if flags has SOMEBITS set. 2004-06-26 Michael Koch * javax/swing/AbstractButton.java: Reorganized imports. * javax/swing/ActionMap.java: Likewise. * javax/swing/DefaultButtonModel.java: Likewise. * javax/swing/DefaultListModel.java: Likewise. * javax/swing/ImageIcon.java: Likewise. (serialVersionUID): New member variable. * javax/swing/JComboBox.java: Reorganized imports. * javax/swing/JComponent.java: Likewise. (ui): Made protected. (listenerList): Made protected. (TOOL_TIP_TEXT_KEY): New constant. (scrollRectToVisible): Removed redundant null check. * javax/swing/JFrame.java: Reorganized imports. * javax/swing/JInternalFrame.java: Reorganized imports. * javax/swing/JProgressBar.java: Likewise. * javax/swing/JRootPane.java: Likewise. * javax/swing/JScrollBar.java: Likewise. * javax/swing/JSeparator.java: Likewise. * javax/swing/JSlider.java: Likewise. * javax/swing/JTabbedPane.java: Likewise. * javax/swing/JTextField.java: Likewise. * javax/swing/JToolBar.java: Likewise. * javax/swing/JTree.java: Likewise. * javax/swing/JViewport.java: Likewise. * javax/swing/JWindow.java: Likewise. * javax/swing/KeyStroke.java: Likewise. * javax/swing/LookAndFeel.java: Likewise. * javax/swing/MenuSelectionManager.java: Likewise. * javax/swing/SwingUtilities.java: Likewise. * javax/swing/Timer.java: Likewise. * javax/swing/DefaultBoundedRangeModel.java: Fixed javadoc. * javax/swing/JList.java (HORIZONTAL_WRAP): Made final, fixed value. (VERTICAL): Likewise. (VERTICAL_WRAP): Likewise. 2004-06-26 Michael Koch * javax/swing/AbstractButton.java (serialVersionUID): New member variable. (AccessibleAbstractButton.serialVersionUID): Likewise. (AbstractButton): Made public. * javax/swing/Box.java (AccessibleBox.serialVersionUID): New member variable. (Filler.serialVersionUID): Likewise. * javax/swing/DefaultListSelectionModel.java (serialVersionUID): Likewise. * javax/swing/JApplet.java (serialVersionUID): Likewise. * javax/swing/JCheckBox.java (serialVersionUID): Likewise. * javax/swing/JCheckBoxMenuItem.java (serialVersionUID): Likewise. (AccessibleJCheckBoxMenuItem.serialVersionUID): Likewise. * javax/swing/JColorChooser.java (serialVersionUID): Likewise. (AccessibleJColorChooser.serialVersionUID): Likewise. * javax/swing/JComponent.java (serialVersionUID): Made private. (AccessibleJComponent.serialVersionUID): New member variable. * javax/swing/JDesktopPane.java (serialVersionUID): Likewise. * javax/swing/JDialog.java (serialVersionUID): Likewise. * javax/swing/JFormattedTextField.java (serialVersionUID): Fixed value. * javax/swing/JFrame.java (serialVersionUID): New member variable. (getDefaultCloseOpertation): Made public. * javax/swing/JLayeredPane.java (serialVersionUID): Likewise. (LAYER_PROPERTY): Made final, fixed value. (JLayeredPane): Made public. * javax/swing/JMenu.java (AccessibleJMenu.serialVersionUID): New member variable. (WinListener.serialVersionUID): Likewise. * javax/swing/JMenuBar.java (serialVersionUID): Likewise. (getComponentAtIndex): Added @deprecated tag. * javax/swing/JMenuItem.java (serialVersionUID): New member variable. (AccessibleJMenuItem.serialVersionUID): Likewise. * javax/swing/JOptionPane.java (serialVersionUID): Likewise. (AccessibleJOptionPane.serialVersionUID): Likewise. * javax/swing/JPopupMenu.java (serialVersionUID): Likewise. (AccessibleJPopupMenu.serialVersionUID): Likewise. (getPopupMenuListeners): New method. (getComponentAtIndex): Added @deprecated tag. * javax/swing/JProgressBar.java (serialVersionUID): New member variable. (AccessibleJProgressBar.serialVersionUID): Likewise. * javax/swing/JRadioButton.java (serialVersionUID): Likewise. * javax/swing/JRadioButtonMenuItem.java (serialVersionUID): Likewise. (AccessibleJRadioButtonMenuItem.serialVersionUID): Likewise. * javax/swing/JScrollBar.java (serialVersionUID): Likewise. (AccessibleJScrollBar.serialVersionUID): Likewise. * javax/swing/JSeparator.java (serialVersionUID): Likewise. (AccessibleJSeparator.serialVersionUID): Likewise. * javax/swing/JSlider.java: Fixed javadocs. (AccessibleJSlider.serialVersionUID): New member variable. * javax/swing/JSplitPane.java: Added copyright statement. (serialVersionUID): New member variable. (AccessibleJSplitPane.serialVersionUID): Likewise. * javax/swing/JTabbedPane.java (serialVersionUID): Likewise. (AccessibleJTabbedPane.serialVersionUID): Likewise. (ModelListener.serialVersionUID): Likewise. (ModelListener.ModelListener): New constructor. (SCROLL_TAB_LAYOUT): Made public final, fixed value. (WRAP_TAB_LAYOUT): Likewise. * javax/swing/JTable.java (serialVersionUID): New member variable. * javax/swing/JToggleButton.java (serialVersionUID): Likewise. (ToggleButtonModel): Made static. (ToggleButtonModel.serialVersionUID): New member variable. * javax/swing/JToolTip.java (serialVersionUID): Likewise. * javax/swing/JTree.java (serialVersionUID): Likewise. * javax/swing/JWindow.java (serialVersionUID): Likewise. * javax/swing/Timer.java (serialVersionUID): Likewise. 2004-06-26 Michael Koch * javax/swing/SwingConstants.java (NEXT): New constant. (PREVIOUS): Likewise. * javax/swing/UIManager.java (LookAndFeel): Made public. (LookAndFeel.getClassName): Likewise. (LookAndFeel.getName): Likewise. 2004-06-26 Olga Rodimina * javax/swing/JCheckBoxMenuItem.java: Removed CVS tags. * javax/swing/JMenu.java: Likewise. * javax/swing/JMenuBar.java: Likewise. * javax/swing/JMenuItem.java: Likewise. * javax/swing/JPopupMenu.java: Likewise. * javax/swing/JRadioButtonMenuItem.java: Likewise. * javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java:Likewise. * javax/swing/plaf/basic/BasicMenuBarUI.java: Likewise. * javax/swing/plaf/basic/BasicMenuItemUI.java: Likewise. * javax/swing/plaf/basic/BasicMenuUI.java: Likewise. * javax/swing/plaf/basic/BasicPopupMenuUI.java: Likewise. * javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java: Likewise. 2004-06-26 Olga Rodimina =09 * javax/swing/plaf/basic/BasicMenuUI.java: (MouseEntered): Do not call getPath() from MenuSelectionManager. Call getPath() from super class instead. 2004-06-26 David Jee * java/awt/Container.java (remove): Set component visibility to false after removing it. 2004-06-26 Thomas Fitzsimmons * java/awt/Component.java (getForeground): Return SystemColor if parent is null. (getBackground): Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c (item_highlighted): New function. (connectSignals): Set item_highlighted as list's select function. * java/applet/Applet.java: Revert changes from 2004-04-29, 2004-03-15 and 2004-03-14. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (drawString): Divide baseline y coordinate by PANGO_SCALE, not DPI conversion factor. * gnu/java/awt/peer/gtk/GtkTextAreaPeer.java (create): Set "Dialog" as the default font. * gnu/java/awt/peer/gtk/GtkTextFieldPeer.java (create): Likewise. * java/awt/Component.java (getFont): Return "Dialog" font by default. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.c: Multiply size argument to pango_font_description_set_size by the DPI conversion factor rather than by PANGO_SCALE. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c: Likewise. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (drawString): Divide baseline y coordinate by DPI conversion factor rather than by PANGO_SCALE. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c (area_prepared): Fix typo. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c (gtkSetFont): Move gtk_bin_get_child inside GDK critical region. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c (dpi_conversion_factor): New global variable. (init_dpi_conversion_factor): New function to calculate and track DPI conversion factor. (dpi_changed_cb): New callback. * native/jni/gtk-peer/gtkpeer.h (dpi_conversion_factor): Declare. 2004-06-26 David Jee * gnu/java/awt/peer/gtk/GtkComponentPeer.java (getGraphics): Return a new GdkGraphics instance. * gnu/java/awt/peer/gtk/GtkContainerPeer.java (getGraphics): Call super.getGraphics(). 2004-06-26 Thomas Fitzsimmons * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c (setNativeBounds): Clamp width and height values to >=3D 0. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c (find_fg_color_widget): Handle GtkOptionMenu specially. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c (pre_event_handler): Only post configure events to visible top-level windows. 2004-06-26 David Jee * java/awt/BorderLayout.java (layoutContainer): Fix size calculations. 2004-06-26 Thomas Fitzsimmons * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c (window_wm_protocols_filter): Remove function. (create): Remove filter that removes WM_TAKE_FOCUS client messages. --=-FqyQIZqpIpcLCycMAHpa Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3aAixVhZCJWr9QwRAvoxAKCZaAO424SAOaMXAbUjdNpjdOZ7DwCeJtKc 1kzxvbdyjhyz/EMkbR3xBh0= =rH79 -----END PGP SIGNATURE----- --=-FqyQIZqpIpcLCycMAHpa-- From MAILER-DAEMON Sat Jun 26 13:03:30 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeGaQ-0001zO-FR for mharc-commit-classpath@gnu.org; Sat, 26 Jun 2004 13:03:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeGaO-0001z7-Ik for commit-classpath@gnu.org; Sat, 26 Jun 2004 13:03:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeGaN-0001yd-2X for commit-classpath@gnu.org; Sat, 26 Jun 2004 13:03:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeGaM-0001ya-VM for commit-classpath@gnu.org; Sat, 26 Jun 2004 13:03:27 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BeGYl-0004BI-BV for commit-classpath@gnu.org; Sat, 26 Jun 2004 13:01:47 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BeGYS-00017K-00 for ; Sat, 26 Jun 2004 19:01:28 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-/INWiuy15r88cwr2G3P/" Message-Id: <1088269295.2712.201.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sat, 26 Jun 2004 19:01:36 +0200 Subject: FYI: Fix GetMethodID call to use proper class references X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Jun 2004 17:03:28 -0000 --=-/INWiuy15r88cwr2G3P/ Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, While testing the FileDialog I encountered the following mixup of using java.lang.String and not java/lang/String in a JNI method call. 2004-06-26 Mark Wielaard * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c (ok_clicked): Use Ljava/lang/String; not Ljava.lang.String; in JNI GetMethodID call. (cancel_clicked): Likewise. This makes the gtk+ peer FileDialog work on runtimes that are strict about these kind of JNI details. Committed. Cheers, Mark --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c 7 A= pr 2004 20:28:54 -0000 1.10 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c 26 = Jun 2004 16:54:57 -0000 @@ -198,7 +198,7 @@ jclass cx =3D (*gdk_env)->GetObjectClass (gdk_env, peer_obj); hideID =3D (*gdk_env)->GetMethodID (gdk_env, cx, "gtkHideFileDialog"= , "()V"); gtkSetFilenameID =3D (*gdk_env)->GetMethodID (gdk_env, cx, - "gtkSetFilename", "(Ljava.lang.String;)= V"); + "gtkSetFilename", "(Ljava/lang/String;)= V"); isIDSet =3D 1; } @@ -230,7 +230,7 @@ jclass cx =3D (*gdk_env)->GetObjectClass (gdk_env, peer_obj); hideID =3D (*gdk_env)->GetMethodID (gdk_env, cx, "gtkHideFileDialog"= , "()V"); gtkSetFilenameID =3D (*gdk_env)->GetMethodID (gdk_env, cx, - "gtkSetFilename", "(Ljava.lang.String;)= V"); + "gtkSetFilename", "(Ljava/lang/String;)= V"); isIDSet =3D 1; } --=-/INWiuy15r88cwr2G3P/ Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3avvxVhZCJWr9QwRAkxxAJ0QuPt2gvIzWc6wKSyEpS99MME2nACeNR20 KfW/sLIeckIujv5K3AvmBkU= =n3Yr -----END PGP SIGNATURE----- --=-/INWiuy15r88cwr2G3P/-- From MAILER-DAEMON Sat Jun 26 14:53:40 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeIJ2-0002zd-D4 for mharc-commit-classpath@gnu.org; Sat, 26 Jun 2004 14:53:40 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeIJ1-0002zS-At for commit-classpath@gnu.org; Sat, 26 Jun 2004 14:53:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeIIz-0002zG-S2 for commit-classpath@gnu.org; Sat, 26 Jun 2004 14:53:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeIIz-0002zD-PI for commit-classpath@gnu.org; Sat, 26 Jun 2004 14:53:37 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BeIHH-0000cn-RZ for commit-classpath@gnu.org; Sat, 26 Jun 2004 14:51:51 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BeIHF-0006Da-53 for commit-classpath@gnu.org; Sat, 26 Jun 2004 14:51:49 -0400 From: "David Holmes" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:80 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9466 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461; Q312461; .NET CLR 1.0.3705; .NET CLR 1.1.4322) X-Apparently-From: 128.10.16.198 X-Copy-To: Array Message-Id: Date: Sat, 26 Jun 2004 14:53:39 -0400 Subject: [bugs #9466] java.net.URL.getURLStreamHandler uses wrong classloader X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Jun 2004 18:53:39 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9466] Full Item Snapshot: URL: Project: classpath Submitted by: David Holmes On: Sat 06/26/2004 at 18:51 Severity: 5 - Average Resolution: None Assigned to: None Status: Open Platform Version: None Summary: java.net.URL.getURLStreamHandler uses wrong classloader Original Submission: The java.net.URL.getURLStreamHandler method tries to loan a potentially application-defined class using Class.forName(clsName). This will fail unless the specified class can be loaded by the bootstrap loader. The correct behaviour would be to use the context class loader to load the class. At a minimum the system/application class loader must be used. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Sun Jun 27 00:10:32 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeQzw-000797-BU for mharc-commit-classpath@gnu.org; Sun, 27 Jun 2004 00:10:32 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeQzu-00077A-UX for commit-classpath@gnu.org; Sun, 27 Jun 2004 00:10:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeQzt-000743-83 for commit-classpath@gnu.org; Sun, 27 Jun 2004 00:10:30 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeQzt-00073u-4p for commit-classpath@gnu.org; Sun, 27 Jun 2004 00:10:29 -0400 Received: from [212.101.4.135] (helo=mail01.solnet.ch) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BeQyE-0003tV-8W for commit-classpath@gnu.org; Sun, 27 Jun 2004 00:08:46 -0400 Received: from localhost (localhost [127.0.0.1]) by mail01.solnet.ch (Postfix) with ESMTP id 7BE5162433 for ; Sun, 27 Jun 2004 04:08:45 +0000 (GMT) Received: from localhost ([127.0.0.1]) by localhost (mail01.solnet.ch [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 43425-01 for ; Sun, 27 Jun 2004 04:08:44 +0000 (GMT) Received: from reali.dnsalias.net (212-41-71-55.adsl.solnet.ch [212.41.71.55]) by mail01.solnet.ch (Postfix) with ESMTP id 575366242B for ; Sun, 27 Jun 2004 04:08:44 +0000 (GMT) Received: by reali.dnsalias.net (Postfix, from userid 510) id 5C36C107270; Sun, 27 Jun 2004 06:05:09 +0200 (CEST) To: commit-classpath@gnu.org Message-Id: <20040627040509.5C36C107270@reali.dnsalias.net> Date: Sun, 27 Jun 2004 06:05:09 +0200 (CEST) From: konqueror@gmx.de (Michael Koch) X-Virus-Scanned: by SolNet mail01.solnet.ch Subject: classpath daily snapshot 20040627 SUCCESSFUL X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jun 2004 04:10:31 -0000 From MAILER-DAEMON Sun Jun 27 07:01:45 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeXPs-0002Si-SM for mharc-commit-classpath@gnu.org; Sun, 27 Jun 2004 07:01:44 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeXPr-0002Sb-9j for commit-classpath@gnu.org; Sun, 27 Jun 2004 07:01:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeXPp-0002SP-Mr for commit-classpath@gnu.org; Sun, 27 Jun 2004 07:01:42 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeXPp-0002SM-J5 for commit-classpath@gnu.org; Sun, 27 Jun 2004 07:01:41 -0400 Received: from [199.232.41.8] (helo=mx20.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BeXO5-0008NX-H3 for commit-classpath@gnu.org; Sun, 27 Jun 2004 06:59:53 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by mx20.gnu.org with esmtp (Exim 4.34) id 1BeXGA-0007bg-Hg for commit-classpath@gnu.org; Sun, 27 Jun 2004 06:51:43 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BeXDN-0004D7-00 for ; Sun, 27 Jun 2004 12:48:49 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-KP87pTwztcy9qJUctA70" Message-Id: <1088333336.2713.232.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sun, 27 Jun 2004 12:48:56 +0200 Subject: FYI: Make EventQueue.postEvent(null) fail fast X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jun 2004 11:01:43 -0000 --=-KP87pTwztcy9qJUctA70 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, The following make EventQueue.postEvent() throw a NullPointerException immediately when it gets a null event. 2004-06-27 Mark Wielaard * java/awt/EventQueue.java (postEvent): Throw NullPointerException when argument is null. In the past a null event could slip through and only throw a NullPointerException much later during event processing making debugging horribly complicated. Committed. Cheers, Mark --- java/awt/EventQueue.java 26 Jan 2004 16:33:01 -0000 1.16 +++ java/awt/EventQueue.java 27 Jun 2004 10:45:28 -0000 @@ -161,6 +161,9 @@ */ public synchronized void postEvent(AWTEvent evt) { + if (evt =3D=3D null) + throw new NullPointerException(); + if (next !=3D null) { next.postEvent(evt); --=-KP87pTwztcy9qJUctA70 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3qYYxVhZCJWr9QwRAh7uAJ9HlR4FzwPAinaPVbtr79rlV7rKEACfb7ab iBoLIHWhQiNtmUCjRoIGEKw= =SEiK -----END PGP SIGNATURE----- --=-KP87pTwztcy9qJUctA70-- From MAILER-DAEMON Sun Jun 27 07:38:20 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeXzH-0000iR-N8 for mharc-commit-classpath@gnu.org; Sun, 27 Jun 2004 07:38:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeXzG-0000hU-G0 for commit-classpath@gnu.org; Sun, 27 Jun 2004 07:38:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeXzD-0000gi-Ko for commit-classpath@gnu.org; Sun, 27 Jun 2004 07:38:18 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeXzD-0000gO-Ja for commit-classpath@gnu.org; Sun, 27 Jun 2004 07:38:15 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BeXws-0003mI-0G for commit-classpath@gnu.org; Sun, 27 Jun 2004 07:35:50 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BeXwY-0004K8-00 for ; Sun, 27 Jun 2004 13:35:30 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-6Zztt94j332gCtwVZz/n" Message-Id: <1088336136.2706.255.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sun, 27 Jun 2004 13:35:36 +0200 Subject: FYI: Small Pango dpi_conversion_factor patch from libgcj X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jun 2004 11:38:18 -0000 --=-6Zztt94j332gCtwVZz/n Content-Type: multipart/mixed; boundary="=-X/hZ0TptqN5eVX9Jkg5A" --=-X/hZ0TptqN5eVX9Jkg5A Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, Another small patch for a Pango dpi_conversion_factor issue from libgcj. 2004-06-27 Andreas Tobler * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c (init_dpi_conversion_factor): Check for int_dpi < 0 in case gtk-xft-= dpi can not calculate the right value. (dpi_changed_cb): Likewise. Mark *pspec as unused. Works fine for me with the wonka-vte. Committed. Cheers, Mark --=-X/hZ0TptqN5eVX9Jkg5A Content-Disposition: inline; filename=GtkMainThread.patch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=GtkMainThread.patch; charset=ISO-8859-1 SW5kZXg6IGpuaS9ndGstcGVlci9nbnVfamF2YV9hd3RfcGVlcl9ndGtfR3RrTWFpblRocmVhZC5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9nY2MvZ2NjL2xpYmphdmEvam5pL2d0ay1wZWVy L2dudV9qYXZhX2F3dF9wZWVyX2d0a19HdGtNYWluVGhyZWFkLmMsdg0KcmV0cmlldmluZyByZXZp c2lvbiAxLjEzDQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTQNCmRpZmYgLXUgLXIxLjEzIC1yMS4x NA0KLS0tIGpuaS9ndGstcGVlci9nbnVfamF2YV9hd3RfcGVlcl9ndGtfR3RrTWFpblRocmVhZC5j CTE3IEp1biAyMDA0IDIzOjQzOjE2IC0wMDAwCTEuMTMNCisrKyBqbmkvZ3RrLXBlZXIvZ251X2ph dmFfYXd0X3BlZXJfZ3RrX0d0a01haW5UaHJlYWQuYwkyNiBKdW4gMjAwNCAwMzo0NDozOCAtMDAw MAkxLjE0DQpAQCAtMjMxLDkgKzIzMSwxNSBAQA0KICAgICB7DQogICAgICAgaW50IGludF9kcGk7 DQogICAgICAgZ19vYmplY3RfZ2V0IChzZXR0aW5ncywgImd0ay14ZnQtZHBpIiwgJmludF9kcGks IE5VTEwpOw0KLSAgICAgIGRwaV9jb252ZXJzaW9uX2ZhY3RvciA9IFBBTkdPX1NDQUxFICogNzIu MCAvIChpbnRfZHBpIC8gUEFOR09fU0NBTEUpOw0KKyAgICAgIC8qIElmIGludF9kcGkgPT0gLTEg Z3RrLXhmdC1kcGkgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZS4gU28gd2UNCisJIGhhdmUgdG8g ZG8gYXBwcm94aW1hdGUgY2FsY3VsYXRpb24gaGVyZS4gICovDQorICAgICAgaWYgKGludF9kcGkg PCAwKQ0KKwlkcGlfY29udmVyc2lvbl9mYWN0b3IgPSBQQU5HT19TQ0FMRSAqIDcyLjAgLyA5Ni47 DQorICAgICAgZWxzZQ0KKwlkcGlfY29udmVyc2lvbl9mYWN0b3IgPSBQQU5HT19TQ0FMRSAqIDcy LjAgLyAoaW50X2RwaSAvIFBBTkdPX1NDQUxFKTsNCisNCiAgICAgICBnX3NpZ25hbF9jb25uZWN0 IChzZXR0aW5ncywgIm5vdGlmeTo6Z3RrLXhmdC1kcGkiLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgIEdfQ0FMTEJBQ0sgKGRwaV9jaGFuZ2VkX2NiKSwgTlVMTCk7DQorCQkJR19DQUxMQkFDSyAo ZHBpX2NoYW5nZWRfY2IpLCBOVUxMKTsNCiAgICAgfQ0KICAgZWxzZQ0KICAgICAvKiBBcHByb3hp bWF0ZS4gKi8NCkBAIC0yNDIsOSArMjQ4LDEyIEBADQogDQogc3RhdGljIHZvaWQNCiBkcGlfY2hh bmdlZF9jYiAoR3RrU2V0dGluZ3MgICpzZXR0aW5ncywNCi0gICAgICAgICAgICAgICAgR1BhcmFt U3BlYyAgICpwc3BlYykNCisJCUdQYXJhbVNwZWMgKnBzcGVjIF9fYXR0cmlidXRlX18oKHVudXNl ZCkpKQ0KIHsNCiAgIGludCBpbnRfZHBpOw0KICAgZ19vYmplY3RfZ2V0IChzZXR0aW5ncywgImd0 ay14ZnQtZHBpIiwgJmludF9kcGksIE5VTEwpOw0KLSAgZHBpX2NvbnZlcnNpb25fZmFjdG9yID0g UEFOR09fU0NBTEUgKiA3Mi4wIC8gKGludF9kcGkgLyBQQU5HT19TQ0FMRSk7DQorICBpZiAoaW50 X2RwaSA8IDApDQorICAgIGRwaV9jb252ZXJzaW9uX2ZhY3RvciA9IFBBTkdPX1NDQUxFICogNzIu MCAvIDk2LjsNCisgIGVsc2UNCisgICAgZHBpX2NvbnZlcnNpb25fZmFjdG9yID0gUEFOR09fU0NB TEUgKiA3Mi4wIC8gKGludF9kcGkgLyBQQU5HT19TQ0FMRSk7DQogfQ0K --=-X/hZ0TptqN5eVX9Jkg5A-- --=-6Zztt94j332gCtwVZz/n Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3rEIxVhZCJWr9QwRArWHAJ9BTahpnJzH78R7NuQUadECKTtqsACfR6PT qKDPCJEBUMQQcxZcl29YtjM= =//L1 -----END PGP SIGNATURE----- --=-6Zztt94j332gCtwVZz/n-- From MAILER-DAEMON Sun Jun 27 08:40:56 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeYxs-0006ZI-2e for mharc-commit-classpath@gnu.org; Sun, 27 Jun 2004 08:40:56 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeYxq-0006Yz-6v for commit-classpath@gnu.org; Sun, 27 Jun 2004 08:40:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeYxo-0006Ya-Cy for commit-classpath@gnu.org; Sun, 27 Jun 2004 08:40:53 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeYxo-0006YQ-BA for commit-classpath@gnu.org; Sun, 27 Jun 2004 08:40:52 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BeYvx-0004br-2s for commit-classpath@gnu.org; Sun, 27 Jun 2004 08:38:58 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BeYvP-0004YJ-00; Sun, 27 Jun 2004 14:38:23 +0200 From: Mark Wielaard To: Steven Augart In-Reply-To: <40D4D833.1030501@watson.ibm.com> References: <40D4D833.1030501@watson.ibm.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-iIHGiOcom97YEAldOn0e" Message-Id: <1088339909.2713.276.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sun, 27 Jun 2004 14:38:30 +0200 Cc: commit-classpath@gnu.org Subject: Re: dynamic-portable-native-sync-1.patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jun 2004 12:40:54 -0000 --=-iIHGiOcom97YEAldOn0e Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, On Sun, 2004-06-20 at 02:20, Steven Augart wrote: > OK to commit? This looks fine to me. Thanks for making this a runtime configuration option! Can you add a one-line blurb to the NEWS file about this (with a see the vmintegration guide) when you commit. > 2004-06-19 Steven Augart >=20 > * gnu/java/awtk/peer/gtk/GtkMainThread.java (run): Pass the value= of=20 > the gnu.classpath.awt.gtk.portable.native.sync system property to= C. s/awtk/awt/ typo. > -@emph{Note: this is written in anticipation of 1.2 support and does not > +@emph{Note: this is written in anticipation of Java 1.2 support and does= not Note that in our documentation and manuals we try to avoid suggesting that GNU Classpath is Java. It is not. Although we do hope that it is as compatible with it as possible (so people can migrate to a free implementation when they want). Since there is a trademark on certain uses of the word Java we normally don't call anything Java. In the above you would say "1.2 library support" and instead of Java runtime we just use "runtime", or if it is explicitly for the particular byte code instructions often associated with the java programming language "interpreter for java byte codes". This is also more correct since with e.g. gcj or ikvm.net the execution model is completely different from the traditional byte code interpreter or just in time compiler. Sorry for nitpicking about this. But if we can avoid any legal issues about the java trademark then lets do that. It is also more clear and fair to our users. We don't want them to think of GNU Classpath as the same thing as that proprietary implementation that restricts their rights and gives control on how they can use it to a small cabal. Cheers, Mark --=-iIHGiOcom97YEAldOn0e Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3r/FxVhZCJWr9QwRAmmfAJ9iP9ClnIQz0w4F7Hw+fTBDGLq+lgCggyjr sX+xm8JLK4R94DQUgsf4m1s= =9qfU -----END PGP SIGNATURE----- --=-iIHGiOcom97YEAldOn0e-- From MAILER-DAEMON Sun Jun 27 09:04:21 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BeZKX-0003Ie-LT for mharc-commit-classpath@gnu.org; Sun, 27 Jun 2004 09:04:21 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BeZKV-0003IU-CU for commit-classpath@gnu.org; Sun, 27 Jun 2004 09:04:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BeZKT-0003II-W1 for commit-classpath@gnu.org; Sun, 27 Jun 2004 09:04:19 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BeZKT-0003IF-T6 for commit-classpath@gnu.org; Sun, 27 Jun 2004 09:04:17 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BeZIn-0003qG-Qk for commit-classpath@gnu.org; Sun, 27 Jun 2004 09:02:34 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BeZIU-0004e7-00 for ; Sun, 27 Jun 2004 15:02:14 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-qzT5wGEmOcLIt4DqKsxX" Message-Id: <1088341340.2713.279.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sun, 27 Jun 2004 15:02:20 +0200 Subject: FYI: Small ZipEntry fixlet from libgcj X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jun 2004 13:04:19 -0000 --=-qzT5wGEmOcLIt4DqKsxX Content-Type: multipart/mixed; boundary="=-1hrlxivNeHgDtyFttpSl" --=-1hrlxivNeHgDtyFttpSl Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, Just committed the following small ZipEntry fixlet from libgcj. 2004-06-27 Jerry Quinn * java/util/zip/ZipEntry.java (setTime): Remove scaling. This brings new mauve PASSes! Cheers, Mark --=-1hrlxivNeHgDtyFttpSl Content-Disposition: inline; filename=zip.patch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=zip.patch; charset=ISO-8859-1 SW5kZXg6IGphdmEvdXRpbC96aXAvWmlwRW50cnkuamF2YQ0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6 IC9jdnMvZ2NjL2djYy9saWJqYXZhL2phdmEvdXRpbC96aXAvWmlwRW50cnkuamF2YSx2DQpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMTkNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMA0KZGlmZiAtdSAt cjEuMTkgLXIxLjIwDQotLS0gamF2YS91dGlsL3ppcC9aaXBFbnRyeS5qYXZhCTMgTWF5IDIwMDQg MjA6MjM6MjcgLTAwMDAJMS4xOQ0KKysrIGphdmEvdXRpbC96aXAvWmlwRW50cnkuamF2YQk2IEp1 biAyMDA0IDIwOjUyOjEwIC0wMDAwCTEuMjANCkBAIC0xLDUgKzEsNSBAQA0KIC8qIGphdmEudXRp bC56aXAuWmlwRW50cnkNCi0gICBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorICAgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDA0IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KIA0KIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdO VSBDbGFzc3BhdGguDQogDQpAQCAtMTY4LDcgKzE2OCw3IEBADQogICAgIENhbGVuZGFyIGNhbCA9 IGdldENhbGVuZGFyKCk7DQogICAgIHN5bmNocm9uaXplZCAoY2FsKQ0KICAgICAgIHsNCi0JY2Fs LnNldFRpbWUobmV3IERhdGUodGltZSoxMDAwTCkpOw0KKwljYWwuc2V0VGltZShuZXcgRGF0ZSh0 aW1lKSk7DQogCWRvc3RpbWUgPSAoY2FsLmdldChDYWxlbmRhci5ZRUFSKSAtIDE5ODAgJiAweDdm KSA8PCAyNQ0KIAkgIHwgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpICsgMSkgPDwgMjENCiAJICB8 IChjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkpIDw8IDE2DQpAQCAtMTc2LDcgKzE3Niw2 IEBADQogCSAgfCAoY2FsLmdldChDYWxlbmRhci5NSU5VVEUpKSA8PCA1DQogCSAgfCAoY2FsLmdl dChDYWxlbmRhci5TRUNPTkQpKSA+PiAxOw0KICAgICAgIH0NCi0gICAgZG9zdGltZSA9IChpbnQp IChkb3N0aW1lIC8gMTAwMEwpOw0KICAgICB0aGlzLmtub3duIHw9IEtOT1dOX1RJTUU7DQogICB9 DQogDQo= --=-1hrlxivNeHgDtyFttpSl-- --=-qzT5wGEmOcLIt4DqKsxX Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3sVcxVhZCJWr9QwRArd1AJ4tOasFQJ/wnbpmHNGsw6tyNDAm/wCfZ4T2 BcSFR65XxLSJnzPE3HzWPwg= =S1N8 -----END PGP SIGNATURE----- --=-qzT5wGEmOcLIt4DqKsxX-- From MAILER-DAEMON Sun Jun 27 15:33:53 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BefPV-00017u-Cj for mharc-commit-classpath@gnu.org; Sun, 27 Jun 2004 15:33:53 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BefPU-00017a-Cv for commit-classpath@gnu.org; Sun, 27 Jun 2004 15:33:52 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BefPS-00017C-KT for commit-classpath@gnu.org; Sun, 27 Jun 2004 15:33:52 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BefPS-000172-EF for commit-classpath@gnu.org; Sun, 27 Jun 2004 15:33:50 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BefNc-00066v-5G for commit-classpath@gnu.org; Sun, 27 Jun 2004 15:31:56 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BefNI-0005bT-00 for ; Sun, 27 Jun 2004 21:31:36 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-fI7K1n18r2QzBiQs8eH8" Message-Id: <1088364701.2703.345.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Sun, 27 Jun 2004 21:31:41 +0200 Subject: FYI: Better User-Agent string X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jun 2004 19:33:52 -0000 --=-fI7K1n18r2QzBiQs8eH8 Content-Type: multipart/mixed; boundary="=-t7t96TsJKL13Bw5ju0bS" --=-t7t96TsJKL13Bw5ju0bS Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, 2004-06-27 Mark Wielaard * gnu/java/net/protocol/http/Connection.java (userAgent): New static final field. (sendRequest): Use new field in user-agent http agent. I little better user-agent string so libgcj doesn't need to patch this anymore. Committed. Cheers, Mark --=-t7t96TsJKL13Bw5ju0bS Content-Disposition: inline; filename=Connection.patch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=Connection.patch; charset=ISO-8859-1 SW5kZXg6IGdudS9qYXZhL25ldC9wcm90b2NvbC9odHRwL0Nvbm5lY3Rpb24uamF2YQ0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KUkNTIGZpbGU6IC9jdnNyb290L2NsYXNzcGF0aC9jbGFzc3BhdGgvZ251L2phdmEvbmV0 L3Byb3RvY29sL2h0dHAvQ29ubmVjdGlvbi5qYXZhLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x Ng0KZGlmZiAtdSAtcjEuMTYgQ29ubmVjdGlvbi5qYXZhDQotLS0gZ251L2phdmEvbmV0L3Byb3Rv Y29sL2h0dHAvQ29ubmVjdGlvbi5qYXZhCTIwIE1hciAyMDA0IDEwOjUwOjM5IC0wMDAwCTEuMTYN CisrKyBnbnUvamF2YS9uZXQvcHJvdG9jb2wvaHR0cC9Db25uZWN0aW9uLmphdmEJMjcgSnVuIDIw MDQgMTk6MzE6MzIgLTAwMDANCkBAIC04MCw2ICs4MCw4IEBADQogICBwcml2YXRlIHN0YXRpYyBi b29sZWFuIHByb3h5SW5Vc2UgPSBmYWxzZTsNCiAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBwcm94 eUhvc3QgPSBudWxsOw0KIA0KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHVzZXJBZ2Vu dDsNCisNCiAgIHN0YXRpYyANCiAgIHsNCiAgICAgLy8gUmVjb2duaXplIHNvbWUgbmV0d29ya2lu ZyBwcm9wZXJ0aWVzIGxpc3RlZCBhdA0KQEAgLTEwMSw2ICsxMDMsMTQgQEANCiAJICAgICAgfQ0K IAkgIH0NCiAgICAgICB9DQorDQorICAgIHVzZXJBZ2VudCA9ICJnbnUtY2xhc3NwYXRoLyINCisg ICAgICArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiZ251LmNsYXNzcGF0aC52ZXJzaW9uIikNCisgICAg ICArICIgKCINCisgICAgICArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiZ251LmNsYXNzcGF0aC52bS5z aG9ydG5hbWUiKQ0KKyAgICAgICsgIi8iDQorICAgICAgKyBTeXN0ZW0uZ2V0UHJvcGVydHkoImph dmEudm0udmVyc2lvbiIpDQorICAgICAgKyAiKSI7DQogICB9DQogDQogICAvKioNCkBAIC0yMTUs OCArMjI1LDcgQEANCiAgICAgICBzZXRSZXF1ZXN0UHJvcGVydHkgKCJDb25uZWN0aW9uIiwgIkNs b3NlIik7DQogICAgIA0KICAgICBpZiAoZ2V0UmVxdWVzdFByb3BlcnR5ICgidXNlci1hZ2VudCIp ID09IG51bGwpDQotICAgICAgc2V0UmVxdWVzdFByb3BlcnR5ICgidXNlci1hZ2VudCIsICJnbnUt Y2xhc3NwYXRoLyINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICsgU3lzdGVtLmdldFByb3Bl cnR5ICgiY2xhc3NwYXRoLnZlcnNpb24iKSk7DQorICAgICAgc2V0UmVxdWVzdFByb3BlcnR5ICgi dXNlci1hZ2VudCIsIHVzZXJBZ2VudCk7DQogICAgIA0KICAgICBpZiAoZ2V0UmVxdWVzdFByb3Bl cnR5ICgiYWNjZXB0IikgPT0gbnVsbCkNCiAgICAgICBzZXRSZXF1ZXN0UHJvcGVydHkgKCJhY2Nl cHQiLCAiKi8qIik7DQo= --=-t7t96TsJKL13Bw5ju0bS-- --=-fI7K1n18r2QzBiQs8eH8 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA3yCdxVhZCJWr9QwRAgDOAJ42vJ6u3IwNx48acvukfCnWqN5UIACeNN7H rOkCU2mOHcqs2BqlV8030UA= =zx5r -----END PGP SIGNATURE----- --=-fI7K1n18r2QzBiQs8eH8-- From MAILER-DAEMON Sun Jun 27 15:57:22 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BefmE-0006EM-FU for mharc-commit-classpath@gnu.org; Sun, 27 Jun 2004 15:57:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BefmD-0006EH-SW for commit-classpath@gnu.org; Sun, 27 Jun 2004 15:57:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BefmC-0006E5-7z for commit-classpath@gnu.org; Sun, 27 Jun 2004 15:57:21 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BefmC-0006E2-4x for commit-classpath@gnu.org; Sun, 27 Jun 2004 15:57:20 -0400 Received: from [212.6.122.141] (helo=mail4.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BefkT-00062J-KO for commit-classpath@gnu.org; Sun, 27 Jun 2004 15:55:33 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-94-185.ewetel.net [80.228.94.185]) by mail4.ewetel.de (8.12.1/8.12.9) with ESMTP id i5RJtK9D021756; Sun, 27 Jun 2004 21:55:21 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1Befpq-0004e8-00; Sun, 27 Jun 2004 22:01:06 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Sun, 27 Jun 2004 21:57:00 +0200 User-Agent: KMail/1.6.2 References: <1088364701.2703.345.camel@localhost> In-Reply-To: <1088364701.2703.345.camel@localhost> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Message-Id: <200406272157.00947.konqueror@gmx.de> X-CheckCompat: OK Cc: Mark Wielaard Subject: Re: FYI: Better User-Agent string X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jun 2004 19:57:22 -0000 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Sonntag, 27. Juni 2004 21:31 schrieb Mark Wielaard: > Hi, > > 2004-06-27 Mark Wielaard > > * gnu/java/net/protocol/http/Connection.java (userAgent): > New static final field. > (sendRequest): Use new field in user-agent http agent. > > I little better user-agent string so libgcj doesn't need to patch > this anymore. Committed. This doesn't really look correct. It was buggy before too. This could=20 should just read the "http.agent" property [1] and ths should be set=20 if not given on commandline in Runtime.insertSystemProperties(). Michael [1] http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA3yaMWSOgCCdjSDsRAueEAJ9n5MnTfQvqk8O5vapwBt/AiFx1YwCZAcW8 JwiSfvQmUvYL6x7fV8O7efE=3D =3D50zb =2D----END PGP SIGNATURE----- From MAILER-DAEMON Mon Jun 28 15:41:42 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bf20c-0002Jf-K7 for mharc-commit-classpath@gnu.org; Mon, 28 Jun 2004 15:41:42 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bf20a-0002J8-Vm for commit-classpath@gnu.org; Mon, 28 Jun 2004 15:41:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bf20Z-0002Im-Ul for commit-classpath@gnu.org; Mon, 28 Jun 2004 15:41:40 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bf20Z-0002ID-MS for commit-classpath@gnu.org; Mon, 28 Jun 2004 15:41:39 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bf1yD-0003rG-2f for commit-classpath@gnu.org; Mon, 28 Jun 2004 15:39:13 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1Bf1xk-0000px-00; Mon, 28 Jun 2004 21:38:44 +0200 From: Mark Wielaard To: Dalibor Topic In-Reply-To: <40D0CCBF.1020107@kaffe.org> References: <40D0CCBF.1020107@kaffe.org> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-T32JTJjg4FIfk+RbJDZs" Message-Id: <1088451528.28800.5.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Mon, 28 Jun 2004 21:38:48 +0200 Cc: commit-classpath Subject: Re: Patch: Thread.holdLock implementation in java X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jun 2004 19:41:41 -0000 --=-T32JTJjg4FIfk+RbJDZs Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, On Thu, 2004-06-17 at 00:42, Dalibor Topic wrote: > I've implemented VMThread.holdLock in java. It's is probably quite slow,=20 > and wakes up the ocassional thread without much use, but hey, it's in=20 > java, so that's one less method to implement. OK to commit? Since everybody seemed happy with it I have committed it including a little NEWS blurb. Thanks, Mark --=-T32JTJjg4FIfk+RbJDZs Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA4HPIxVhZCJWr9QwRAq5FAJ9VWW9aJofZ8cPD2MPQ2vPI89n7VQCfcEaU I1AibufttY4lNYrRTJNdOso= =/CK7 -----END PGP SIGNATURE----- --=-T32JTJjg4FIfk+RbJDZs-- From MAILER-DAEMON Mon Jun 28 16:51:35 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bf36F-0005a4-IY for mharc-commit-classpath@gnu.org; Mon, 28 Jun 2004 16:51:35 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bf36F-0005Zz-0U for commit-classpath@gnu.org; Mon, 28 Jun 2004 16:51:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bf36E-0005Zn-F2 for commit-classpath@gnu.org; Mon, 28 Jun 2004 16:51:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bf36E-0005Zk-AO for commit-classpath@gnu.org; Mon, 28 Jun 2004 16:51:34 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1Bf34Z-0004FA-E1 for commit-classpath@gnu.org; Mon, 28 Jun 2004 16:49:51 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1Bf34V-0005S6-Qh for commit-classpath@gnu.org; Mon, 28 Jun 2004 16:49:48 -0400 From: "Roman Kennke" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9484 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Epiphany/1.2.6 X-Apparently-From: 149.229.96.5 X-Copy-To: Array Message-Id: Date: Mon, 28 Jun 2004 16:51:34 -0400 Subject: [bugs #9484] JamVM/Classpath crashes with image loading programs X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jun 2004 20:51:35 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9484] Full Item Snapshot: URL: Project: classpath Submitted by: Roman Kennke On: Mon 06/28/2004 at 20:49 Severity: 5 - Average Resolution: None Assigned to: None Status: Open Platform Version: None Summary: JamVM/Classpath crashes with image loading programs Original Submission: I found a strange segfault issue in programs that try to load/display images (GIF/JPEG). Mark and I have located the segfault to occur in native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c Line 226. Here is gdk_env used (which probably should be env instead). The real problem seems to be, that GTKToolkit is not yet initialized properly. The following workaround seems to work though: --- gnu/java/awt/peer/gtk/GdkPixbufDecoder.java 26 Jun 2004 16:06:47 -0000 1.5 +++ gnu/java/awt/peer/gtk/GdkPixbufDecoder.java 28 Jun 2004 20:34:49 -0000 @@ -57,6 +57,8 @@ System.loadLibrary("gtkpeer"); } initStaticState (); + java.awt.Toolkit.getDefaultToolkit(); + try { Thread.sleep(500); } catch (InterruptedException ignored) { } } native static void initStaticState (); private final int native_state = GtkGenericPeer.getUniqueInteger (); this means, if we wait long enough for GTKToolkit to initialize, the segfault does not occur. Any ideas how to fix this? Maybe I should add that I tried that with JamVM 1.1.4 /Roman For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Mon Jun 28 17:04:50 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bf3J4-0007ZM-Mg for mharc-commit-classpath@gnu.org; Mon, 28 Jun 2004 17:04:50 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bf3J2-0007ZG-Tm for commit-classpath@gnu.org; Mon, 28 Jun 2004 17:04:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bf3J1-0007Z4-76 for commit-classpath@gnu.org; Mon, 28 Jun 2004 17:04:48 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bf3J1-0007Z1-55 for commit-classpath@gnu.org; Mon, 28 Jun 2004 17:04:47 -0400 Received: from [213.9.1.84] (helo=box84.elkhouse.de) by monty-python.gnu.org with esmtp (TLSv1:RC4-SHA:128) (Exim 4.34) id 1Bf3H6-0007Wq-0S for commit-classpath@gnu.org; Mon, 28 Jun 2004 17:02:48 -0400 Received: from 1cust5.vr1.dtm1.alter.net ([149.229.96.5] helo=[192.168.1.3]) by box84.elkhouse.de with asmtp (Exim 4.32) id 1Bf3E9-00018J-0J for commit-classpath@gnu.org; Mon, 28 Jun 2004 22:59:45 +0200 From: Roman Kennke To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-Xy/tVhBCRsvM4WWeumyF" Message-Id: <1088456554.1113.77.camel@moonlight.localdomain> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Mon, 28 Jun 2004 23:02:34 +0200 Subject: JamVM/Classpath occasionally crashes with image loading/displaying programs X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jun 2004 21:04:49 -0000 --=-Xy/tVhBCRsvM4WWeumyF Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Hi list, I found a strange segfault issue in programs that try to load/display images (GIF/JPEG). This segfault does occur seemingly randomly, sometimes it works. When running in GDB it _always_ works. Mark and I have located the segfault to occur in=20 native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c Line 226. Here is gdk_env used (which probably should be env instead). The real problem seems to be, that GTKToolkit is not yet initialized properly.=20 The following workaround seems to work though:=20 --- gnu/java/awt/peer/gtk/GdkPixbufDecoder.java 26 Jun 2004 16:06:47 -0000 1.5=20 +++ gnu/java/awt/peer/gtk/GdkPixbufDecoder.java 28 Jun 2004 20:34:49 -0000=20 @@ -57,6 +57,8 @@=20 System.loadLibrary("gtkpeer");=20 }=20 initStaticState ();=20 + java.awt.Toolkit.getDefaultToolkit();=20 + try { Thread.sleep(500); } catch (InterruptedException ignored) { }=20 }=20 native static void initStaticState ();=20 private final int native_state =3D GtkGenericPeer.getUniqueInteger ();=20 this means, if we wait long enough for GTKToolkit to initialize, the segfault does not occur. This seems to be the reason, why it does not crash inside GDB. Any ideas how to fix this? Maybe I should add that I tried that with JamVM 1.1.4=20 I include the backtrace from gdb here: 0x419928b8 in ?? () #1 0x431b64c7 in Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_pumpBytes ( env=3D0x440534cd, obj=3D0x440534cd, jarr=3D0x402349d0, len=3D2048) at gnu_java_awt_peer_gtk_GdkPixbufDecoder.c:226 #2 0x0805bca9 in callJNIMethod (env=3D0x440534cd, class=3D0x0, sig=3D0x813cad3 "\b=D8 \032@=D8 \032@", extra=3D4, ostack=3D0x8126050, f=3D0x431b6480 "U\211=E5\203=EC(\211}=FC\213}\024\211]=F4=E8\214=E3=FF= =FF\201=C38M\001") at dll_md.c:41 #3 0x0804da94 in callJNIWrapper (class=3D0x0, mb=3D0x82134d8, ostack=3D0x440534cd) at dll.c:296 #4 0x0804d5ed in resolveNativeWrapper (class=3D0x440534cd, mb=3D0x82134d8, ostack=3D0x8126050) at dll.c:183 #5 0x0805260f in executeJava () at interp.c:1618 #6 0x0804e522 in executeMethodVaList (ob=3D0x401a8df8, class=3D0x440534cd, mb=3D0x8110120, jargs=3D0x431a9aac "") at execute.c:66 #7 0x0804e3b6 in executeMethodArgs (ob=3D0x440534cd, class=3D0x440534cd, mb=3D0x440534cd) at execute.c:38 #8 0x0805a681 in threadStart (arg=3D0x80e3278) at thread.c:256 #9 0x400259b4 in start_thread () from /lib/tls/libpthread.so.0 #10 0x00000000 in ?? () /Roman=20 --=-Xy/tVhBCRsvM4WWeumyF Content-Type: application/pgp-signature; name=signature.asc Content-Description: Dies ist ein digital signierter Nachrichtenteil -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA4Idq3sO1VIw8IDoRAmV/AJ9cpFUFHoC0kd70zyiLJlwJhq3YegCfZZD1 bRMZ0WbD9eXF3EGvTstyhXc= =EEsR -----END PGP SIGNATURE----- --=-Xy/tVhBCRsvM4WWeumyF-- From MAILER-DAEMON Mon Jun 28 17:33:57 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bf3lF-0004uy-58 for mharc-commit-classpath@gnu.org; Mon, 28 Jun 2004 17:33:57 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bf3l7-0004uC-5J for commit-classpath@gnu.org; Mon, 28 Jun 2004 17:33:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bf3l5-0004th-Oc for commit-classpath@gnu.org; Mon, 28 Jun 2004 17:33:48 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bf3l5-0004te-LQ for commit-classpath@gnu.org; Mon, 28 Jun 2004 17:33:47 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bf3jM-0002oN-65 for commit-classpath@gnu.org; Mon, 28 Jun 2004 17:32:00 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1Bf3iy-00017C-00; Mon, 28 Jun 2004 23:31:36 +0200 From: Mark Wielaard To: Dalibor Topic In-Reply-To: <40D0AFB6.6020700@kaffe.org> References: <40D0AFB6.6020700@kaffe.org> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-sLY2ZMIs4NzQKEfiRmUY" Message-Id: <1088458300.28802.11.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Mon, 28 Jun 2004 23:31:40 +0200 Cc: commit-classpath Subject: Re: patch to improve javadoc and exception message in DateFormat.parse X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jun 2004 21:33:49 -0000 --=-sLY2ZMIs4NzQKEfiRmUY Content-Type: multipart/mixed; boundary="=-7yVC8rgygfuhbHCeka+B" --=-7yVC8rgygfuhbHCeka+B Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi Dalibor, On Wed, 2004-06-16 at 22:38, Dalibor Topic wrote: > attached is small patch for DateFormat.parse and its changelog. Thanks. I committed a slightly reformatted patch that doesn't have a line > 80 characters and updates the copyright year. Cheers, Mark --=-7yVC8rgygfuhbHCeka+B Content-Disposition: inline; filename=DataFormat.patch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=DataFormat.patch; charset=iso-8859-1 MjAwMy0wNi0yNyAgRGFsaWJvciBUb3BpYyAgPHJvYmlsYWRAa2FmZmUub3JnPg0KDQogICAgICAg ICogamF2YS90ZXh0L0RhdGVGb3JtYXQuamF2YSAocGFyc2UpOg0KCUltcHJvdmVkIGphdmFkb2Mu IEltcHJvdmVkIGV4Y2VwdGlvbiBtZXNzYWdlLg0KDQpJbmRleDogamF2YS90ZXh0L0RhdGVGb3Jt YXQuamF2YQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnNyb290L2NsYXNzcGF0aC9jbGFzc3Bh dGgvamF2YS90ZXh0L0RhdGVGb3JtYXQuamF2YSx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTMN CmRpZmYgLXUgLXIxLjEzIERhdGVGb3JtYXQuamF2YQ0KLS0tIGphdmEvdGV4dC9EYXRlRm9ybWF0 LmphdmEJMTUgSnVuIDIwMDQgMjI6NDA6MzkgLTAwMDAJMS4xMw0KKysrIGphdmEvdGV4dC9EYXRl Rm9ybWF0LmphdmEJMjggSnVuIDIwMDQgMjE6Mjk6MzcgLTAwMDANCkBAIC0xLDUgKzEsNiBAQA0K IC8qIERhdGVGb3JtYXQuamF2YSAtLSBDbGFzcyBmb3IgZm9ybWF0dGluZy9wYXJzaW5nIGRhdGUv dGltZXMNCi0gICBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorICAgQ29weXJpZ2h0IChDKSAxOTk4LCAxOTk5 LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0DQorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuDQogDQogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIENsYXNzcGF0aC4NCiANCkBAIC01OTEs NiArNTkyLDcgQEANCiAgIC8qKg0KICAgICogVGhpcyBtZXRob2QgcGFyc2VzIHRoZSBzcGVjaWZp ZWQgZGF0ZS90aW1lIHN0cmluZy4NCiAgICAqDQorICAgKiBAcGFyYW0gc291cmNlIFRoZSBzdHJp bmcgdG8gcGFyc2UuDQogICAgKiBAcmV0dXJuIFRoZSByZXN1bHRhbnQgZGF0ZS4NCiAgICAqDQog ICAgKiBAZXhjZXB0aW9uIFBhcnNlRXhjZXB0aW9uIElmIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGNh bm5vdCBiZSBwYXJzZWQuDQpAQCAtNjA0LDcgKzYwNiw4IEBADQogCWludCBpbmRleCA9IHBvcy5n ZXRFcnJvckluZGV4KCk7DQogCWlmIChpbmRleCA8IDApDQogCSAgaW5kZXggPSBwb3MuZ2V0SW5k ZXgoKTsNCi0JdGhyb3cgbmV3IFBhcnNlRXhjZXB0aW9uKCJpbnZhbGlkIERhdGUgc3ludGF4Iiwg aW5kZXgpOw0KKwl0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24oImludmFsaWQgRGF0ZSBzeW50YXgg aW4gXCIiDQorCQkJCSArIHNvdXJjZSArICdcIicsIGluZGV4KTsNCiAgICAgICB9DQogICAgIHJl dHVybiByZXN1bHQ7DQogICB9DQo= --=-7yVC8rgygfuhbHCeka+B-- --=-sLY2ZMIs4NzQKEfiRmUY Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA4I48xVhZCJWr9QwRAvNIAKCm0O5bD62aHGJ9rTX4u2CoASJPfwCdHN91 FuGr8SgimW0YGdQrniW0n/w= =9KlP -----END PGP SIGNATURE----- --=-sLY2ZMIs4NzQKEfiRmUY-- From MAILER-DAEMON Tue Jun 29 06:03:18 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfFSP-0006eW-M9 for mharc-commit-classpath@gnu.org; Tue, 29 Jun 2004 06:03:17 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfFSN-0006dF-6o for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:03:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfFSK-0006cf-By for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:03:14 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfFSJ-0006cc-SZ for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:03:12 -0400 Received: from [62.177.154.238] (helo=lembu.sumatrasoftware.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BfFQG-0007NK-R5 for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:01:05 -0400 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 Date: Tue, 29 Jun 2004 12:00:57 +0200 Message-ID: <788B535AB1F9CB49BB9C229372B50ACC10CD0D@LEMBU.sumatrasoftware.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: DatagramPacket patch Thread-Index: AcRdv/lfa1EhGmHGQxO1iOcq86YKnA== From: "Jeroen Frijters" To: "commit-classpath" Subject: DatagramPacket patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jun 2004 10:03:15 -0000 Hi, Does anyone have any objections to the patch below? The docs say nothing about address not allowed to be null and indeed Sun's implementation does allow it. Regards, Jeroen Index: java/net/DatagramPacket.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/classpath/classpath/java/net/DatagramPacket.java,v retrieving revision 1.14 diff -u -r1.14 DatagramPacket.java --- java/net/DatagramPacket.java 8 Apr 2004 16:26:03 -0000 1.14 +++ java/net/DatagramPacket.java 29 Jun 2004 09:41:40 -0000 @@ -278,9 +278,6 @@ */ public synchronized void setAddress(InetAddress address) { - if (address =3D=3D null) - throw new NullPointerException("Null address"); - this.address =3D address; } =20 From MAILER-DAEMON Tue Jun 29 06:07:32 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfFWW-0007fF-6I for mharc-commit-classpath@gnu.org; Tue, 29 Jun 2004 06:07:32 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfFWT-0007fA-3f for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:07:29 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfFWQ-0007ev-Pb for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:07:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfFWQ-0007es-Ii for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:07:26 -0400 Received: from [62.177.154.238] (helo=lembu.sumatrasoftware.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BfFUA-0002KF-QW for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:05:07 -0400 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 Date: Tue, 29 Jun 2004 12:05:03 +0200 Message-ID: <788B535AB1F9CB49BB9C229372B50ACC10CD0E@LEMBU.sumatrasoftware.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: FYI: Thread.sleep() patch Thread-Index: AcRdwIvNM8g7FR73QOCSCuA9gyEITg== From: "Jeroen Frijters" To: "commit-classpath" Subject: FYI: Thread.sleep() patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jun 2004 10:07:30 -0000 Hi, I committed the patch below. Regards, Jeroen 2004-06-29 Jeroen Frijters * java/lang/Thread.java (sleep(long,int)): Added argument checking. Index: java/lang/Thread.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/classpath/classpath/java/lang/Thread.java,v retrieving revision 1.7 diff -u -r1.7 Thread.java --- java/lang/Thread.java 14 Mar 2004 14:14:06 -0000 1.7 +++ java/lang/Thread.java 29 Jun 2004 09:41:40 -0000 @@ -801,6 +801,9 @@ */ public static void sleep(long ms, int ns) throws InterruptedException { + if(ms < 0 || ns < 0 || ns > 999999) + throw new IllegalArgumentException(); + VMThread.sleep(ms, ns); } =20 From MAILER-DAEMON Tue Jun 29 06:17:21 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfFg0-00013p-CK for mharc-commit-classpath@gnu.org; Tue, 29 Jun 2004 06:17:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfFfx-00013O-L3 for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:17:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfFfv-00012l-B3 for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:17:16 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfFfv-00012K-6W for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:17:15 -0400 Received: from [212.6.122.151] (helo=mail5.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BfFeD-0002Vx-G6 for commit-classpath@gnu.org; Tue, 29 Jun 2004 06:15:29 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-95-170.ewetel.net [80.228.95.170]) by mail5.ewetel.de (8.12.1/8.12.9) with ESMTP id i5TAFGgq014435; Tue, 29 Jun 2004 12:15:17 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BfFjg-0003TO-00; Tue, 29 Jun 2004 12:21:08 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Tue, 29 Jun 2004 12:17:10 +0200 User-Agent: KMail/1.6.2 References: <788B535AB1F9CB49BB9C229372B50ACC10CD0D@LEMBU.sumatrasoftware.com> In-Reply-To: <788B535AB1F9CB49BB9C229372B50ACC10CD0D@LEMBU.sumatrasoftware.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Message-Id: <200406291217.13948.konqueror@gmx.de> X-CheckCompat: OK Cc: Subject: Re: DatagramPacket patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jun 2004 10:17:18 -0000 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Dienstag, 29. Juni 2004 12:00 schrieb Jeroen Frijters: > Hi, > > Does anyone have any objections to the patch below? The docs say > nothing about address not allowed to be null and indeed Sun's > implementation does allow it. Go for it. Michael =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA4UGpWSOgCCdjSDsRAt7MAKCQbf56/YsPm1lH0wmywP8UqAsfdQCgj+US niu03MwIjGIlNvjU8Gcd638=3D =3DsEqS =2D----END PGP SIGNATURE----- From MAILER-DAEMON Tue Jun 29 10:52:42 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfJyU-0007MN-OA for mharc-commit-classpath@gnu.org; Tue, 29 Jun 2004 10:52:42 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfJyS-0007LI-Qc for commit-classpath@gnu.org; Tue, 29 Jun 2004 10:52:40 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfJyQ-0007Kc-4t for commit-classpath@gnu.org; Tue, 29 Jun 2004 10:52:40 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfJyQ-0007KJ-2J for commit-classpath@gnu.org; Tue, 29 Jun 2004 10:52:38 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BfJwb-00038g-0M for commit-classpath@gnu.org; Tue, 29 Jun 2004 10:50:45 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BfJwW-0004NX-Tz for commit-classpath@gnu.org; Tue, 29 Jun 2004 10:50:41 -0400 From: "Stephen Crawley" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: bugs X-Savannah-Artifact-ID: 9495 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225 X-Apparently-From: 130.102.176.6 X-Copy-To: Array Message-Id: Date: Tue, 29 Jun 2004 10:52:40 -0400 Subject: [bugs #9495] GregorianCalendar.getTimeInMillis() fails with large millisecond values X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jun 2004 14:52:41 -0000 This mail is an automated notification from the bugs tracker of the project: classpath. /**************************************************************************/ [bugs #9495] Full Item Snapshot: URL: Project: classpath Submitted by: Stephen Crawley On: Tue 06/29/2004 at 14:50 Severity: 5 - Average Resolution: None Assigned to: None Status: Open Platform Version: None Summary: GregorianCalendar.getTimeInMillis() fails with large millisecond values Original Submission: getTimeInMillis() converts large (magnitude) values to year/month/day incorrectly. Typically, it miscalculates the month as negative and throws IllegalArgumentException. For example: FAIL: gnu.testlet.java.util.GregorianCalendar.conversion: uncaught exception at "Testing setTimeInMillis(281474976710656) i = 48" number 3 java.lang.IllegalArgumentException: month out of range at java.util.SimpleTimeZone.getOffset (SimpleTimeZone.java:684) at java.util.GregorianCalendar.computeFields (GregorianCalendar.java:610) at java.util.Calendar.setTimeInMillis (Calendar.java:541) at gnu.testlet.java.util.GregorianCalendar.conversion.testMonotonic1 (conversion.java:79) at gnu.testlet.java.util.GregorianCalendar.conversion.test (conversion.java:41) at gnu.testlet.SimpleTestHarness.runtest (SimpleTestHarness.java:254) at gnu.testlet.SimpleTestHarness.main (SimpleTestHarness.java:364) The problem is that GregorianCalendar is doing some key conversion calculations using 'int' instead of 'long', and intermediate values are overflowing. For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Tue Jun 29 14:06:44 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfN0G-00078S-Cc for mharc-commit-classpath@gnu.org; Tue, 29 Jun 2004 14:06:44 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfN0E-00077e-IU for commit-classpath@gnu.org; Tue, 29 Jun 2004 14:06:42 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfN07-00074d-Ex for commit-classpath@gnu.org; Tue, 29 Jun 2004 14:06:41 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfN07-00074a-8Q for commit-classpath@gnu.org; Tue, 29 Jun 2004 14:06:35 -0400 Received: from [207.189.223.52] (helo=email3.peakpeak.com) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BfMyB-0000el-9C for commit-classpath@gnu.org; Tue, 29 Jun 2004 14:04:35 -0400 Received: (qmail 27461 invoked from network); 29 Jun 2004 18:25:28 -0000 Received: from te0216.peakpeak.com (HELO fleche.redhat.com) ([204.144.238.216]) (envelope-sender ) by email3.peakpeak.com (qmail-ldap-1.03) with SMTP for ; 29 Jun 2004 18:25:28 -0000 Received: by fleche.redhat.com (Postfix, from userid 1000) id 109954F82A0; Tue, 29 Jun 2004 11:51:11 -0600 (MDT) To: "Jeroen Frijters" References: <788B535AB1F9CB49BB9C229372B50ACC10CD0E@LEMBU.sumatrasoftware.com> From: Tom Tromey X-Attribution: Tom Date: 29 Jun 2004 11:51:10 -0600 In-Reply-To: <788B535AB1F9CB49BB9C229372B50ACC10CD0E@LEMBU.sumatrasoftware.com> Message-ID: <87k6xqckxd.fsf@fleche.redhat.com> Lines: 7 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: commit-classpath Subject: Re: FYI: Thread.sleep() patch X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list Reply-To: tromey@redhat.com List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jun 2004 18:06:43 -0000 >>>>> "Jeroen" == Jeroen Frijters writes: Jeroen> + if(ms < 0 || ns < 0 || ns > 999999) Just a little nit: you need a space after the "if". Tom From MAILER-DAEMON Tue Jun 29 16:12:16 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfOxk-0005B8-4T for mharc-commit-classpath@gnu.org; Tue, 29 Jun 2004 16:12:16 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfOxh-0005AA-Qe for commit-classpath@gnu.org; Tue, 29 Jun 2004 16:12:13 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfOxf-000596-J1 for commit-classpath@gnu.org; Tue, 29 Jun 2004 16:12:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfOxf-00058t-GH for commit-classpath@gnu.org; Tue, 29 Jun 2004 16:12:11 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BfOvj-0007R1-FU for commit-classpath@gnu.org; Tue, 29 Jun 2004 16:10:11 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1BfOvG-0004wA-00; Tue, 29 Jun 2004 22:09:42 +0200 From: Mark Wielaard To: Thomas Fitzsimmons In-Reply-To: <1088536488.4164.255.camel@tortoise.toronto.redhat.com> References: <1088536488.4164.255.camel@tortoise.toronto.redhat.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-q60bwikX0zCSuBB86+tF" Message-Id: <1088539785.16740.7.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Tue, 29 Jun 2004 22:09:45 +0200 Cc: commit-classpath@gnu.org Subject: Re: Update FAQ to reflect new savannah CVS policies X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jun 2004 20:12:14 -0000 --=-q60bwikX0zCSuBB86+tF Content-Type: multipart/mixed; boundary="=-X52Ml4C4m9a7eeKTulIc" --=-X52Ml4C4m9a7eeKTulIc Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi Tom, On Tue, 2004-06-29 at 21:14, Thomas Fitzsimmons wrote: > Here's a patch to fix the CVS locations in the FAQ. Thanks. Installed as attached. Cheers, Mark --=-X52Ml4C4m9a7eeKTulIc Content-Disposition: inline; filename=faq.patch Content-Type: text/x-patch; name=faq.patch; charset=iso-8859-1 Content-Transfer-Encoding: base64 SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnNyb290L2NsYXNzcGF0 aC9jbGFzc3BhdGgvQ2hhbmdlTG9nLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMjY4DQpkaWZm IC11IC1yMS4yMjY4IENoYW5nZUxvZw0KLS0tIENoYW5nZUxvZwkyOCBKdW4gMjAwNCAyMTozMzow NiAtMDAwMAkxLjIyNjgNCisrKyBDaGFuZ2VMb2cJMjkgSnVuIDIwMDQgMjA6MDM6MzEgLTAwMDAN CkBAIC0xLDMgKzEsNyBAQA0KKzIwMDQtMDYtMjYgIFRob21hcyBGaXR6c2ltbW9ucyAgPGZpdHpz aW1AcmVkaGF0LmNvbT4NCisNCisJKiBkb2Mvd3d3LmdudS5vcmcvZmFxL2ZhcS53bWw6IFVwZGF0 ZSBDVlMgbG9jYXRpb25zLg0KKw0KIDIwMDMtMDYtMjcgIERhbGlib3IgVG9waWMgIDxyb2JpbGFk QGthZmZlLm9yZz4NCiANCiAgICAgICAgICogamF2YS90ZXh0L0RhdGVGb3JtYXQuamF2YSAocGFy c2UpOg0KSW5kZXg6IGRvYy93d3cuZ251Lm9yZy9mYXEvZmFxLndtbA0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT IGZpbGU6IC9jdnNyb290L2NsYXNzcGF0aC9jbGFzc3BhdGgvZG9jL3d3dy5nbnUub3JnL2ZhcS9m YXEud21sLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS44DQpkaWZmIC11IC1yMS44IGZhcS53bWwN Ci0tLSBkb2Mvd3d3LmdudS5vcmcvZmFxL2ZhcS53bWwJMTkgQXByIDIwMDQgMTk6NTU6MzQgLTAw MDAJMS44DQorKysgZG9jL3d3dy5nbnUub3JnL2ZhcS9mYXEud21sCTI5IEp1biAyMDA0IDIwOjAz OjMxIC0wMDAwDQpAQCAtMjU4LDcgKzI1OCw3IEBADQogPGZhcSBxdWVzdGlvbj0iSG93IGRvIEkg aW5zdGFsbCBNYXV2ZT8iPg0KIA0KIDxjb21tZW50ZWQtY29kZT4NCi08Y29kZS1saW5lIGNvZGU9 ImV4cG9ydCBDVlNST09UPTpwc2VydmVyOmFub25jdnNAYm9ndXMuZXhhbXBsZS5jb206L2N2cy9t YXV2ZSIgLz4NCis8Y29kZS1saW5lIGNvZGU9ImV4cG9ydCBDVlNST09UPTpleHQ6YW5vbmN2c0Bi b2d1cy5leGFtcGxlLmNvbTovY3ZzL21hdXZlIiAvPg0KIDxjb2RlLWxpbmUgY29kZT0iY3ZzIGxv Z2luIj5wYXNzd29yZCBpcyBhbm9uY3ZzPC9jb2RlLWxpbmU+DQogPGNvZGUtbGluZSBjb2RlPSJj dnMgY2hlY2tvdXQgbWF1dmUiIC8+DQogPGNvZGUtbGluZSBjb2RlPSJjZCBtYXV2ZSIgLz4NCkBA IC0zMzYsMTMgKzMzNiwxNCBAQA0KIHR3aWNlIHNvIG11Y2ggaW4geW91ciBvYmogYnVpbGQgZGly Lg0KIA0KIDxvbD4NCis8YnI+PGxpPnNldCB0aGUgQ1ZTX1JTSCBlbnZpcm9ubWVudCB2YXJpYWJs ZSB0byBzc2g8YnI+DQogPGJyPjxsaT5pbnN0YWxsIGdjaiAzLjMuMiAob3IgaGlnaGVyKTxicj4N CiA8Y29kZT4NCi1namRvYyBDVlMgOnBzZXJ2ZXI6YW5vbmN2c0BzdWJ2ZXJzaW9ucy5nbnUub3Jn Oi9jdnNyb290L2NwLXRvb2xzIG1vZHVsZSBnamRvYw0KK2dqZG9jIENWUyA6ZXh0OmFub25jdnNA c2F2YW5uYWguZ251Lm9yZzovY3Zzcm9vdC9jcC10b29scyBtb2R1bGUgZ2pkb2MNCiA8L2NvZGU+ DQogPGJyPjxsaT5pbnN0YWxsIGxpYnhtbGo8YnI+DQogPGNvZGU+DQotbGlieG1saiBDVlMgOnBz ZXJ2ZXI6YW5vbmN2c0BzdWJ2ZXJzaW9ucy5nbnUub3JnOi9jdnNyb290L2NsYXNzcGF0aHggbW9k dWxlIGxpYnhtbGo8YnI+DQorbGlieG1saiBDVlMgOmV4dDphbm9uY3ZzQHNhdmFubmFoLmdudS5v cmc6L2N2c3Jvb3QvY2xhc3NwYXRoeCBtb2R1bGUgbGlieG1sajxicj4NCiBtYWtlICYmIG1ha2Ug aW5zdGFsbA0KIDwvY29kZT4NCiANCg== --=-X52Ml4C4m9a7eeKTulIc-- --=-q60bwikX0zCSuBB86+tF Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA4cyJxVhZCJWr9QwRAhV1AJ4sVUzHFf7cOVqL/McmUpJxf08cwQCfTDgo kPMbjhn420vGbpONIK86fU8= =uYee -----END PGP SIGNATURE----- --=-q60bwikX0zCSuBB86+tF-- From MAILER-DAEMON Wed Jun 30 01:05:07 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfXHP-0004Zr-8t for mharc-commit-classpath@gnu.org; Wed, 30 Jun 2004 01:05:07 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfXHN-0004ZW-Sq for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:05:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfXHM-0004ZK-0o for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:05:05 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfXHL-0004ZH-RW for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:05:03 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BfXFZ-000809-AN for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:03:13 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BfXFU-0005Q4-Cn for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:03:09 -0400 From: "Casey Marshall" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3174 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5; No time for love, Dr. Jones) Gecko/20030715 X-Apparently-From: 24.6.46.122 X-Copy-To: Array Message-Id: Date: Wed, 30 Jun 2004 01:05:05 -0400 Subject: [patch #3174] Default implementation of VMAccessController.getStack X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 05:05:06 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3174] Full Item Snapshot: URL: Project: classpath Submitted by: Casey Marshall On: Wed 06/30/2004 at 05:02 Category: None Priority: 3 - Low Resolution: None Assigned to: None Originator Email: Status: Open Summary: Default implementation of VMAccessController.getStack Original Submission: The attached patch provides a default implementation of java.security.VMAccessController.getStack, by calling Throwable.getStackTrace(). Note that this implementation will likely not work in general: this implementation needs to get classes by name, and may not be able to. Also, since unresolvable stack frames will be silently dropped, this can lead to code running with privileges it should not have. File Attachments ------------------- ------------------------------------------------------- Date: Wed 06/30/2004 at 05:02 Name: vmac.patch Size: 3KB By: rsdio http://savannah.gnu.org/patch/download.php?item_id=3174&item_file_id=3411 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Wed Jun 30 01:06:30 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfXIj-000590-UF for mharc-commit-classpath@gnu.org; Wed, 30 Jun 2004 01:06:29 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfXIi-00058i-BM for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:06:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfXIg-000588-QG for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:06:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfXIg-000585-Nv for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:06:26 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BfXGa-0000Re-1C for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:04:16 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1BfXGV-0005TF-Dr for commit-classpath@gnu.org; Wed, 30 Jun 2004 01:04:11 -0400 From: "Casey Marshall" To: commit-classpath@gnu.org X-Savannah-Server: savannah.gnu.org:443 [199.232.41.3] X-Savannah-Project: classpath X-Savannah-Artifact: patch X-Savannah-Artifact-ID: 3174 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5; No time for love, Dr. Jones) Gecko/20030715 X-Apparently-From: 24.6.46.122 X-Copy-To: Array Message-Id: Date: Wed, 30 Jun 2004 01:06:27 -0400 Subject: [patch #3174] Default implementation of VMAccessController.getStack X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 05:06:28 -0000 This mail is an automated notification from the patch tracker of the project: classpath. /**************************************************************************/ [patch #3174] Full Item Snapshot: URL: Project: classpath Submitted by: Casey Marshall On: Wed 06/30/2004 at 05:02 Category: None Priority: 3 - Low Resolution: None Assigned to: None Originator Email: Status: Open Summary: Default implementation of VMAccessController.getStack Original Submission: The attached patch provides a default implementation of java.security.VMAccessController.getStack, by calling Throwable.getStackTrace(). Note that this implementation will likely not work in general: this implementation needs to get classes by name, and may not be able to. Also, since unresolvable stack frames will be silently dropped, this can lead to code running with privileges it should not have. File Attachments ------------------- ------------------------------------------------------- Date: Wed 06/30/2004 at 05:04 Name: vmac.ChangeLog Size: 182KB By: rsdio http://savannah.gnu.org/patch/download.php?item_id=3174&item_file_id=3412 ------------------------------------------------------- Date: Wed 06/30/2004 at 05:02 Name: vmac.patch Size: 3KB By: rsdio http://savannah.gnu.org/patch/download.php?item_id=3174&item_file_id=3411 For detailed info, follow this link: _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ From MAILER-DAEMON Wed Jun 30 06:22:08 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfcEC-0002Kq-CE for mharc-commit-classpath@gnu.org; Wed, 30 Jun 2004 06:22:08 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfcEA-0002K9-PU for commit-classpath@gnu.org; Wed, 30 Jun 2004 06:22:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfcE9-0002Jx-AU for commit-classpath@gnu.org; Wed, 30 Jun 2004 06:22:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfcE9-0002Ju-82 for commit-classpath@gnu.org; Wed, 30 Jun 2004 06:22:05 -0400 Received: from [62.177.154.238] (helo=lembu.sumatrasoftware.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BfcCD-0002zp-4U for commit-classpath@gnu.org; Wed, 30 Jun 2004 06:20:05 -0400 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 Date: Wed, 30 Jun 2004 12:19:58 +0200 Message-ID: <788B535AB1F9CB49BB9C229372B50ACC10CD28@LEMBU.sumatrasoftware.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [patch #3174] Default implementation of VMAccessController.getStack Thread-Index: AcReX9joNnw8Nvc0S6CAhADOFif9RQAK8VBA From: "Jeroen Frijters" To: Subject: RE: [patch #3174] Default implementation of VMAccessController.getStack X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 10:22:07 -0000 > Summary: Default implementation of VMAccessController.getStack >=20 > Original Submission: The attached patch provides a default=20 > implementation of java.security.VMAccessController.getStack,=20 > by calling Throwable.getStackTrace(). >=20 > Note that this implementation will likely not work in=20 > general: this implementation needs to get classes by name,=20 > and may not be able to. Also, since unresolvable stack frames=20 > will be silently dropped, this can lead to code running with=20 > privileges it should not have. This seems like a really bad idea to me. Why have a default implementation, if it's useless? Especially in the area of security, I wouldn't do this. Regards, Jeroen From MAILER-DAEMON Wed Jun 30 07:48:49 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bfda5-0002uU-03 for mharc-commit-classpath@gnu.org; Wed, 30 Jun 2004 07:48:49 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bfda3-0002t3-Jw for commit-classpath@gnu.org; Wed, 30 Jun 2004 07:48:47 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bfda1-0002ri-Vg for commit-classpath@gnu.org; Wed, 30 Jun 2004 07:48:47 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bfda1-0002rf-Tn for commit-classpath@gnu.org; Wed, 30 Jun 2004 07:48:45 -0400 Received: from [199.232.41.8] (helo=mx20.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BfdXV-0003Dl-UI for commit-classpath@gnu.org; Wed, 30 Jun 2004 07:46:10 -0400 Received: from [212.6.122.151] (helo=mail5.ewetel.de) by mx20.gnu.org with esmtp (Exim 4.34) id 1BfcUq-00025b-4n for commit-classpath@gnu.org; Wed, 30 Jun 2004 06:39:22 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-95-163.ewetel.net [80.228.95.163]) by mail5.ewetel.de (8.12.1/8.12.9) with ESMTP id i5UAb3gq007126; Wed, 30 Jun 2004 12:37:04 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BfcYO-0003Ox-00; Wed, 30 Jun 2004 12:43:00 +0200 From: Michael Koch To: commit-classpath@gnu.org Date: Wed, 30 Jun 2004 12:39:03 +0200 User-Agent: KMail/1.6.2 References: <788B535AB1F9CB49BB9C229372B50ACC10CD28@LEMBU.sumatrasoftware.com> In-Reply-To: <788B535AB1F9CB49BB9C229372B50ACC10CD28@LEMBU.sumatrasoftware.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Message-Id: <200406301239.03269.konqueror@gmx.de> X-CheckCompat: OK Cc: Subject: Re: [patch #3174] Default implementation of VMAccessController.getStack X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 11:48:47 -0000 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Mittwoch, 30. Juni 2004 12:19 schrieb Jeroen Frijters: > > Summary: Default implementation of VMAccessController.getStack > > > > Original Submission: The attached patch provides a default > > implementation of java.security.VMAccessController.getStack, > > by calling Throwable.getStackTrace(). > > > > Note that this implementation will likely not work in > > general: this implementation needs to get classes by name, > > and may not be able to. Also, since unresolvable stack frames > > will be silently dropped, this can lead to code running with > > privileges it should not have. > > This seems like a really bad idea to me. Why have a default > implementation, if it's useless? Especially in the area of > security, I wouldn't do this. At least a default implementation that is unpredicateable. In my=20 opinion the default implementation should not allow "code running=20 with privileges it should not have". This is okay as every JVM has to=20 implement VMAccessController for themself anyway to get correct stack=20 traces. Michael =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA4phHWSOgCCdjSDsRAubfAJ0UVJ/WWXkPV0ZUn2xf+tLlsVSZdQCdE/oa vP0RnPIEUtZo/uU1fvFAdos=3D =3DHXfz =2D----END PGP SIGNATURE----- From MAILER-DAEMON Wed Jun 30 13:30:37 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bfiuq-00076n-QU for mharc-commit-classpath@gnu.org; Wed, 30 Jun 2004 13:30:36 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bfiup-000752-5G for commit-classpath@gnu.org; Wed, 30 Jun 2004 13:30:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bfiun-00074j-HZ for commit-classpath@gnu.org; Wed, 30 Jun 2004 13:30:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bfiun-00074g-CG for commit-classpath@gnu.org; Wed, 30 Jun 2004 13:30:33 -0400 Received: from [66.33.197.214] (helo=ludo.dreamhost.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bfis9-0005vH-3R for commit-classpath@gnu.org; Wed, 30 Jun 2004 13:27:49 -0400 Received: from dexter (c-24-6-46-122.client.comcast.net [24.6.46.122]) by ludo.dreamhost.com (Postfix) with ESMTP id F20C627FD9; Wed, 30 Jun 2004 10:27:47 -0700 (PDT) Received: by dexter (Postfix, from userid 1000) id 32E6539; Wed, 30 Jun 2004 10:20:10 -0700 (PDT) To: Michael Koch References: <788B535AB1F9CB49BB9C229372B50ACC10CD28@LEMBU.sumatrasoftware.com> <200406301239.03269.konqueror@gmx.de> From: Casey Marshall In-Reply-To: <200406301239.03269.konqueror@gmx.de> (Michael Koch's message of "Wed, 30 Jun 2004 12:39:03 +0200") User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.2 (gnu/linux) Date: Wed, 30 Jun 2004 10:20:10 -0700 Message-ID: <87u0wtm08l.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: commit-classpath@gnu.org Subject: Re: [patch #3174] Default implementation of VMAccessController.getStack X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 17:30:35 -0000 >>>>> "Michael" == Michael Koch writes: Michael> Am Mittwoch, 30. Juni 2004 12:19 schrieb Jeroen Frijters: >> > Summary: Default implementation of VMAccessController.getStack >> > >> > Original Submission: The attached patch provides a default > >> implementation of java.security.VMAccessController.getStack, > by >> calling Throwable.getStackTrace(). >> > >> > Note that this implementation will likely not work in > general: >> this implementation needs to get classes by name, > and may not be >> able to. Also, since unresolvable stack frames > will be silently >> dropped, this can lead to code running with > privileges it should >> not have. >> >> This seems like a really bad idea to me. Why have a default >> implementation, if it's useless? Especially in the area of >> security, I wouldn't do this. Michael> At least a default implementation that is unpredicateable. In Michael> my opinion the default implementation should not allow "code Michael> running with privileges it should not have". This is okay as Michael> every JVM has to implement VMAccessController for themself Michael> anyway to get correct stack traces. I assumed that a reference implementation should illustrate what the method needs to do, not simply be empty. Besides, this method will succeed if the host VM can guarantee that Class.forName will reliably return already-loaded classes by name (I'm not sure how feasible this is. From my understanding of class loaders it should be possible to provide this guarantee, even if a pluggable loader is used). An alternative would be to return an empty (and therefore unprivileged) stack if one of the classes cannot be resolved. -- Casey Marshall || csm@gnu.org From MAILER-DAEMON Wed Jun 30 14:56:03 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1BfkFW-0006g7-Rh for mharc-commit-classpath@gnu.org; Wed, 30 Jun 2004 14:56:02 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BfkFV-0006fv-9p for commit-classpath@gnu.org; Wed, 30 Jun 2004 14:56:01 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BfkFT-0006fM-Cv for commit-classpath@gnu.org; Wed, 30 Jun 2004 14:56:00 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BfkFT-0006fC-BD for commit-classpath@gnu.org; Wed, 30 Jun 2004 14:55:59 -0400 Received: from [212.6.122.115] (helo=mail1.ewetel.de) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BfkDY-0005lm-IO; Wed, 30 Jun 2004 14:54:00 -0400 Received: from majestix.konqueror.de (dynadsl-080-228-95-163.ewetel.net [80.228.95.163]) by mail1.ewetel.de (8.12.1/8.12.9) with ESMTP id i5UIrwGs019379; Wed, 30 Jun 2004 20:53:58 +0200 (MEST) Received: from asterix.konqueror.de ([192.168.1.3]) by majestix.konqueror.de with esmtp (Exim 3.35 #1 (Debian)) id 1BfkJJ-0004PP-00; Wed, 30 Jun 2004 20:59:57 +0200 From: Michael Koch To: Casey Marshall Date: Wed, 30 Jun 2004 20:55:56 +0200 User-Agent: KMail/1.6.2 References: <788B535AB1F9CB49BB9C229372B50ACC10CD28@LEMBU.sumatrasoftware.com> <200406301239.03269.konqueror@gmx.de> <87u0wtm08l.fsf@gnu.org> In-Reply-To: <87u0wtm08l.fsf@gnu.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Message-Id: <200406302055.56957.konqueror@gmx.de> X-CheckCompat: OK Cc: commit-classpath@gnu.org Subject: Re: [patch #3174] Default implementation of VMAccessController.getStack X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 18:56:01 -0000 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Mittwoch, 30. Juni 2004 19:20 schrieb Casey Marshall: > >>>>> "Michael" =3D=3D Michael Koch writes: > > Michael> Am Mittwoch, 30. Juni 2004 12:19 schrieb Jeroen Frijters: > >> > Summary: Default implementation of VMAccessController.getStack > >> > > >> > Original Submission: The attached patch provides a default > > >> > >> implementation of java.security.VMAccessController.getStack, > > >> by calling Throwable.getStackTrace(). > >> > >> > Note that this implementation will likely not work in > > >> > general: > >> > >> this implementation needs to get classes by name, > and may not > >> be able to. Also, since unresolvable stack frames > will be > >> silently dropped, this can lead to code running with > > >> privileges it should not have. > >> > >> This seems like a really bad idea to me. Why have a default > >> implementation, if it's useless? Especially in the area of > >> security, I wouldn't do this. > > Michael> At least a default implementation that is unpredicateable. > In Michael> my opinion the default implementation should not allow > "code Michael> running with privileges it should not have". This is > okay as Michael> every JVM has to implement VMAccessController for > themself Michael> anyway to get correct stack traces. > > I assumed that a reference implementation should illustrate what > the method needs to do, not simply be empty. Besides, this method > will succeed if the host VM can guarantee that Class.forName will > reliably return already-loaded classes by name (I'm not sure how > feasible this is. From my understanding of class loaders it should > be possible to provide this guarantee, even if a pluggable loader > is used). > > An alternative would be to return an empty (and therefore > unprivileged) stack if one of the classes cannot be resolved. If that is garanteed to be secure by default I'm find with it. I just=20 want JVM developers to think about this and not just using the=20 insecure default. Michael =2D --=20 Homepage: http://www.worldforge.org/ =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFA4wy8WSOgCCdjSDsRAoCqAJ4iD/4MQxMVr8bt7xpJYo+YrbDKxACbBkW3 +OjaeBZe+G6PxjaK3abLyXA=3D =3DrlX8 =2D----END PGP SIGNATURE----- From MAILER-DAEMON Wed Jun 30 15:52:41 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bfl8K-0005MS-Df for mharc-commit-classpath@gnu.org; Wed, 30 Jun 2004 15:52:40 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bfl8J-0005Lq-3c for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:52:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bfl8H-0005L6-5s for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:52:38 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bfl8G-0005Kv-VY for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:52:37 -0400 Received: from [82.161.94.186] (helo=gnu.wildebeest.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bfl64-0007eZ-8l for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:50:20 -0400 Received: from elsschot.wildebeest.org ([192.168.1.26]) by gnu.wildebeest.org with esmtp (Exim 3.35 #1 (Debian)) id 1Bfl5f-0000Fz-00 for ; Wed, 30 Jun 2004 21:49:55 +0200 From: Mark Wielaard To: commit-classpath@gnu.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-2SACls/Nwaja8d2ragqL" Message-Id: <1088624996.29405.1.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Wed, 30 Jun 2004 21:49:57 +0200 Subject: Small import clean in gnu.regexp X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 19:52:39 -0000 --=-2SACls/Nwaja8d2ragqL Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, Very small cleanup from Kaffe. Mainly to see if log_accum (automatic CVS commit messages) work. 2003-06-30 Dalibor Topic * gnu/regexp/CharIndexedInputStream.java: Reorganized imports. Cheers, Mark diff -u -r1.1 CharIndexedInputStream.java --- gnu/regexp/CharIndexedInputStream.java 7 Mar 2004 23:58:54 -0000 = 1.1 +++ gnu/regexp/CharIndexedInputStream.java 30 Jun 2004 19:48:53 -0000 @@ -36,9 +36,9 @@ exception statement from your version. */ package gnu.regexp; -import java.io.InputStream; import java.io.BufferedInputStream; import java.io.IOException; +import java.io.InputStream; // TODO: move(x) shouldn't rely on calling next() x times --=-2SACls/Nwaja8d2ragqL Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBA4xlkxVhZCJWr9QwRAv8hAJ93izDotv3nYv98X6cSXYdaua6rPgCfZjpN 5WgfCfkmUEy5RNVTanRNA8U= =8bJ0 -----END PGP SIGNATURE----- --=-2SACls/Nwaja8d2ragqL-- From MAILER-DAEMON Wed Jun 30 15:54:15 2004 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bfl9r-0005pA-BI for mharc-commit-classpath@gnu.org; Wed, 30 Jun 2004 15:54:15 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bfl9o-0005ov-M5 for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:54:14 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bfl9o-0005ob-72 for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:54:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bfl9o-0005oY-5I for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:54:12 -0400 Received: from [199.232.41.5] (helo=savannah.gnu.org) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1Bfl7N-0008Tp-Hu for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:51:41 -0400 Received: from localhost ([127.0.0.1]) by savannah.gnu.org with smtp (Exim 4.34) id 1Bfl7J-00005U-Oo for commit-classpath@gnu.org; Wed, 30 Jun 2004 15:51:38 -0400 To: commit-classpath@gnu.org From: Mark Wielaard Message-Id: Date: Wed, 30 Jun 2004 15:54:12 -0400 Subject: classpath ./ChangeLog gnu/regexp/CharIndexedInp... X-BeenThere: commit-classpath@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Automatic administrative message \(CVS, bugs, regressions\)." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2004 19:54:14 -0000 CVSROOT: /cvsroot/classpath Module name: classpath Branch: Changes by: Mark Wielaard 04/06/30 19:51:37 Modified files: . : ChangeLog gnu/regexp : CharIndexedInputStream.java Log message: 2003-06-30 Dalibor Topic * gnu/regexp/CharIndexedInputStream.java: Reorganized imports. CVSWeb URLs: http://savannah.gnu.org/cgi-bin/viewcvs/classpath/classpath/ChangeLog.diff?tr1=1.2270&tr2=1.2271&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/classpath/classpath/gnu/regexp/CharIndexedInputStream.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text