From: Alan Mackenzie <acm@muc.de>
To: "Tanis, Craig" <Craig-Tanis@utc.edu>
Cc: 28418@debbugs.gnu.org
Subject: bug#28418: 25.2; c++ angle bracket incorrect mismatch
Date: 11 Sep 2017 17:55:08 -0000 [thread overview]
Message-ID: <20170911175508.91132.qmail__17703.5945620903$1505154618$gmane$org@mail.muc.de> (raw)
In-Reply-To: <mailman.329.1505143569.14750.bug-gnu-emacs@gnu.org>
Hello, Craig.
In article <mailman.329.1505143569.14750.bug-gnu-emacs@gnu.org> you wrote:
> The opening angle bracket from the stream insertion operator (<<)
> becomes misclassified as an opening delimiter if a later string literal in the
> file contains >>
Firstly, thanks for taking the trouble to report this bug, and thanks
even more for trimming it down to a nice, easy to work with snippet.
> See the following sample file. Notice that you must type in the string
> as indicated because the act of typing triggers the misclassification.
> When the error occurs, the closing bracket matches the '<' right before "nice".
Being more precise, I think the >> in the string already has to exist at
the time the << gets typed.
> I suggest pasting this into a new file and then manipulating the first string.
> //---------------------------
> int main(int argc, char *argv[])
> {
> std::cout << "nice"; // <-- manually type in this string
> return 0;
> }
> void subroutine()
> {
> char* foo= "a >> b";
> return;
> }
> //---------------------------
What seems to be happening is after typing in the opening " of "nice",
but before typing in the closing ", we have a sort of string extending
from that opening " to the opening " of "a >> b". That >> is
(temporarily) outside a string, and is thus balanced with the <<. This
balancing is done by applying a "text property" to each of the second <
and the first > characters.
Where things go wrong is when "nice" is closed by typing the closing ".
At this point, the text properties don't get removed from these < and >,
although they no longer match. This is the fault in the code.
Give me a little time, and I will fix it.
> In GNU Emacs 25.2.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 (Build 13F1911))
> of 2017-04-21 built on builder10-9.porkrind.org
> Windowing system distributor 'Apple', version 10.3.1504
> Configured using:
> 'configure --with-ns '--enable-locallisppath=/Library/Application
> Support/Emacs/${version}/site-lisp:/Library/Application
> Support/Emacs/site-lisp' --with-modules'
> Major mode: C++/l
[ .... ]
> ----
> Craig Tanis, PhD
> UTC Computer Science and Engineering
> craig-tanis@utc.edu
--
Alan Mackenzie (Nuremberg, Germany).
next prev parent reply other threads:[~2017-09-11 17:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-11 14:49 bug#28418: 25.2; c++ angle bracket incorrect mismatch Tanis, Craig
[not found] ` <mailman.329.1505143569.14750.bug-gnu-emacs@gnu.org>
2017-09-11 17:55 ` Alan Mackenzie [this message]
[not found] ` <20170911175508.91132.qmail@mail.muc.de>
2017-09-11 21:15 ` Alan Mackenzie
[not found] ` <47D29868-55CE-475C-8827-0BBC60621D75@utc.edu>
2017-09-12 17:07 ` Alan Mackenzie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='20170911175508.91132.qmail__17703.5945620903$1505154618$gmane$org@mail.muc.de' \
--to=acm@muc.de \
--cc=28418@debbugs.gnu.org \
--cc=Craig-Tanis@utc.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).