From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Stephen J. Turnbull" Newsgroups: gmane.emacs.devel Subject: Re: Lisp object that refers to a C struct Date: Wed, 17 Oct 2012 15:21:40 +0900 Message-ID: <87r4ox62kr.fsf@uwakimon.sk.tsukuba.ac.jp> References: <83ehkz4edw.fsf@gnu.org> <83bog33wdr.fsf@gnu.org> <837gqq49j7.fsf@gnu.org> <83r4ox3frd.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 X-Trace: ger.gmane.org 1350454915 31669 80.91.229.3 (17 Oct 2012 06:21:55 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 17 Oct 2012 06:21:55 +0000 (UTC) Cc: Stefan Monnier , emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Oct 17 08:22:02 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TON0y-0002PX-Jc for ged-emacs-devel@m.gmane.org; Wed, 17 Oct 2012 08:22:00 +0200 Original-Received: from localhost ([::1]:43998 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TON0r-0005bs-DX for ged-emacs-devel@m.gmane.org; Wed, 17 Oct 2012 02:21:53 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:58847) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TON0p-0005bi-8N for emacs-devel@gnu.org; Wed, 17 Oct 2012 02:21:52 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TON0o-0006iP-Eu for emacs-devel@gnu.org; Wed, 17 Oct 2012 02:21:51 -0400 Original-Received: from mgmt2.sk.tsukuba.ac.jp ([130.158.97.224]:39089) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TON0m-0006eX-HA; Wed, 17 Oct 2012 02:21:48 -0400 Original-Received: from uwakimon.sk.tsukuba.ac.jp (uwakimon.sk.tsukuba.ac.jp [130.158.99.156]) by mgmt2.sk.tsukuba.ac.jp (Postfix) with ESMTP id 1B8D29708DA; Wed, 17 Oct 2012 15:21:41 +0900 (JST) Original-Received: by uwakimon.sk.tsukuba.ac.jp (Postfix, from userid 1000) id D804B1A308D; Wed, 17 Oct 2012 15:21:40 +0900 (JST) In-Reply-To: <83r4ox3frd.fsf@gnu.org> X-Mailer: VM undefined under 21.5 (beta32) "habanero" b0d40183ac79 XEmacs Lucid (x86_64-unknown-linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 130.158.97.224 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:154377 Archived-At: Eli Zaretskii writes: > > What happens if someone passes you this same integer some time after > > you've freed the C struct? More interesting, what happens if somebody chooses "I feel lucky" and passes you a random integer that happens to be a "live" watch? ISTM it fails safe (ie, doesn't crash). But it's not good. So really you want this to be entirely internal somehow. The only way to do that is to have an opaque type that you can only get a pointer to from the watch constructor. All-I-need-to-know-about-ABCs-I-learned-in-kindergarten-ly y'rs,