all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#451: 23.0.60; x-gtk-map-stock destroys match data
@ 2008-06-20  2:38 ` Nick Roberts
  2008-06-20 14:28   ` Stefan Monnier
  2008-06-21 19:55   ` bug#451: marked as done (23.0.60; x-gtk-map-stock destroys match data) Emacs bug Tracking System
  0 siblings, 2 replies; 6+ messages in thread
From: Nick Roberts @ 2008-06-20  2:38 UTC (permalink / raw)
  To: emacs-pretest-bug


In the event loop (?), update_frame_tool_bar calls x-gtk-map-stock (in
x-win.el) which uses string-match.  This changes the match data that I need for
my application.  I don't know what the rules are about using string-match from
C code but as a minimum x-gtk-map-stock should wrap save-match-data around
the call to it.


In GNU Emacs 23.0.60.19 (i686-pc-linux-gnu, GTK+ Version 2.10.11)
 of 2008-06-20 on kahikatea.snap.net.nz
Windowing system distributor `The X.Org Foundation', version 11.0.70200000
configured using `configure  'CFLAGS=-g3' '--enable-font-backend''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_NZ.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Change Log

Minor modes in effect:
  isearch-buffers-minor-mode: t
  show-paren-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: (only . t)

Recent input:
<backspace> <backspace> <backspace> <tab> C-x C-s <down-mouse-1> 
<mouse-1> C-x C-b <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<down-mouse-2> <mouse-2> <help-echo> C-x C-f <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> s r c / s t <tab> 
<backspace> <backspace> <return> <help-echo> <next> 
<next> C-h f g t x - s t <tab> C-g C-h C-h C-g <down-mouse-1> 
<mouse-movement> <mouse-1> <help-echo> <down-mouse-1> 
<mouse-1> C-x <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<menu-bar> <help-menu> <search-documentation> <find-any-object-by-name> 
C-g <down-mouse-1> <mouse-1> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<menu-bar> <help-menu> <search-documentation> <find-any-object-by-name> 
s t o c k <return> <help-echo> <down-mouse-2> <mouse-2> 
<help-echo> <help-echo> <down-mouse-2> <mouse-2> <down-mouse-1> 
<mouse-1> <help-echo> <down-mouse-1> <mouse-1> C-s 
g t k <down-mouse-1> <mouse-1> f <help-echo> <down-mouse-1> 
<mouse-1> C-s c a l l 1 C-s C-s <down-mouse-1> <mouse-1> 
C-M-S-a C-S-s C-S-s <down-mouse-1> <mouse-1> <prior> 
<prior> <prior> <next> <prior> <help-echo> <down-mouse-2> 
<mouse-2> <help-echo> <prior> <switch-frame> <down-mouse-1> 
<mouse-1> <switch-frame> <down-mouse-1> <mouse-movement> 
<mouse-1> <down-mouse-1> <mouse-1> C-S-x V G <help-echo> 
<down-mouse-1> <mouse-1> <help-echo> <down-mouse-1> 
<mouse-1> C-s c a l l 1 C-a C-r C-r <down-mouse-1> 
<mouse-1> <help-echo> <down-mouse-1> <mouse-1> <down-mouse-1> 
<mouse-1> C-s C-s <help-echo> <down-mouse-1> <mouse-1> 
<down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> C-s 
C-s C-s <help-echo> <switch-frame> <down-mouse-1> <mouse-movement> 
<mouse-1> M-x r e p o r t SPC C-g <switch-frame> <down-mouse-1> 
<mouse-1> <down-mouse-1> <mouse-movement> <mouse-1> 
<prior> <prior> <prior> <prior> <prior> <next> <prior> 
<prior> <down-mouse-1> <mouse-1> C-s C-w C-w C-w C-w 
C-s C-r C-r C-r <down-mouse-1> <mouse-1> C-M-a C-s 
C-s C-s C-s <next> <next> <next> <prior> <prior> <down-mouse-1> 
<mouse-1> C-s c a l l 1 <down-mouse-1> <mouse-1> C-s 
C-w C-r C-r C-r C-s C-s <switch-frame> <down-mouse-1> 
<mouse-1> M-x r e p o r t SPC e m SPC SPC <return>

Recent messages:
Type C-x 4 C-o RET to restore the other window.
Mark saved where search started [3 times]
Annotating...
Mark saved where search started
Redisplaying annotation...done (Spanned from 1979.6 to 5.6 days old)
Mark set
Annotating... done
Mark saved where search started [2 times]
Quit
Mark saved where search started [4 times]


-- 
Nick                                           http://www.inet.net.nz/~nickrob






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#451: 23.0.60; x-gtk-map-stock destroys match data
  2008-06-20  2:38 ` bug#451: 23.0.60; x-gtk-map-stock destroys match data Nick Roberts
@ 2008-06-20 14:28   ` Stefan Monnier
  2008-06-20 23:01     ` Nick Roberts
  2008-06-21  5:07     ` Nick Roberts
  2008-06-21 19:55   ` bug#451: marked as done (23.0.60; x-gtk-map-stock destroys match data) Emacs bug Tracking System
  1 sibling, 2 replies; 6+ messages in thread
From: Stefan Monnier @ 2008-06-20 14:28 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-pretest-bug, 451

> In the event loop (?), update_frame_tool_bar calls x-gtk-map-stock (in
> x-win.el) which uses string-match.  This changes the match data that
> I need for my application.  I don't know what the rules are about
> using string-match from C code but as a minimum x-gtk-map-stock should
> wrap save-match-data around the call to it.

The match-data is a very volatile piece of data.  So while you may be
right, I think it's more likely that the problem is in your code
(i.e., your code should save the match-data itself if it needs to use
it after some non-trivial code has been run, and by "trivial" I *really*
mean trivial).


        Stefan










^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#451: 23.0.60; x-gtk-map-stock destroys match data
  2008-06-20 14:28   ` Stefan Monnier
@ 2008-06-20 23:01     ` Nick Roberts
  2008-06-21  2:27       ` Stefan Monnier
  2008-06-21  5:07     ` Nick Roberts
  1 sibling, 1 reply; 6+ messages in thread
From: Nick Roberts @ 2008-06-20 23:01 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-pretest-bug, 451

 > > In the event loop (?), update_frame_tool_bar calls x-gtk-map-stock (in
 > > x-win.el) which uses string-match.  This changes the match data that
 > > I need for my application.  I don't know what the rules are about
 > > using string-match from C code but as a minimum x-gtk-map-stock should
 > > wrap save-match-data around the call to it.
 > 
 > The match-data is a very volatile piece of data.  So while you may be
 > right, I think it's more likely that the problem is in your code
 > (i.e., your code should save the match-data itself if it needs to use
 > it after some non-trivial code has been run, and by "trivial" I *really*
 > mean trivial).

I don't think that's right.  The problem goes away if I remove the tool bar.
If I do:

(string-match "ox" "The quick lazy fox jumped")

in the *scratch* buffer then

(match-beginning 0)
(match-end 0)

give me false values immediately afterwards.

Presumably update_frame_tool_bar gets called in between the evaluations.  I'm
not sure exactly why it's called but I have:

(add-hook 'gdb-mode-hook
'(lambda ()
   (tool-bar-mode 1)
   (if (eq window-system 'x)
       (define-key-after gud-tool-bar-map [function-step]
	 '(menu-item "Step outer" gud-function-step
		     :image (image :type xpm
		     :file "/home/nickrob/emacs/etc/images/jump-to.xpm")
		     :enable (not gud-running)
		     :visible (memq gud-minor-mode '(gdbmi gdba)))))))

in my .emacs


-- 
Nick                                           http://www.inet.net.nz/~nickrob






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#451: 23.0.60; x-gtk-map-stock destroys match data
  2008-06-20 23:01     ` Nick Roberts
@ 2008-06-21  2:27       ` Stefan Monnier
  0 siblings, 0 replies; 6+ messages in thread
From: Stefan Monnier @ 2008-06-21  2:27 UTC (permalink / raw)
  To: Nick Roberts; +Cc: emacs-pretest-bug, 451

> I don't think that's right.  The problem goes away if I remove the tool bar.
> If I do:

> (string-match "ox" "The quick lazy fox jumped")

> in the *scratch* buffer then

> (match-beginning 0)
> (match-end 0)

> give me false values immediately afterwards.

What do you mean "immediately afterwards"?  If you get back to the
toplevel in the mean time, the "immediately" actually runs a crapload of
code.  I.e. it's anything but "immediate".  Your expectation is
just wrong.

> Presumably update_frame_tool_bar gets called in between the evaluations.

This and megabytes of code, yes.


        Stefan






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#451: 23.0.60; x-gtk-map-stock destroys match data
  2008-06-20 14:28   ` Stefan Monnier
  2008-06-20 23:01     ` Nick Roberts
@ 2008-06-21  5:07     ` Nick Roberts
  1 sibling, 0 replies; 6+ messages in thread
From: Nick Roberts @ 2008-06-21  5:07 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-pretest-bug, 451

> > I don't think that's right.  The problem goes away if I remove the tool bar.
> > If I do:
> > (string-match "ox" "The quick lazy fox jumped")
> > in the *scratch* buffer then
> > (match-beginning 0)
> > (match-end 0)
> > give me false values immediately afterwards.

> What do you mean "immediately afterwards"?  If you get back to the
> toplevel in the mean time, the "immediately" actually runs a crapload of
> code.  I.e. it's anything but "immediate".  Your expectation is
> just wrong.

I meam using C-x C-e.  It looks like you are indeed right and that 
match-beginning and match-end can only be used programmatically.  I was
using edebug and getting strange values evaluating them (manually).  I
thought I had done that before - but clearly not.

Sorry but I don't know how to close the bug report.

-- 
Nick                                           http://www.inet.net.nz/~nickrob






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#451: marked as done (23.0.60; x-gtk-map-stock destroys match  data)
  2008-06-20  2:38 ` bug#451: 23.0.60; x-gtk-map-stock destroys match data Nick Roberts
  2008-06-20 14:28   ` Stefan Monnier
@ 2008-06-21 19:55   ` Emacs bug Tracking System
  1 sibling, 0 replies; 6+ messages in thread
From: Emacs bug Tracking System @ 2008-06-21 19:55 UTC (permalink / raw)
  To: Stefan Monnier

[-- Attachment #1: Type: text/plain, Size: 877 bytes --]


Your message dated Sat, 21 Jun 2008 15:46:05 -0400
with message-id <jwvmyle1sk2.fsf-monnier+emacsbugreports@gnu.org>
and subject line Re: bug#451: 23.0.60; x-gtk-map-stock destroys match data
has caused the Emacs bug report #451,
regarding 23.0.60; x-gtk-map-stock destroys match data
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact don@donarmstrong.com
immediately.)


-- 
451: http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=451
Emacs Bug Tracking System
Contact don@donarmstrong.com with problems

[-- Attachment #2: Type: message/rfc822, Size: 6256 bytes --]

From: Nick Roberts <nickrob@snap.net.nz>
To: emacs-pretest-bug@gnu.org
Subject: 23.0.60; x-gtk-map-stock destroys match data
Date: Fri, 20 Jun 2008 14:38:25 +1200 (NZST)
Message-ID: <20080620023825.6AED48FC6D@kahikatea.snap.net.nz>


In the event loop (?), update_frame_tool_bar calls x-gtk-map-stock (in
x-win.el) which uses string-match.  This changes the match data that I need for
my application.  I don't know what the rules are about using string-match from
C code but as a minimum x-gtk-map-stock should wrap save-match-data around
the call to it.


In GNU Emacs 23.0.60.19 (i686-pc-linux-gnu, GTK+ Version 2.10.11)
 of 2008-06-20 on kahikatea.snap.net.nz
Windowing system distributor `The X.Org Foundation', version 11.0.70200000
configured using `configure  'CFLAGS=-g3' '--enable-font-backend''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_NZ.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Change Log

Minor modes in effect:
  isearch-buffers-minor-mode: t
  show-paren-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: (only . t)

Recent input:
<backspace> <backspace> <backspace> <tab> C-x C-s <down-mouse-1> 
<mouse-1> C-x C-b <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<down-mouse-2> <mouse-2> <help-echo> C-x C-f <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> s r c / s t <tab> 
<backspace> <backspace> <return> <help-echo> <next> 
<next> C-h f g t x - s t <tab> C-g C-h C-h C-g <down-mouse-1> 
<mouse-movement> <mouse-1> <help-echo> <down-mouse-1> 
<mouse-1> C-x <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<menu-bar> <help-menu> <search-documentation> <find-any-object-by-name> 
C-g <down-mouse-1> <mouse-1> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<menu-bar> <help-menu> <search-documentation> <find-any-object-by-name> 
s t o c k <return> <help-echo> <down-mouse-2> <mouse-2> 
<help-echo> <help-echo> <down-mouse-2> <mouse-2> <down-mouse-1> 
<mouse-1> <help-echo> <down-mouse-1> <mouse-1> C-s 
g t k <down-mouse-1> <mouse-1> f <help-echo> <down-mouse-1> 
<mouse-1> C-s c a l l 1 C-s C-s <down-mouse-1> <mouse-1> 
C-M-S-a C-S-s C-S-s <down-mouse-1> <mouse-1> <prior> 
<prior> <prior> <next> <prior> <help-echo> <down-mouse-2> 
<mouse-2> <help-echo> <prior> <switch-frame> <down-mouse-1> 
<mouse-1> <switch-frame> <down-mouse-1> <mouse-movement> 
<mouse-1> <down-mouse-1> <mouse-1> C-S-x V G <help-echo> 
<down-mouse-1> <mouse-1> <help-echo> <down-mouse-1> 
<mouse-1> C-s c a l l 1 C-a C-r C-r <down-mouse-1> 
<mouse-1> <help-echo> <down-mouse-1> <mouse-1> <down-mouse-1> 
<mouse-1> C-s C-s <help-echo> <down-mouse-1> <mouse-1> 
<down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> C-s 
C-s C-s <help-echo> <switch-frame> <down-mouse-1> <mouse-movement> 
<mouse-1> M-x r e p o r t SPC C-g <switch-frame> <down-mouse-1> 
<mouse-1> <down-mouse-1> <mouse-movement> <mouse-1> 
<prior> <prior> <prior> <prior> <prior> <next> <prior> 
<prior> <down-mouse-1> <mouse-1> C-s C-w C-w C-w C-w 
C-s C-r C-r C-r <down-mouse-1> <mouse-1> C-M-a C-s 
C-s C-s C-s <next> <next> <next> <prior> <prior> <down-mouse-1> 
<mouse-1> C-s c a l l 1 <down-mouse-1> <mouse-1> C-s 
C-w C-r C-r C-r C-s C-s <switch-frame> <down-mouse-1> 
<mouse-1> M-x r e p o r t SPC e m SPC SPC <return>

Recent messages:
Type C-x 4 C-o RET to restore the other window.
Mark saved where search started [3 times]
Annotating...
Mark saved where search started
Redisplaying annotation...done (Spanned from 1979.6 to 5.6 days old)
Mark set
Annotating... done
Mark saved where search started [2 times]
Quit
Mark saved where search started [4 times]


-- 
Nick                                           http://www.inet.net.nz/~nickrob



[-- Attachment #3: Type: message/rfc822, Size: 2343 bytes --]

From: Stefan Monnier <monnier@iro.umontreal.ca>
To: 451-close@emacsbugs.donarmstrong.com
Subject: Re: bug#451: 23.0.60; x-gtk-map-stock destroys match data
Date: Sat, 21 Jun 2008 15:46:05 -0400
Message-ID: <jwvmyle1sk2.fsf-monnier+emacsbugreports@gnu.org>

> I meam using C-x C-e.  It looks like you are indeed right and that 
> match-beginning and match-end can only be used programmatically.  I was
> using edebug and getting strange values evaluating them (manually).  I
> thought I had done that before - but clearly not.

In edebug, if you use `e' you should be able to use match-beginning and
match-end.  But with M-: it's hopeless.

> Sorry but I don't know how to close the bug report.

Just send it to <bugnb>-close@... as I've done here.


        Stefan


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-06-21 19:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <jwvmyle1sk2.fsf-monnier+emacsbugreports@gnu.org>
2008-06-20  2:38 ` bug#451: 23.0.60; x-gtk-map-stock destroys match data Nick Roberts
2008-06-20 14:28   ` Stefan Monnier
2008-06-20 23:01     ` Nick Roberts
2008-06-21  2:27       ` Stefan Monnier
2008-06-21  5:07     ` Nick Roberts
2008-06-21 19:55   ` bug#451: marked as done (23.0.60; x-gtk-map-stock destroys match data) Emacs bug Tracking System

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.