[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#23949: 25.0.95; Regression in handling error caused by (string-match
From: |
Eli Zaretskii |
Subject: |
bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil) |
Date: |
Wed, 13 Jul 2016 19:18:05 +0300 |
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: kaushal.modi@gmail.com, schwab@suse.de, 23949@debbugs.gnu.org
> Date: Wed, 13 Jul 2016 12:00:40 -0400
>
> >> > I also think that the "breaks a lot of Elisp code" part is at least a
> >> > tad exaggerated.
> >> Binding inhibit-changing-match-data to t will pretty much break any
> >> function that uses match-beginning or match-end.
> > But those functions aren't supposed to run when string-match is
> > called.
>
> Yet they are in bug#23949.
No, they aren't. They run from the debugger.
> >> > (defsubst string-match-p (regexp string &optional start)
> >> > "\
> >> > Same as `string-match' except this function does not change the match
> >> > data."
> >> > (condition-case err
> >> > (let ((inhibit-changing-match-data t))
> >> > (string-match regexp string start))
> >> > (error (signal (car err) (cdr err)))))
> >> That will still cause the same problems when debug-on-signal is non-nil.
> > So you don't consider this an improvement that should be installed?
>
> No.
What about the suggestion made by Andreas?
> A simpler and more robust solution would be
> (save-match-data (string-match regexp string start))
>
> Of course, with either solution, it means that string-match-p is even
> worse in terms of efficiency, whereas the unsuspecting coder would
> rightfully expect string-match-p to be (slightly) *more* efficient than
> string-match.
Exactly. And we are punishing the innocent (the calls that don't
signal an error) for fear of the guilty (those that do).
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), (continued)
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Kaushal Modi, 2016/07/12
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Stefan Monnier, 2016/07/12
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Kaushal Modi, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Stefan Monnier, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Eli Zaretskii, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Eli Zaretskii, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Eli Zaretskii, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Stefan Monnier, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Eli Zaretskii, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Stefan Monnier, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil),
Eli Zaretskii <=
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Stefan Monnier, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Andreas Schwab, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Eli Zaretskii, 2016/07/13
- bug#23949: 25.0.95; Regression in handling error caused by (string-match-p "." nil), Andreas Schwab, 2016/07/12