[PATCH] fix buffer overrun in pdump_load()
17 years, 4 months
Nix
The initial problem was easy to describe: starting XEmacs with absolute
paths was broken (at least it is if you use a separate .dmp file, which
I'm constrained to right now because I'm using the new GC.)
loki 1686 /usr/packages/xemacs/i686-loki% which xemacs
/usr/bin/xemacs
loki 1687 /usr/packages/xemacs/i686-loki% xemacs -vanilla -batch -eval '(message "foo")'
foo
loki 1685 /usr/packages/xemacs/i686-loki% /usr/bin/xemacs -vanilla -batch -eval '(message "foo")'
temacs can only be run in -batch mode.
strace and valgrind (and a bit of gdb) pinpoint the cause:
loki 1688 /usr/packages/xemacs/i686-loki% strace -e open /usr/bin/xemacs -vanilla -batch -eval '(message "foo")'
[...]
open("/lib/libpthread.so.0", O_RDONLY) = 3
open("", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/fonts/fonts.conf", O_RDONLY|O_LARGEFILE) = 3
[...]
==29209== Syscall param open(filename) points to unaddressable byte(s)
==29209== at 0x4D873272: open64 (in /lib/libc-2.4.so)
==29209== Address 0xBEBA0070 is not stack'd, malloc'd or (recently) free'd
If you're unlucky, that "" turns into an -EFAULT, and if you're *really*
unlucky, you get a segfault.
This is happening because in src/dumper.c:pdump_load(), exe_path is
being sized as (if XEmacs is invoked with an absolute path) one byte
longer than the length of the directory component of the name, or (if
XEmacs is invoked with a relative path) ten bytes longer than the larger
of the name and PATH variable...
... and then pdump_load() calls pdump_file_try(), which proceeds to
sprintf() things on the end of it, like "-21.5-b27-453712b7.dmp". Oops,
there's no room for that. Instant buffer overrun, and because that
structure is alloca()ed a lot of the time, instant stack overrun as
well, which if you're unlucky blows away a pile of variables,
invalidates `exe_path', et seq ad nauseam.
(Probably nobody's noticed this because most of the time XEmacs is
invoked without an absolute path, and most people have a PATH that is
much longer than five characters. I don't know what the ten bytes of
slop are for: it's not even long enough for `-21.4.16.dmp'...)
I've `fixed' this by moving from incorrect dynamic allocation to
arguably inefficient-but-who-cares static allocation: it's way too much
work to realloc() this string, and it's also way too much work to
determine the maximum possible length of that string (plus it's brittle;
the next time someone changes the filename construction method,
*boom*). This necessitated a tiny fix to text.h before PATH_MAX_EXTERNAL
could be used on non-Windows systems at all...
You may want to fix the fix if using PATH_MAX_{INTERNAL,EXTERNAL} is
really as bad as all that.
(This patch is against CVS HEAD.)
2006-10-26 Nix <nix(a)esperi.org.uk>
* dumper.c (pdump_load): Statically allocate a large enough
exe_path for all conceivable uses. Fixes a buffer overrun.
* text.h (MAX_XETCHAR_SIZE): Define, for PATH_MAX_EXTERNAL.
Index: 21.5/src/dumper.c
===================================================================
--- 21.5.orig/src/dumper.c 2006-10-26 00:29:53.000000000 +0100
+++ 21.5/src/dumper.c 2006-10-26 00:30:21.000000000 +0100
@@ -2658,7 +2658,7 @@
wext_strcpy (exe_path, wexe);
}
#else /* !WIN32_NATIVE */
- Wexttext *exe_path;
+ Wexttext exe_path[PATH_MAX_EXTERNAL];
Wexttext *w;
const Wexttext *dir, *p;
@@ -2692,8 +2692,7 @@
if (p != dir)
{
/* invocation-name includes a directory component -- presumably it
- is relative to cwd, not $PATH */
- exe_path = alloca_array (Wexttext, 1 + wext_strlen (dir));
+ is relative to cwd, not $PATH. */
wext_strcpy (exe_path, dir);
}
else
@@ -2701,9 +2700,6 @@
const Wexttext *path = wext_getenv ("PATH"); /* not egetenv --
not yet init. */
const Wexttext *name = p;
- exe_path = alloca_array (Wexttext,
- 10 + max (wext_strlen (name),
- wext_strlen (path)));
for (;;)
{
p = path;
Index: 21.5/src/text.h
===================================================================
--- 21.5.orig/src/text.h 2006-10-26 00:29:53.000000000 +0100
+++ 21.5/src/text.h 2006-10-26 00:30:21.000000000 +0100
@@ -2988,6 +2988,7 @@
/* Extra indirection needed in case of manifest constant as arg */
#define WEXTSTRING_1(arg) L##arg
#define WEXTSTRING(arg) WEXTSTRING_1(arg)
+#define MAX_XETCHAR_SIZE sizeof (WCHAR)
#define wext_strlen wcslen
#define wext_strcmp wcscmp
#define wext_strncmp wcsncmp
@@ -3013,6 +3014,7 @@
#else
#define WEXTTEXT_ZTERM_SIZE sizeof (char)
#define WEXTSTRING(arg) arg
+#define MAX_XETCHAR_SIZE sizeof (char)
#define wext_strlen strlen
#define wext_strcmp strcmp
#define wext_strncmp strncmp
--
`When we are born we have plenty of Hydrogen but as we age our
Hydrogen pool becomes depleted.'
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[PATCH] Fix numeric overflow leading to failure to GC
17 years, 4 months
Nix
This is the fix for the dreaded memory leak, which isn't a memory leak
at all (which kind of explains why it was so hard to find when I was
looking for leaks).
A clue to the problem is that you can make the leak go away by setting
`gc-cons-percentage' to zero.
I instrumented recompute_need_to_garbage_collect() in gc.c to report the
total memory usage at GC and the percentage used whenever the
percentage-based counting should kick in. It kicked in when I'd
expected: with the default setting for gc-cons-percentage of 40 and a
gc-cons-threshold of 40000000, when the total memory consumed
approximated 70Mb. It soon became obvious that something was very wrong:
total gc usage: 56471356; GC percentage used: -5
[...]
total gc usage: 56471356; GC percentage used: -1
total gc usage: 56471356; GC percentage used: 0
total gc usage: 56471356; GC percentage used: 1
[...]
(consing-since-gc was rising all along, at about 75000000 at this
point, but I wasn't printing it out in this debugging dump.)
The problem is numeric overflow in the percentage-comparison code:
(!total_gc_usage_set ||
(100 * consing_since_gc) / total_gc_usage >=
gc_cons_percentage)
Obviously if consing-since-gc is bigger than about 20Mb (since this is a
*signed* integer) we're pretty much dead; each time around, we allow the
heap to bloat more and more, and GC less and less often: heap
fragmentation just makes things worse, because memory's vanishingly
rarely going to get given back to the OS as long as GCs get less and
less frequent like this.
(This also explains why this leak takes some time to kick in: XEmacs has
to load enough to be governed by gc-cons-percentage rather than
gc-cons-threshold in the first place, particularly if you've got it set
as high as I have. It turns up less often when not using X because not
loading the X stuff means that the total_gc_usage takes longer to reach
that threshold.)
2006-12-29 Nix <nix(a)esperi.org.uk>
* gc.c (recompute_need_to_garbage_collect): Avoid numeric
overflow in percentage calculation.
Index: 21.5/src/gc.c
===================================================================
--- 21.5.orig/src/gc.c 2006-12-29 18:21:43.000000000 +0000
+++ 21.5/src/gc.c 2006-12-29 22:11:22.000000000 +0000
@@ -314,12 +314,12 @@
(consing_since_gc > gc_cons_threshold
&&
#if 0 /* #### implement this better */
- (100 * consing_since_gc) / total_data_usage () >=
- gc_cons_percentage
+ ((double)consing_since_gc) / total_data_usage()) >=
+ ((double)gc_cons_percentage / 100)
#else
(!total_gc_usage_set ||
- (100 * consing_since_gc) / total_gc_usage >=
- gc_cons_percentage)
+ ((double)consing_since_gc / total_gc_usage) >=
+ ((double)gc_cons_percentage / 100))
#endif
);
recompute_funcall_allocation_flag ();
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[21.5] other-frame doesn't work in console mode
17 years, 6 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
I really don't understand what the person who wrote the original code
had in mind; I guess they must have wanted a frame that was currently
unobscured by other frames. But the documentation of frame-visible-p
indicates that a frame may be visible even if obscured, and C-x 5 o
(other-frame) is supposed to raise the chosen frame.
Please watch for bugs where other-frame does *not* raise the frame.
IMO those are not bugs in this function, they're bugs somewhere else
(select-frame-set-input-focus or something it calls).
2007-06-19 Ron Isaacson <Ron.Isaacson(a)morganstanley.com>
* frame.el (other-frame): Stop other-frame cycling through all frames.
--- frame.el.orig 2005-11-13 02:39:28.000000000 -0500
+++ frame.el 2007-06-19 13:55:19.000000000 -0400
@@ -793,13 +793,9 @@
(let ((frame (selected-frame)))
(while (> arg 0)
(setq frame (next-frame frame 'visible-nomini))
- (while (not (eq (frame-visible-p frame) t))
- (setq frame (next-frame frame 'visible-nomini)))
(setq arg (1- arg)))
(while (< arg 0)
(setq frame (previous-frame frame 'visible-nomini))
- (while (not (eq (frame-visible-p frame) t))
- (setq frame (previous-frame frame 'visible-nomini)))
(setq arg (1+ arg)))
(select-frame-set-input-focus frame)))
Ron Isaacson writes:
> Stephen J. Turnbull wrote:
> >
> > Ron Isaacson writes:
> >
> > > 21.4, which works as you'd expect. From the cvs logs, this was added
> > > in frame.el 1.21 (3 years ago -- shows how behind we are). The comment
> > > is "synch with Emacs 21.3"
> >
> > Ouch. That's obviously a dumb thing to do, because even today they
> > don't have tty frame support in the mainline (although they're talking
> > about merging a branch with it).
> >
> > I'll take a look, and if I see nothing horrible about it, I'll try
> > reverting it and see if anyone gets upset. ;-)
>
> Ok, thanks! Simple patch attached.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[AC21.5] modeline problem: frame-tty-p not defined
17 years, 6 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
2007-06-19 Ron Isaacson <Ron.Isaacson(a)morganstanley.com>
* modeline.el (modeline-update-tty-frame-specifier): Don't use
non-existent function frame-tty-p.
--- modeline.el.orig 2002-03-13 03:52:07.000000000 -0500
+++ modeline.el 2007-06-19 13:58:09.000000000 -0400
@@ -827,10 +827,9 @@
(defconst modeline-tty-frame-specifier (make-specifier 'boolean))
(add-hook 'create-frame-hook 'modeline-update-tty-frame-specifier)
(defun modeline-update-tty-frame-specifier (f)
- (if-fboundp 'frame-tty-p
- (if (and (frame-tty-p f)
- (> (frame-property f 'frame-number) 1))
- (set-specifier modeline-tty-frame-specifier t f))))
+ (if (and (eq (frame-type f) 'tty)
+ (> (frame-property f 'frame-number) 1))
+ (set-specifier modeline-tty-frame-specifier t f)))
(define-modeline-control tty-frame-id (list modeline-tty-frame-specifier
" [%S]"
Ron Isaacson writes:
> Ben Wing wrote:
> >
> > Stephen J. Turnbull wrote:
> > > Ron Isaacson writes:
> > >
> > > > In modeline.el, modeline-update-tty-frame-specifier tries to use
> > > > frame-tty-p. If that function is not defined, modeline-tty-frame-id
> > > > will always be blank, and it doesn't seem to be defined anywhere.
> > >
> > > Why not just use (eq (frame-type f) 'tty)? AFAICT this isn't used
> > > anywhere else, nor do corresponding type-specific predicates exist for
> > > other kinds of frames.
> > >
> > >
> > hmm, i thought that frame-tty-p is supposed to be defined always,
> > whether or not TTY support is compiled in, but i see i was wrong.
>
> No worries... simple patch attached.
>
> --
> Ron Isaacson
> Morgan Stanley
> ron.isaacson(a)morganstanley.com / (212) 762-1950
>
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[21.5] Quiet more GCC loss of precision warnings on amd64
17 years, 6 months
Stephen J. Turnbull
21.5
These patches are obviously harmless (they just tell the compiler that
we really mean to change the size of an integer that probably fits
into a byte in any case), but I wonder if this business of passing
around integers as pointers can maybe be rethought?
Comments?
Index: src/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.1074
diff -u -r1.1074 ChangeLog
--- src/ChangeLog 22 Jun 2007 17:50:36 -0000 1.1074
+++ src/ChangeLog 29 Jun 2007 07:44:05 -0000
@@ -0,0 +1,12 @@
+2007-06-23 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * input-method-xlib.c (EmacsFreeXIMStyles):
+ * process.c (get_process_from_usid):
+ (init_process_io_handles):
+ (deactivate_process):
+ * process-unix.c (connect_to_file_descriptor):
+ (unix_create_process):
+ (unix_open_network_stream):
+ (unix_open_multicast_group):
+ Cast out bogus warnings about precision loss on amd64.
+
Index: src/input-method-xlib.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/input-method-xlib.c,v
retrieving revision 1.22
diff -u -r1.22 input-method-xlib.c
--- src/input-method-xlib.c 19 Jun 2006 18:19:37 -0000 1.22
+++ src/input-method-xlib.c 29 Jun 2007 07:44:06 -0000
@@ -713,7 +713,7 @@
if (converter_data)
{
- Boolean free_p = (Boolean) (int) converter_data;
+ Boolean free_p = (Boolean) (EMACS_INT) converter_data;
XIMStyles *styles = (XIMStyles *) toVal->addr;
if (free_p)
XFree ( styles->supported_styles );
Index: src/process-unix.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/process-unix.c,v
retrieving revision 1.59
diff -u -r1.59 process-unix.c
--- src/process-unix.c 22 Jun 2007 17:50:42 -0000 1.59
+++ src/process-unix.c 29 Jun 2007 07:44:06 -0000
@@ -189,7 +189,7 @@
XPROCESS (proc)->pid = Fcons (infd, name);
XPROCESS (proc)->buffer = buffer;
- init_process_io_handles (XPROCESS (proc), (void *) inch,
+ init_process_io_handles (XPROCESS (proc), (void *) (EMACS_INT) inch,
(void *) XINT (outfd), (void *) -1, 0);
UNIX_DATA (XPROCESS (proc))->connected_via_filedesc_p = 1;
@@ -1121,8 +1121,9 @@
/* Record this as an active process, with its channels.
As a result, child_setup will close Emacs's side of the pipes. */
- init_process_io_handles (p, (void *) inchannel, (void *) outchannel,
- (void *) errchannel,
+ init_process_io_handles (p, (void *) (EMACS_INT) inchannel,
+ (void *) (EMACS_INT) outchannel,
+ (void *) (EMACS_INT) errchannel,
pty_flag ? STREAM_PTY_FLUSHING : 0);
/* Record the tty descriptor used in the subprocess. */
UNIX_DATA (p)->subtty = forkin;
@@ -2129,8 +2130,8 @@
set_socket_nonblocking_maybe (inch, port, "tcp");
- *vinfd = (void *) inch;
- *voutfd = (void *) outch;
+ *vinfd = (void *) (EMACS_INT) inch;
+ *voutfd = (void *) (EMACS_INT) outch;
}
@@ -2314,8 +2315,8 @@
set_socket_nonblocking_maybe (rs, theport, "udp");
- *vinfd = (void*)rs;
- *voutfd = (void*)ws;
+ *vinfd = (void*) (EMACS_INT) rs;
+ *voutfd = (void*) (EMACS_INT) ws;
}
#endif /* HAVE_MULTICAST */
Index: src/process.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/process.c,v
retrieving revision 1.69
diff -u -r1.69 process.c
--- src/process.c 25 Oct 2005 11:16:27 -0000 1.69
+++ src/process.c 29 Jun 2007 07:44:06 -0000
@@ -242,7 +242,7 @@
assert (usid != USID_ERROR && usid != USID_DONTHASH);
- if (gethash ((const void*)usid, usid_to_process, &vval))
+ if (gethash ((const void*) (EMACS_INT) usid, usid_to_process, &vval))
{
Lisp_Object process;
process = VOID_TO_LISP (vval);
@@ -573,15 +573,16 @@
{
Lisp_Object process = Qnil;
process = wrap_process (p);
- puthash ((const void*) in_usid, LISP_TO_VOID (process), usid_to_process);
+ puthash ((const void*) (EMACS_INT) in_usid,
+ LISP_TO_VOID (process), usid_to_process);
}
if (err_usid != USID_DONTHASH)
{
Lisp_Object process = Qnil;
process = wrap_process (p);
- puthash ((const void*) err_usid, LISP_TO_VOID (process),
- usid_to_process);
+ puthash ((const void*) (EMACS_INT) err_usid,
+ LISP_TO_VOID (process), usid_to_process);
}
MAYBE_PROCMETH (init_process_io_handles, (p, in, out, err, flags));
@@ -2150,9 +2151,9 @@
&in_usid, &err_usid);
if (in_usid != USID_DONTHASH)
- remhash ((const void *) in_usid, usid_to_process);
+ remhash ((const void *) (EMACS_INT) in_usid, usid_to_process);
if (err_usid != USID_DONTHASH)
- remhash ((const void *) err_usid, usid_to_process);
+ remhash ((const void *) (EMACS_INT) err_usid, usid_to_process);
p->pipe_instream = Qnil;
p->pipe_outstream = Qnil;
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[AC21.5] Shut up GCC bitching about precision loss in canna_api
17 years, 6 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
In principle I'm not sure about this (see similar patch to src which I
am not committing yet), but Canna is (a) not terribly much used and
(b) incredibly grody code. I mean, casting a Boolean to (char *)?
Yeeech.
Index: modules/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ChangeLog,v
retrieving revision 1.63
diff -u -r1.63 ChangeLog
--- modules/ChangeLog 22 Jun 2007 16:58:36 -0000 1.63
+++ modules/ChangeLog 29 Jun 2007 07:44:00 -0000
@@ -0,0 +1,6 @@
+2007-06-23 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * canna/canna_api.c (Fcanna_set_bunsetsu):
+ (Fcanna_initialize):
+ Suppress warnings about loss of precision on amd64.
+
Index: modules/canna/canna_api.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/canna/canna_api.c,v
retrieving revision 1.4
diff -u -r1.4 canna_api.c
--- modules/canna/canna_api.c 15 Feb 2007 16:12:19 -0000 1.4
+++ modules/canna/canna_api.c 29 Jun 2007 07:44:00 -0000
@@ -333,11 +333,12 @@
*/
(num))
{
- int kugiri; /* ʸÀá¶èÀÚ¤ê¤ò¤¹¤ë¤«¡© (display clause separator?) */
+ /* This is actually a Boolean! */
+ char *kugiri; /* ʸÀá¶èÀÚ¤ê¤ò¤¹¤ë¤«¡© (display clause separator?) */
- kugiri = NILP (num) ? 0 : 1;
+ kugiri = NILP (num) ? (char *) 0 : (char *) 1;
- jrKanjiControl (0, KC_SETBUNSETSUKUGIRI, (char *) kugiri);
+ jrKanjiControl (0, KC_SETBUNSETSUKUGIRI, kugiri);
return Qnil;
}
@@ -365,19 +366,19 @@
int res;
char **p, **q;
- int kugiri; /* ʸÀá¶èÀÚ¤ê¤ò¤¹¤ë¤«¡© (display clause separator?) */
+ /* This is actually a Boolean! */
+ char *kugiri; /* ʸÀá¶èÀÚ¤ê¤ò¤¹¤ë¤«¡© (display clause separator?) */
IRCP_context = -1;
if (NILP (num))
{
- kugiri = 1;
+ kugiri = (char *) 1;
}
else
{
CHECK_INT (num);
- kugiri = XINT (num);
- kugiri = (kugiri == 1) ? 1 : 0;
+ kugiri = (XINT (num) == 1) ? (char *) 1 : (char *) 0;
}
if (NILP (server))
@@ -444,7 +445,7 @@
#endif /* CANNA_MULE */
#endif /* KC_SETAPPNAME */
- jrKanjiControl (0, KC_SETBUNSETSUKUGIRI, (char *) kugiri);
+ jrKanjiControl (0, KC_SETBUNSETSUKUGIRI, kugiri);
jrKanjiControl (0, KC_SETWIDTH, (char *) 78);
#ifndef CANNA_MULE
jrKanjiControl (0, KC_INHIBITHANKAKUKANA, (char *) 1);
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[COMMIT] Mention that lexical closures are actually available in XEmacs Lisp
17 years, 6 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
man/ChangeLog addition:
2007-06-27 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/variables.texi (Extent):
Mention that lexical scope is available using lexical-let and
lexical-let* in cl-macs, instead of ignoring them entirely.
XEmacs Trunk source patch:
Diff command: cvs -q diff -u
Files affected: man/lispref/variables.texi
===================================================================
RCS
Index: man/lispref/variables.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/variables.texi,v
retrieving revision 1.8
diff -u -r1.8 variables.texi
--- man/lispref/variables.texi 2006/07/16 10:51:47 1.8
+++ man/lispref/variables.texi 2007/06/27 12:17:09
@@ -894,8 +894,12 @@
@cindex closures not available
Some Lisp dialects have ``closures'', objects that are like functions
-but record additional variable bindings. XEmacs Lisp does not have
-closures.
+but record additional variable bindings. Closures are available in
+XEmacs Lisp using the @code{lexical-let} and @code{lexical-let*}macroes,
+which are autoloaded from @file{cl-macs}. @xref{(cl)Lexical Bindings}.
+Note that function arguments cannot be closed around using these
+macros, and that any lambda expressions returned will not be
+byte-compiled.
@node Impl of Scope
@subsection Implementation of Dynamic Scoping
--
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[C] xemacsweb: Announce and add http://xemacs.linux-mirror.org/
17 years, 6 months
Adrian Aichner
COMMIT
Sorry for the astronomic delay, Ralf!
I was out of order for two months starting last November and I'm still
catching up in some areas.
Best regards!
Adrian
xemacsweb ChangeLog patch:
Diff command: cvs -q diff -U 0
Files affected: ChangeLog Download/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/ChangeLog,v
retrieving revision 1.265
diff -u -U0 -r1.265 ChangeLog
--- ChangeLog 24 Jun 2007 08:51:10 -0000 1.265
+++ ChangeLog 25 Jun 2007 20:53:06 -0000
@@ -0,0 +1,4 @@
+2007-06-25 Adrian Aichner <adrian(a)xemacs.org>
+
+ * index.content: Announce and add http://xemacs.linux-mirror.org/.
+
Index: Download/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Download/ChangeLog,v
retrieving revision 1.183
diff -u -U0 -r1.183 ChangeLog
--- Download/ChangeLog 22 Jun 2007 23:07:47 -0000 1.183
+++ Download/ChangeLog 25 Jun 2007 20:53:06 -0000
@@ -0,0 +1,5 @@
+2007-06-25 Adrian Aichner <adrian(a)xemacs.org>
+
+ * web-mirrors.content: Announce and add
+ http://xemacs.linux-mirror.org/.
+
xemacsweb source patch:
Diff command: cvs -f -z3 -q diff -u -w -N
Files affected: index.content
===================================================================
RCS Download/web-mirrors.content
===================================================================
RCS
Index: Download/web-mirrors.content
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Download/web-mirrors.content,v
retrieving revision 1.26
diff -u -w -r1.26 web-mirrors.content
--- Download/web-mirrors.content 22 Jun 2007 23:07:47 -0000 1.26
+++ Download/web-mirrors.content 25 Jun 2007 20:52:24 -0000
@@ -139,6 +139,7 @@
<li><a href="http://www.de.xemacs.org/">http://www.de.xemacs.org/</a></li>
<li><a href="http://www.xemacs.neoscientists.org/">http://www.xemacs.neoscientis...>
<li><a href="http://xemacs.online-mirror.de/">http://xemacs.online-mirror.de/</a></li>
+ <li><a href="http://xemacs.linux-mirror.org/">http://xemacs.linux-mirror.org/</a...>
</ul>
<p></p>
</li>
Index: index.content
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/index.content,v
retrieving revision 1.174
diff -u -w -r1.174 index.content
--- index.content 24 Jun 2007 08:51:10 -0000 1.174
+++ index.content 25 Jun 2007 20:52:24 -0000
@@ -111,6 +111,17 @@
<dl>
<!-- one of (dd dt) -->
+ <dt><strong>2007-06-25</strong></dt>
+ <dd>
+ <p>
+ Germany has another website mirror, <a
+ href="http://xemacs.linux-mirror.org/">http://xemacs.linux-mirror.org/</a>
+ since November
+ 2006. Thank you, <a href="http://www.vssgmbh.com/">VSS
+ GmbH</a>.
+ </p>
+ </dd>
+ <!-- one of (dd dt) -->
<dt><strong>2007-06-23</strong></dt>
<dd>
<p>
--
Adrian Aichner
mailto:adrian@xemacs.org
http://www.xemacs.org/
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[COMMIT] Pass the NOMODIFY argument to s-b-f-c-s in a few more cases
17 years, 6 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
lisp/ChangeLog addition:
2007-06-22 Aidan Kehoe <kehoea(a)parhasard.net>
* files.el (revert-buffer):
* files.el (recover-file):
Pass NOMODIFY to set-buffer-file-coding-systems after reverting a
buffer and after recovering a file.
XEmacs Trunk source patch:
Diff command: cvs -q diff -Nu
Files affected: lisp/files.el
===================================================================
RCS
Index: lisp/files.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/files.el,v
retrieving revision 1.77
diff -u -u -r1.77 files.el
--- lisp/files.el 2006/11/30 07:29:36 1.77
+++ lisp/files.el 2007/06/21 22:49:14
@@ -3473,7 +3473,7 @@
(coding-system-base
buffer-file-coding-system-when-loaded)
buffer-file-coding-system-when-loaded)
- (not adjust-eol))))))
+ (not adjust-eol) t)))))
(goto-char (min opoint (point-max)))
;; Recompute the truename in case changes in symlinks
;; have changed the truename.
@@ -3616,7 +3616,8 @@
(coding-system-for-read 'escape-quoted))
(erase-buffer)
(insert-file-contents file-name nil)
- (set-buffer-file-coding-system coding-system))
+ (set-buffer-file-coding-system coding-system
+ nil t))
(after-find-file nil nil t)
(return nil))
(diff
--
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches