From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#40671: [DOC] modify literal objects Date: Sun, 26 Apr 2020 16:13:53 -0700 Organization: UCLA Computer Science Department Message-ID: <60b88f52-c50d-c57a-9ce5-495e6157d36e@cs.ucla.edu> References: <527dc4b5-3176-38b5-f2c1-1483ffc814a1@cs.ucla.edu> <87k12b6sv2.fsf@web.de> <2225099d-16e1-645d-0342-a054da53363f@cs.ucla.edu> <87a7376nv9.fsf@web.de> <99d7a8f9-7732-e1e3-414e-aabbea4433ac@cs.ucla.edu> <87o8rnasfk.fsf@web.de> <9e6c138d-cb9f-6075-34df-a8d1d931343b@cs.ucla.edu> <871rofxbz9.fsf@web.de> <93463227-33a8-85a0-fd19-8b29b75997f3@yandex.ru> <969b3497-0afd-d104-6792-d744d31548fa@cs.ucla.edu> <2935ec84-bdea-2e20-01b9-8ed08cc61c6c@yandex.ru> <669981e5-f601-5c18-1a8b-ee316ad001ec@cs.ucla.edu> <4b8b7e98-029e-58ac-59ff-6cd984b7eb85@yandex.ru> <530d3597-aaaa-f019-bafa-8229d13e7248@yandex.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="32472"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 Cc: Michael Heerdegen , Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= , ke.vigouroux@laposte.net, 40671@debbugs.gnu.org, Richard Stallman To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Apr 27 01:15:14 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jSqUT-0008Fw-Ek for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 27 Apr 2020 01:15:13 +0200 Original-Received: from localhost ([::1]:48552 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSqUS-0006uq-Be for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 26 Apr 2020 19:15:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44798) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSqUI-0006r2-LV for bug-gnu-emacs@gnu.org; Sun, 26 Apr 2020 19:15:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSqUI-0001l3-9a for bug-gnu-emacs@gnu.org; Sun, 26 Apr 2020 19:15:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:51876) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jSqUH-0001ja-Sz for bug-gnu-emacs@gnu.org; Sun, 26 Apr 2020 19:15:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jSqUH-0003Zx-OK for bug-gnu-emacs@gnu.org; Sun, 26 Apr 2020 19:15:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 26 Apr 2020 23:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40671 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 40671-submit@debbugs.gnu.org id=B40671.158794284313676 (code B ref 40671); Sun, 26 Apr 2020 23:15:01 +0000 Original-Received: (at 40671) by debbugs.gnu.org; 26 Apr 2020 23:14:03 +0000 Original-Received: from localhost ([127.0.0.1]:35189 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jSqTL-0003YV-0G for submit@debbugs.gnu.org; Sun, 26 Apr 2020 19:14:03 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:58178) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jSqTI-0003Xp-UN for 40671@debbugs.gnu.org; Sun, 26 Apr 2020 19:14:01 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 09E5A16008E; Sun, 26 Apr 2020 16:13:55 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 30DjwFFSZl_s; Sun, 26 Apr 2020 16:13:54 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 2741A1600D3; Sun, 26 Apr 2020 16:13:54 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 7oHD7aij4f5V; Sun, 26 Apr 2020 16:13:54 -0700 (PDT) Original-Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id CAE7016008E; Sun, 26 Apr 2020 16:13:53 -0700 (PDT) Autocrypt: addr=eggert@cs.ucla.edu; prefer-encrypt=mutual; keydata= LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgptUUlOQkV5QWNtUUJFQURB QXlIMnhvVHU3cHBHNUQzYThGTVpFb243NGRDdmM0K3ExWEEySjJ0QnkycHdhVHFmCmhweHhk R0E5Smo1MFVKM1BENGJTVUVnTjh0TFowc2FuNDdsNVhUQUZMaTI0NTZjaVNsNW04c0thSGxH ZHQ5WG0KQUF0bVhxZVpWSVlYL1VGUzk2ZkR6ZjR4aEVtbS95N0xiWUVQUWRVZHh1NDd4QTVL aFRZcDVibHRGM1dZRHoxWQpnZDdneDA3QXV3cDdpdzdlTnZub0RUQWxLQWw4S1lEWnpiRE5D UUdFYnBZM2VmWkl2UGRlSStGV1FONFcra2doCnkrUDZhdTZQcklJaFlyYWV1YTdYRGRiMkxT MWVuM1NzbUUzUWpxZlJxSS9BMnVlOEpNd3N2WGUvV0szOEV6czYKeDc0aVRhcUkzQUZINmls QWhEcXBNbmQvbXNTRVNORnQ3NkRpTzFaS1FNcjlhbVZQa25qZlBtSklTcWRoZ0IxRApsRWR3 MzRzUk9mNlY4bVp3MHhmcVQ2UEtFNDZMY0ZlZnpzMGtiZzRHT1JmOHZqRzJTZjF0azVlVThN Qml5Ti9iClowM2JLTmpOWU1wT0REUVF3dVA4NGtZTGtYMndCeHhNQWhCeHdiRFZadWR6eERa SjFDMlZYdWpDT0pWeHEya2wKakJNOUVUWXVVR3FkNzVBVzJMWHJMdzYrTXVJc0hGQVlBZ1Jy NytLY3dEZ0JBZndoU In-Reply-To: <530d3597-aaaa-f019-bafa-8229d13e7248@yandex.ru> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:179116 Archived-At: On 4/26/20 2:23 PM, Dmitry Gutov wrote: > This just illustrates a weakness of type system in C/C++. The same way you could > pass a string into a function that expects an int. Although it's a weakness, it's different from the char * vs int weakness. It's well-defined in C that one can cast char * to char const * and back without trouble. The same is not true for casting char * to int and back. > is it undefined? Yes, it's undefined. C11 section 6.7.3 paragraph 6 says, "If an attempt is made to modify an object defined with a const-qualified type through use of an lvalue with non-const-qualified type, the behavior is undefined." > Do you have an example of a version of Emacs where this behavior was different? Emacs 26. >> Unfortunately, the relevant code is hairy and any fixes certainly won't happen >> before the Emacs 27 release. In the meantime it's better to warn users clearly >> about the gotchas in this area, to help prevent some of the confusion >> exemplified by Bug#40671. > > Perhaps you meant some other bug report? No, the original bug report that started this thread illustrates some of the confusion in this area. > In all of my experience, the term "constant" is usually applied to names > (variables), or pointers. And it almost always means that you're not allowed to > change it. Or if you are, you can't do it by accident. Unfortunately that experience does not apply to C and to other low-level languages. Even Java once allowed programs to modify "constants" by using reflection, though recent Java versions have fixed this. > The previous term "literal objects", however, seems accurate enough We could use any term we like, and if there's consensus for using the term "literal object" instead of "constant" then we can redo the manual that way. However, the problem can occur with strings that were never string literals in any source-code Elisp program. And a Elisp string can begin its life as a mutable string and then become a "constant" (or "literal object") later. So it's not clear that the longer phrase is less confusing.