User: vins
Date: 06/07/01 07:20:20
Branch: xemacs release-21-4
xemacs/lisp release-21-4
xemacs/lwlib release-21-4
xemacs/man release-21-4
xemacs/src release-21-4
xemacs/tests release-21-4
xemacs/tests/automated release-21-4
Modified: xemacs/tests/automated mule-tests.el tag-tests.el
test-harness.el
Log:
Metacity maximization fix from Stephen.
Static checker fixes from Jerry.
Add
nl.xemacs.org from Adrian.
Misc fixes from Stephen.
Revision Changes Path
1.241.2.89 +4 -0 XEmacs/xemacs/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v
retrieving revision 1.241.2.88
retrieving revision 1.241.2.89
diff -u -p -r1.241.2.88 -r1.241.2.89
--- ChangeLog 2006/01/31 22:58:09 1.241.2.88
+++ ChangeLog 2006/07/01 05:19:36 1.241.2.89
@@ -1,3 +1,7 @@
+2006-05-17 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * PROBLEMS: X11R7 loses x11/bitmaps/gray.
+
2006-01-28 Vin Shelton <acs(a)xemacs.org>
* configure.in: Simplify cygwin include and nox/Xpm handling.
1.46.2.17 +10 -0 XEmacs/xemacs/PROBLEMS
Index: PROBLEMS
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/PROBLEMS,v
retrieving revision 1.46.2.16
retrieving revision 1.46.2.17
diff -u -p -r1.46.2.16 -r1.46.2.17
--- PROBLEMS 2003/09/14 01:44:32 1.46.2.16
+++ PROBLEMS 2006/07/01 05:19:37 1.46.2.17
@@ -44,6 +44,16 @@ General advice:
Much general information is in INSTALL. If it's covered in
INSTALL, we don't repeat it here.
+*** X11/bitmaps/gray (or other X11-related file) not found.
+
+The X11R6 distribution was monolithic, but the X11R7 distribution is
+much more modular. Many OS distributions omit these bitmaps (assuming
+nobody uses them, evidently). Your OS distribution should have a
+developer's package containing these files, probably with a name
+containing the string "bitmap". Known package names (you may need to
+add an extension such as .deb or .rpm) include x11/xbitmaps (Ubuntu)
+and xorg-x11-xbitmaps (Fedora Core 5).
+
*** How do I configure to get the buffer tabs/progress bars?
These features depend on support for "native widgets". Use the
1.266.2.94 +6 -0 XEmacs/xemacs/lisp/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v
retrieving revision 1.266.2.93
retrieving revision 1.266.2.94
diff -u -p -r1.266.2.93 -r1.266.2.94
--- ChangeLog 2006/02/04 01:55:13 1.266.2.93
+++ ChangeLog 2006/07/01 05:19:41 1.266.2.94
@@ -1,3 +1,9 @@
+2006-06-03 Adrian Aichner <adrian(a)xemacs.org>
+
+ * package-get.el (package-get-download-sites): Welcome
+
nl.xemacs.org and Thanks!
+ * package-get.el (package-get-pre-release-download-sites): Ditto.
+
2004-01-19 Martin Buchholz <martin(a)xemacs.org>
* font-lock.el: Add support for not-so recent changes in Java to
1.39.2.13 +3 -0 XEmacs/xemacs/lisp/package-get.el
Index: package-get.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/package-get.el,v
retrieving revision 1.39.2.12
retrieving revision 1.39.2.13
diff -u -p -r1.39.2.12 -r1.39.2.13
--- package-get.el 2006/01/07 13:22:45 1.39.2.12
+++ package-get.el 2006/07/01 05:19:42 1.39.2.13
@@ -233,6 +233,7 @@ directory."
; ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp"
"mirror/xemacs/packages")
("Japan (sut.ac.jp)" "sunsite.sut.ac.jp"
"pub/archives/packages/xemacs/packages")
("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org"
"pub/tools/emacs/xemacs/packages")
+ ("Netherlands (nl.xemacs.org)" "ftp.nl.xemacs.org"
"pub/xemacs/ftp/packages")
("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org"
"mirror/ftp.xemacs.org/packages")
("Norway (no.xemacs.org)" "ftp.no.xemacs.org"
"pub/xemacs/packages")
("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org"
"pub/unix/editors/xemacs/packages")
@@ -323,6 +324,8 @@ variable actually used to specify packag
"pub/archives/packages/xemacs/xemacs-21.5/experimental/packages")
("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org"
"pub/tools/emacs/xemacs/beta/experimental/packages")
+ ("Netherlands (nl.xemacs.org)" "ftp.nl.xemacs.org"
+ "pub/xemacs/ftp/beta/experimental/packages")
("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org"
"mirror/ftp.xemacs.org/packages")
("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org"
1.23.2.30 +7 -0 XEmacs/xemacs/lwlib/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v
retrieving revision 1.23.2.29
retrieving revision 1.23.2.30
diff -u -p -r1.23.2.29 -r1.23.2.30
--- ChangeLog 2006/01/29 00:00:20 1.23.2.29
+++ ChangeLog 2006/07/01 05:19:45 1.23.2.30
@@ -1,3 +1,10 @@
+2006-06-22 Jerry James <james(a)xemacs.org>
+
+ * lwlib-Xlw.c (xlw_scrollbar_callback): Do not dereference
+ instance before checking whether it is NULL.
+ * xlwmenu.c (xlw_map_menu): Prevent uninitialized access to root
+ and waste.
+
2006-01-28 Vin Shelton <acs(a)xemacs.org>
* XEmacs 21.4.19 is released
1.8.2.3 +2 -2 XEmacs/xemacs/lwlib/lwlib-Xlw.c
Index: lwlib-Xlw.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/lwlib-Xlw.c,v
retrieving revision 1.8.2.2
retrieving revision 1.8.2.3
diff -u -p -r1.8.2.2 -r1.8.2.3
--- lwlib-Xlw.c 2005/11/26 03:47:33 1.8.2.2
+++ lwlib-Xlw.c 2006/07/01 05:19:45 1.8.2.3
@@ -163,13 +163,13 @@ xlw_scrollbar_callback (Widget widget, X
XlwScrollBarCallbackStruct *data =
(XlwScrollBarCallbackStruct *) call_data;
scroll_event event_data;
- scrollbar_values *val =
- (scrollbar_values *) instance->info->val->scrollbar_data;
+ scrollbar_values *val;
double percent;
if (!instance || widget->core.being_destroyed)
return;
+ val = (scrollbar_values *) instance->info->val->scrollbar_data;
id = instance->info->id;
percent = (double) (data->value - 1) / (double) (INT_MAX - 1);
1.33.2.3 +2 -2 XEmacs/xemacs/lwlib/xlwmenu.c
Index: xlwmenu.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwmenu.c,v
retrieving revision 1.33.2.2
retrieving revision 1.33.2.3
diff -u -p -r1.33.2.2 -r1.33.2.3
--- xlwmenu.c 2003/02/15 18:57:19 1.33.2.2
+++ xlwmenu.c 2006/07/01 05:19:46 1.33.2.3
@@ -3412,8 +3412,8 @@ xlw_map_menu (Time t)
if (!mw->menu.pointer_grabbed)
{
XWindowAttributes ret;
- Window parent,root;
- Window *waste;
+ Window parent,root = 0UL;
+ Window *waste = NULL;
unsigned int num_waste;
lw_menu_active = True;
1.116.2.65 +6 -0 XEmacs/xemacs/man/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v
retrieving revision 1.116.2.64
retrieving revision 1.116.2.65
diff -u -p -r1.116.2.64 -r1.116.2.65
--- ChangeLog 2006/01/29 00:00:23 1.116.2.64
+++ ChangeLog 2006/07/01 05:19:47 1.116.2.65
@@ -1,3 +1,9 @@
+2006-05-17 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * xemacs-faq.texi (Q2.2.3): New node.
+ (Q2.2.2, Q2.3.1): Fix navigation references.
+ (Top, Installation): Add to menus.
+
2006-01-28 Vin Shelton <acs(a)xemacs.org>
* XEmacs 21.4.19 is released
1.39.2.17 +15 -2 XEmacs/xemacs/man/xemacs-faq.texi
Index: xemacs-faq.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/xemacs-faq.texi,v
retrieving revision 1.39.2.16
retrieving revision 1.39.2.17
diff -u -p -r1.39.2.16 -r1.39.2.17
--- xemacs-faq.texi 2005/12/07 22:22:41 1.39.2.16
+++ xemacs-faq.texi 2006/07/01 05:19:48 1.39.2.17
@@ -293,6 +293,7 @@ library directory>/info/}. For example i
2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
* Q2.2.1:: Libraries in non-standard locations
* Q2.2.2:: Why can't I strip XEmacs?
+* Q2.2.3:: X11/bitmaps/gray (or other X11-related file) not found.
2.3: Windows Installation (Windows, Cygwin, MinGW)
* Q2.3.1:: What exactly are all the different ways to build XEmacs under Windows?
@@ -3090,6 +3091,7 @@ section is devoted to Installation, Main
2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW)
* Q2.2.1:: Libraries in non-standard locations
* Q2.2.2:: Why can't I strip XEmacs?
+* Q2.2.3:: X11/bitmaps/gray (or other X11-related file) not found.
2.3: Windows Installation (Windows, Cygwin, MinGW)
* Q2.3.1:: What exactly are all the different ways to build XEmacs under Windows?
@@ -3580,7 +3582,7 @@ or for 21.5:
--with-site-prefixes=WHATEVER
@end example
-@node Q2.2.2, Q2.3.1, Q2.2.1, Installation
+@node Q2.2.2, Q2.2.3, Q2.2.1, Installation
@unnumberedsubsec Q2.2.2: Why can't I strip XEmacs?
@email{cognot@(a)fronsac.ensg.u-nancy.fr, Richard Cognot} writes:
@@ -3635,9 +3637,20 @@ cp lib-src/DOC-19.16-XEmacs
@end enumerate
@end quotation
+@node Q2.2.3, Q2.3.1, Q2.2.2, Installation
+@unnumberedsubsec Q2.2.3: X11/bitmaps/gray (or other X11-related file) not found.
+
+The X11R6 distribution was monolithic, but the X11R7 distribution is
+much more modular. Many OS distributions omit these bitmaps (assuming
+nobody uses them, evidently). Your OS distribution should have a
+developer's package containing these files, probably with a name
+containing the string "bitmap". Known package names (you may need to
+add an extension such as .deb or .rpm) include x11/xbitmaps (Ubuntu)
+and xorg-x11-xbitmaps (Fedora Core 5).
+
@unnumberedsec 2.3: Windows Installation (Windows, Cygwin, MinGW)
-@node Q2.3.1, Q2.3.2, Q2.2.2, Installation
+@node Q2.3.1, Q2.3.2, Q2.2.3, Installation
@unnumberedsubsec Q2.3.1: What exactly are all the different ways to build XEmacs under
Windows?
XEmacs can be built in several ways in the MS Windows environment.
1.290.2.110 +44 -0 XEmacs/xemacs/src/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.290.2.109
retrieving revision 1.290.2.110
diff -u -p -r1.290.2.109 -r1.290.2.110
--- ChangeLog 2006/03/31 01:28:57 1.290.2.109
+++ ChangeLog 2006/07/01 05:19:52 1.290.2.110
@@ -1,3 +1,47 @@
+2006-06-22 Jerry James <james(a)xemacs.org>
+
+ * EmacsShell-sub.c (ChangeManaged):
+ * device-x.c (x_IO_error_handler): Do not dereference d if it is
+ NULL.
+ * dgif_lib.c (DGifCloseFile): Do not dereference GifFile before
+ checking if it is NULL. Also fix a memory leak.
+ * dialog-x.c (dbox_selection_callback): Ensure f is non-NULL, then
+ dereference it, not the other way around.
+ * dumper.c (pdump_register_object): Fix off-by-one array bounds
+ overflow check.
+ * dumper.c (pdump_register_struct): Ditto.
+ * editfns.c (Ftemp_directory): Don't let a copy from (long) path
+ to (short) warnpath overflow warnpath.
+ * extents.c (detach_all_extents): Call extent_list_delete_all with
+ a non-NULL parameter only.
+ * glyphs-widget.c (widget_query_geometry): Guard against possibly
+ NULL width and height.
+ * input-method-xlib.c (XIM_SetGeometry): Do not dereference f or
+ xic before checking if they are NULL.
+ * keymap.c (where_is_recursive_mapper): Don't throw away the newly
+ allocated array.
+ * md5.c (Fmd5): Check whether Lstream_read encountered an error.
+ * nas.c (Err): Fix a memory leak.
+ * redisplay-gtk.c (gtk_output_display_block): Fix a Dynarr leak.
+ Don't create the buffer if there is nothing to do.
+ * redisplay-msw.c (mswindows_output_display_block): Ditto.
+ * redisplay-output.c (redisplay_output_layout): Ditto.
+ * redisplay-tty.c (tty_output_display_block): Ditto.
+ * redisplay-x.c (x_output_display_block): Ditto.
+ * scrollbar-gtk.c (gtk_free_scrollbar_instance): Do not
+ dereference instance->scrollbar_data if it is NULL.
+ * scrollbar-x.c (x_free_scrollbar_instance): Ditto.
+ * scrollbar-msw.c (mswindows_free_scrollbar_instance): Ditto, but
+ for sb->scrollbar_data.
+ * sound.c (init_native_sound): Avoid a buffer overflow by
+ allocating a buffer with the appropriate size.
+
+2006-05-08 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * EmacsShell-sub.c (RootGeometryManager):
+ Change garbage to useful messages under DEBUG_GEOMETRY_MANAGEMENT.
+ Based on a suggestion by Francois L'Archeveque.
+
2006-03-21 Malcolm Purvis <malcolmp(a)xemacs.org>
* regex.c: Bump INIT_FAILURE_ALLOC and re_max_failures to the
1.5.2.3 +11 -6 XEmacs/xemacs/src/EmacsShell-sub.c
Index: EmacsShell-sub.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/EmacsShell-sub.c,v
retrieving revision 1.5.2.2
retrieving revision 1.5.2.3
diff -u -p -r1.5.2.2 -r1.5.2.3
--- EmacsShell-sub.c 2005/01/31 02:55:01 1.5.2.2
+++ EmacsShell-sub.c 2006/07/01 05:19:55 1.5.2.3
@@ -335,11 +335,16 @@ RootGeometryManager (Widget gw,
result == XtGeometryAlmost ? "XtGeometryAlmost" :
"XtGeometryDone");
if (reply->request_mode & CWWidth)
- printf ("width returned;");
+ printf ("width returned was %d%s",
+ reply->width,
+ reply->request_mode & CWHeight ? "; " : ".\n");
if (reply->request_mode & CWHeight)
- printf ("height returned;");
- printf ("\n");
- printf (" resulting shell size: %d %d\n", reply->width,
reply->height);
+ printf ("height returned was %d.\n", reply->height);
+ /* #### does this also need to depend on the result?
+ With XtGeometryYes there doesn't seem to be a useful reply object. */
+ printf (" resulting shell size: %d %d\n",
+ reply->request_mode & CWWidth ? reply->width : w->core.width,
+ reply->request_mode & CWHeight ? reply->height : w->core.height);
printf ("----------\n");
fflush (stdout);
#endif
@@ -366,11 +371,11 @@ ChangeManaged (Widget wid)
for (i = 0; i < w->composite.num_children; i++) {
if (XtIsManaged(w->composite.children[i])) {
child = w->composite.children[i];
+ update_size_hints_internal (w, child->core.width,
+ child->core.height);
break;
}
}
-
- update_size_hints_internal (w, child->core.width, child->core.height);
}
/* call the real ChangeManaged */
1.36.2.4 +4 -2 XEmacs/xemacs/src/device-x.c
Index: device-x.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/device-x.c,v
retrieving revision 1.36.2.3
retrieving revision 1.36.2.4
diff -u -p -r1.36.2.3 -r1.36.2.4
--- device-x.c 2005/01/31 02:55:08 1.36.2.3
+++ device-x.c 2006/07/01 05:19:56 1.36.2.4
@@ -1161,8 +1161,10 @@ x_IO_error_handler (Display *disp)
Xlib might just decide to exit(). So we mark the offending
console for deletion and throw to top level. */
if (d)
- enqueue_magic_eval_event (io_error_delete_device, dev);
- DEVICE_X_BEING_DELETED (d) = 1;
+ {
+ enqueue_magic_eval_event (io_error_delete_device, dev);
+ DEVICE_X_BEING_DELETED (d) = 1;
+ }
Fthrow (Qtop_level, Qnil);
return 0; /* not reached */
1.12.2.2 +5 -1 XEmacs/xemacs/src/dgif_lib.c
Index: dgif_lib.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/dgif_lib.c,v
retrieving revision 1.12.2.1
retrieving revision 1.12.2.2
diff -u -p -r1.12.2.1 -r1.12.2.2
--- dgif_lib.c 2004/05/06 22:21:43 1.12.2.1
+++ dgif_lib.c 2006/07/01 05:19:56 1.12.2.2
@@ -366,10 +366,11 @@ void DGifGetExtensionNext(GifFileType *G
******************************************************************************/
int DGifCloseFile(GifFileType *GifFile)
{
- GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private;
+ GifFilePrivateType *Private;
if (GifFile == NULL) return -1;
+ Private = (GifFilePrivateType *)GifFile->Private;
if (!IS_READABLE(Private))
{
/* This file was NOT open for reading: */
@@ -930,7 +931,10 @@ ColorMapObject *MakeMapObject(int ColorC
Object->Colors = (GifColorType *)calloc(ColorCount, sizeof(GifColorType));
if (Object->Colors == (GifColorType *)NULL)
+ {
+ free (Object);
return((ColorMapObject *)NULL);
+ }
Object->ColorCount = ColorCount;
Object->BitsPerPixel = BitSize(ColorCount);
1.7.2.1 +1 -1 XEmacs/xemacs/src/dialog-x.c
Index: dialog-x.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/dialog-x.c,v
retrieving revision 1.7
retrieving revision 1.7.2.1
diff -u -p -r1.7 -r1.7.2.1
--- dialog-x.c 2001/04/12 18:23:34 1.7
+++ dialog-x.c 2006/07/01 05:19:56 1.7.2.1
@@ -105,7 +105,7 @@ dbox_selection_callback (Widget widget,
ourselves. */
#ifdef EXTERNAL_WIDGET
/* #### Not sure if this special case is necessary. */
- if (!FRAME_X_EXTERNAL_WINDOW_P (f) && f)
+ if (f && !FRAME_X_EXTERNAL_WINDOW_P (f))
#else
if (f)
#endif
1.2.2.6 +2 -2 XEmacs/xemacs/src/dumper.c
Index: dumper.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/dumper.c,v
retrieving revision 1.2.2.5
retrieving revision 1.2.2.6
diff -u -p -r1.2.2.5 -r1.2.2.6
--- dumper.c 2005/01/31 02:55:08 1.2.2.5
+++ dumper.c 2006/07/01 05:19:56 1.2.2.6
@@ -566,7 +566,7 @@ pdump_register_object (Lisp_Object obj)
if (imp->description)
{
int me = depth++;
- if (me>65536)
+ if (me>=65536)
{
stderr_out ("Backtrace overflow, loop ?\n");
ABORT ();
@@ -601,7 +601,7 @@ pdump_register_struct (const void *data,
{
int me = depth++;
int i;
- if (me>65536)
+ if (me>=65536)
{
stderr_out ("Backtrace overflow, loop ?\n");
ABORT ();
1.27.2.5 +7 -4 XEmacs/xemacs/src/editfns.c
Index: editfns.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/editfns.c,v
retrieving revision 1.27.2.4
retrieving revision 1.27.2.5
diff -u -p -r1.27.2.4 -r1.27.2.5
--- editfns.c 2002/08/20 11:36:52 1.27.2.4
+++ editfns.c 2006/07/01 05:19:57 1.27.2.5
@@ -644,14 +644,17 @@ On Unix it is obtained from TMPDIR, with
}
else
{
- strcpy(path, getenv("HOME")); strncat(path, "/tmp/",
_POSIX_PATH_MAX);
+ path[5 + _POSIX_PATH_MAX] = '\0';
+ strncpy(path, getenv("HOME"), 5 + _POSIX_PATH_MAX);
+ strncat(path, "/tmp/", 5 + _POSIX_PATH_MAX);
if (stat(path, &st) < 0 && errno == ENOENT)
{
int fd;
- char warnpath[1+_POSIX_PATH_MAX];
+ char warnpath[6+_POSIX_PATH_MAX];
mkdir(path, 0700); /* ignore retvals */
- strcpy(warnpath, path);
- strncat(warnpath, ".created_by_xemacs", _POSIX_PATH_MAX);
+ warnpath[_POSIX_PATH_MAX] = '\0';
+ strncpy(warnpath, path, 5 + _POSIX_PATH_MAX);
+ strncat(warnpath, ".created_by_xemacs", 5 + _POSIX_PATH_MAX);
if ((fd = open(warnpath, O_WRONLY|O_CREAT, 0644)) > 0)
{
write(fd, "XEmacs created this directory because /tmp/<yourname> was
unavailable -- \nPlease check !\n", 89);
1.31.2.5 +4 -3 XEmacs/xemacs/src/extents.c
Index: extents.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/extents.c,v
retrieving revision 1.31.2.4
retrieving revision 1.31.2.5
diff -u -p -r1.31.2.4 -r1.31.2.5
--- extents.c 2005/01/31 02:55:13 1.31.2.4
+++ extents.c 2006/07/01 05:19:57 1.31.2.5
@@ -1175,11 +1175,12 @@ detach_all_extents (Lisp_Object object)
set_extent_start (e, -1);
set_extent_end (e, -1);
}
+
+ /* But we need to clear all the lists containing extents or
+ havoc will result. */
+ extent_list_delete_all (data->extents);
}
- /* But we need to clear all the lists containing extents or
- havoc will result. */
- extent_list_delete_all (data->extents);
soe_invalidate (object);
}
}
1.2.2.3 +4 -4 XEmacs/xemacs/src/glyphs-widget.c
Index: glyphs-widget.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-widget.c,v
retrieving revision 1.2.2.2
retrieving revision 1.2.2.3
diff -u -p -r1.2.2.2 -r1.2.2.3
--- glyphs-widget.c 2002/11/07 06:04:44 1.2.2.2
+++ glyphs-widget.c 2006/07/01 05:19:58 1.2.2.3
@@ -558,20 +558,20 @@ widget_query_geometry (Lisp_Object image
IMAGE_INSTANCE_WIDGET_FACE (ii),
&w, &h, 0, domain);
/* Adjust the size for borders. */
- if (IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii))
+ if (width && IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii))
*width = w + 2 * widget_instance_border_width (ii);
- if (IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii))
+ if (height && IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii))
*height = h + 2 * widget_instance_border_width (ii);
}
}
/* Finish off with dynamic sizing. */
- if (!NILP (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii)))
+ if (width && !NILP (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii)))
{
dynamic_width = Feval (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii));
if (INTP (dynamic_width))
*width = XINT (dynamic_width);
}
- if (!NILP (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii)))
+ if (height && !NILP (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii)))
{
dynamic_height = Feval (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii));
if (INTP (dynamic_height))
1.12.2.2 +8 -3 XEmacs/xemacs/src/input-method-xlib.c
Index: input-method-xlib.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/input-method-xlib.c,v
retrieving revision 1.12.2.1
retrieving revision 1.12.2.2
diff -u -p -r1.12.2.1 -r1.12.2.2
--- input-method-xlib.c 2005/01/31 02:55:20 1.12.2.1
+++ input-method-xlib.c 2006/07/01 05:19:58 1.12.2.2
@@ -426,13 +426,18 @@ XIM_init_frame (struct frame *f)
void
XIM_SetGeometry (struct frame *f)
{
- XIC xic = FRAME_X_XIC (f);
- XIMStyle style = FRAME_X_XIC_STYLE (f);
+ XIC xic;
+ XIMStyle style;
XRectangle area;
- if (!xic || !f)
+ if (!f)
return;
+ xic = FRAME_X_XIC (f);
+ if (!xic)
+ return;
+
+ style = FRAME_X_XIC_STYLE (f);
if (style & XIMStatusArea)
{
/* Place Status Area in bottom right corner */
1.32.2.5 +2 -0 XEmacs/xemacs/src/keymap.c
Index: keymap.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/keymap.c,v
retrieving revision 1.32.2.4
retrieving revision 1.32.2.5
diff -u -p -r1.32.2.4 -r1.32.2.5
--- keymap.c 2005/01/31 02:55:20 1.32.2.4
+++ keymap.c 2006/07/01 05:19:58 1.32.2.5
@@ -3663,6 +3663,8 @@ where_is_recursive_mapper (Lisp_Object m
struct key_data *new = xnew_array (struct key_data, size);
memcpy ((void *)new, (const void *)c->keys_so_far,
c->keys_so_far_total_size * sizeof (struct key_data));
+ xfree (c->keys_so_far);
+ c->keys_so_far = new;
}
else
XREALLOC_ARRAY (c->keys_so_far, struct key_data, size);
1.9.2.1 +1 -1 XEmacs/xemacs/src/md5.c
Index: md5.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/md5.c,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -p -r1.9 -r1.9.2.1
--- md5.c 2001/04/12 18:24:01 1.9
+++ md5.c 2006/07/01 05:19:59 1.9.2.1
@@ -581,7 +581,7 @@ file-coding or Mule support. Otherwise,
Bufbyte tempbuf[1024]; /* some random amount */
Lstream_data_count size_in_bytes =
Lstream_read (XLSTREAM (instream), tempbuf, sizeof (tempbuf));
- if (!size_in_bytes)
+ if (size_in_bytes <= 0)
break;
/* Process the bytes. */
1.7.2.3 +1 -1 XEmacs/xemacs/src/nas.c
Index: nas.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/nas.c,v
retrieving revision 1.7.2.2
retrieving revision 1.7.2.3
diff -u -p -r1.7.2.2 -r1.7.2.3
--- nas.c 2002/10/31 15:08:26 1.7.2.2
+++ nas.c 2006/07/01 05:19:59 1.7.2.3
@@ -751,7 +751,7 @@ SndOpenDataForReading (const char *data,
/* Stuff taken from wave.c from NAS. Just like snd files, NAS can't
read wave data from memory, so these functions do that for us. */
-#define Err() { return NULL; }
+#define Err() { free (wi); return NULL; }
#define readFourcc(_f) dread(_f, sizeof(RIFF_FOURCC), 1)
#define cmpID(_x, _y) \
strncmp((char *) (_x), (char *) (_y), sizeof(RIFF_FOURCC))
1.2.2.4 +2 -2 XEmacs/xemacs/src/redisplay-gtk.c
Index: redisplay-gtk.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay-gtk.c,v
retrieving revision 1.2.2.3
retrieving revision 1.2.2.4
diff -u -p -r1.2.2.3 -r1.2.2.4
--- redisplay-gtk.c 2005/01/31 02:55:27 1.2.2.3
+++ redisplay-gtk.c 2006/07/01 05:19:59 1.2.2.4
@@ -294,7 +294,7 @@ gtk_output_display_block (struct window
int cursor_width, int cursor_height)
{
struct frame *f = XFRAME (w->frame);
- Emchar_dynarr *buf = Dynarr_new (Emchar);
+ Emchar_dynarr *buf;
Lisp_Object window;
struct display_block *db = Dynarr_atp (dl->display_blocks, block);
@@ -326,7 +326,7 @@ gtk_output_display_block (struct window
if (end < 0)
end = Dynarr_length (rba);
- Dynarr_reset (buf);
+ buf = Dynarr_new (Emchar);
while (elt < end)
{
1.29.2.3 +3 -3 XEmacs/xemacs/src/redisplay-msw.c
Index: redisplay-msw.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay-msw.c,v
retrieving revision 1.29.2.2
retrieving revision 1.29.2.3
diff -u -p -r1.29.2.2 -r1.29.2.3
--- redisplay-msw.c 2005/01/31 02:55:27 1.29.2.2
+++ redisplay-msw.c 2006/07/01 05:19:59 1.29.2.3
@@ -1,4 +1,4 @@
-/* mswindows output and frame manipulation routines.
+* mswindows output and frame manipulation routines.
Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
Copyright (C) 1994 Lucid, Inc.
Copyright (C) 1995 Sun Microsystems, Inc.
@@ -1044,7 +1044,7 @@ mswindows_output_display_block (struct w
int cursor_width, int cursor_height)
{
struct frame *f = XFRAME (w->frame);
- Emchar_dynarr *buf = Dynarr_new (Emchar);
+ Emchar_dynarr *buf;
Lisp_Object window;
struct display_block *db = Dynarr_atp (dl->display_blocks, block);
@@ -1071,7 +1071,7 @@ mswindows_output_display_block (struct w
if (end < 0)
end = Dynarr_length (rba);
- Dynarr_reset (buf);
+ buf = Dynarr_new (Emchar);
while (elt < end)
{
1.12.2.5 +3 -1 XEmacs/xemacs/src/redisplay-output.c
Index: redisplay-output.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay-output.c,v
retrieving revision 1.12.2.4
retrieving revision 1.12.2.5
diff -u -p -r1.12.2.4 -r1.12.2.5
--- redisplay-output.c 2005/01/31 02:55:28 1.12.2.4
+++ redisplay-output.c 2006/07/01 05:19:59 1.12.2.5
@@ -1317,7 +1317,7 @@ redisplay_output_layout (Lisp_Object dom
{
Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
Lisp_Object rest, window = DOMAIN_WINDOW (domain);
- Emchar_dynarr *buf = Dynarr_new (Emchar);
+ Emchar_dynarr *buf;
struct window *w = XWINDOW (window);
struct device *d = DOMAIN_XDEVICE (domain);
int layout_height, layout_width;
@@ -1333,6 +1333,8 @@ redisplay_output_layout (Lisp_Object dom
/* This makes the glyph area fit into the display area. */
if (!redisplay_normalize_glyph_area (db, dga))
return;
+
+ buf = Dynarr_new (Emchar);
/* Highly dodgy optimization. We want to only output the whole
layout if we really have to. */
1.16.2.3 +2 -2 XEmacs/xemacs/src/redisplay-tty.c
Index: redisplay-tty.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay-tty.c,v
retrieving revision 1.16.2.2
retrieving revision 1.16.2.3
diff -u -p -r1.16.2.2 -r1.16.2.3
--- redisplay-tty.c 2005/11/28 02:10:20 1.16.2.2
+++ redisplay-tty.c 2006/07/01 05:20:00 1.16.2.3
@@ -196,7 +196,7 @@ tty_output_display_block (struct window
int cursor_height)
{
struct frame *f = XFRAME (w->frame);
- Emchar_dynarr *buf = Dynarr_new (Emchar);
+ Emchar_dynarr *buf;
struct display_block *db = Dynarr_atp (dl->display_blocks, block);
rune_dynarr *rba = db->runes;
@@ -222,7 +222,7 @@ tty_output_display_block (struct window
if (end < 0)
end = Dynarr_length (rba);
- Dynarr_reset (buf);
+ buf = Dynarr_new (Emchar);
while (elt < end && Dynarr_atp (rba, elt)->xpos < start_pixpos)
{
1.25.2.6 +2 -2 XEmacs/xemacs/src/redisplay-x.c
Index: redisplay-x.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay-x.c,v
retrieving revision 1.25.2.5
retrieving revision 1.25.2.6
diff -u -p -r1.25.2.5 -r1.25.2.6
--- redisplay-x.c 2005/01/31 02:55:28 1.25.2.5
+++ redisplay-x.c 2006/07/01 05:20:00 1.25.2.6
@@ -318,7 +318,7 @@ x_output_display_block (struct window *w
int cursor_width, int cursor_height)
{
struct frame *f = XFRAME (w->frame);
- Emchar_dynarr *buf = Dynarr_new (Emchar);
+ Emchar_dynarr *buf;
Lisp_Object window;
struct display_block *db = Dynarr_atp (dl->display_blocks, block);
@@ -345,7 +345,7 @@ x_output_display_block (struct window *w
if (end < 0)
end = Dynarr_length (rba);
- Dynarr_reset (buf);
+ buf = Dynarr_new (Emchar);
while (elt < end)
{
1.2.2.5 +8 -6 XEmacs/xemacs/src/scrollbar-gtk.c
Index: scrollbar-gtk.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/scrollbar-gtk.c,v
retrieving revision 1.2.2.4
retrieving revision 1.2.2.5
diff -u -p -r1.2.2.4 -r1.2.2.5
--- scrollbar-gtk.c 2005/01/31 02:55:30 1.2.2.4
+++ scrollbar-gtk.c 2006/07/01 05:20:00 1.2.2.5
@@ -57,14 +57,16 @@ gtk_inhibit_scrollbar_slider_size_change
static void
gtk_free_scrollbar_instance (struct scrollbar_instance *instance)
{
- if (SCROLLBAR_GTK_WIDGET (instance))
+ if (instance->scrollbar_data)
{
- gtk_widget_hide_all (SCROLLBAR_GTK_WIDGET (instance));
- gtk_widget_destroy (SCROLLBAR_GTK_WIDGET (instance));
- }
+ if (SCROLLBAR_GTK_WIDGET (instance))
+ {
+ gtk_widget_hide_all (SCROLLBAR_GTK_WIDGET (instance));
+ gtk_widget_destroy (SCROLLBAR_GTK_WIDGET (instance));
+ }
- if (instance->scrollbar_data)
- xfree (instance->scrollbar_data);
+ xfree (instance->scrollbar_data);
+ }
}
/* A device method. */
1.11.2.6 +4 -2 XEmacs/xemacs/src/scrollbar-msw.c
Index: scrollbar-msw.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/scrollbar-msw.c,v
retrieving revision 1.11.2.5
retrieving revision 1.11.2.6
diff -u -p -r1.11.2.5 -r1.11.2.6
--- scrollbar-msw.c 2005/01/31 02:55:31 1.11.2.5
+++ scrollbar-msw.c 2006/07/01 05:20:00 1.11.2.6
@@ -83,9 +83,11 @@ mswindows_create_scrollbar_instance (str
static void
mswindows_free_scrollbar_instance (struct scrollbar_instance *sb)
{
- DestroyWindow (SCROLLBAR_MSW_HANDLE (sb));
if (sb->scrollbar_data)
- xfree (sb->scrollbar_data);
+ {
+ DestroyWindow (SCROLLBAR_MSW_HANDLE (sb));
+ xfree (sb->scrollbar_data);
+ }
}
static void
1.17.2.2 +12 -10 XEmacs/xemacs/src/scrollbar-x.c
Index: scrollbar-x.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/scrollbar-x.c,v
retrieving revision 1.17.2.1
retrieving revision 1.17.2.2
diff -u -p -r1.17.2.1 -r1.17.2.2
--- scrollbar-x.c 2005/01/31 02:55:31 1.17.2.1
+++ scrollbar-x.c 2006/07/01 05:20:01 1.17.2.2
@@ -71,19 +71,21 @@ x_inhibit_scrollbar_slider_size_change (
static void
x_free_scrollbar_instance (struct scrollbar_instance *instance)
{
- if (SCROLLBAR_X_NAME (instance))
- xfree (SCROLLBAR_X_NAME (instance));
-
- if (SCROLLBAR_X_WIDGET (instance))
+ if (instance->scrollbar_data)
{
- if (XtIsManaged (SCROLLBAR_X_WIDGET (instance)))
- XtUnmanageChild (SCROLLBAR_X_WIDGET (instance));
+ if (SCROLLBAR_X_NAME (instance))
+ xfree (SCROLLBAR_X_NAME (instance));
- lw_destroy_all_widgets (SCROLLBAR_X_ID (instance));
- }
+ if (SCROLLBAR_X_WIDGET (instance))
+ {
+ if (XtIsManaged (SCROLLBAR_X_WIDGET (instance)))
+ XtUnmanageChild (SCROLLBAR_X_WIDGET (instance));
- if (instance->scrollbar_data)
- xfree (instance->scrollbar_data);
+ lw_destroy_all_widgets (SCROLLBAR_X_ID (instance));
+ }
+
+ xfree (instance->scrollbar_data);
+ }
}
/* A device method. */
1.12.2.1 +1 -1 XEmacs/xemacs/src/sound.c
Index: sound.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/sound.c,v
retrieving revision 1.12
retrieving revision 1.12.2.1
diff -u -p -r1.12 -r1.12.2.1
--- sound.c 2001/04/12 18:24:19 1.12
+++ sound.c 2006/07/01 05:20:01 1.12.2.1
@@ -517,7 +517,7 @@ init_native_sound (struct device *d)
DEVICE_ON_CONSOLE_P (d) = 0;
else
{
- char hn [255];
+ char *hn = alloca_array (char, strlen (h->h_name) + 1);
struct hostent *l;
strcpy (hn, h->h_name);
l = gethostbyname (localname);
1.2.2.45 +11 -0 XEmacs/xemacs/tests/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/ChangeLog,v
retrieving revision 1.2.2.44
retrieving revision 1.2.2.45
diff -u -p -r1.2.2.44 -r1.2.2.45
--- ChangeLog 2006/01/29 00:00:56 1.2.2.44
+++ ChangeLog 2006/07/01 05:20:17 1.2.2.45
@@ -1,3 +1,14 @@
+2006-06-24 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * automated/test-harness.el (Silence-Message): New macro.
+ * automated/mule-tests.el: Use it.
+ * automated/region-tests.el: Use it.
+ * automated/tag-tests.el: Use it.
+
+2006-06-24 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * automated/test-harness.el: Improve handling of unexpected errors.
+
2006-01-28 Vin Shelton <acs(a)xemacs.org>
* XEmacs 21.4.19 is released
1.2.2.5 +1 -2 XEmacs/xemacs/tests/automated/mule-tests.el
Index: mule-tests.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/automated/mule-tests.el,v
retrieving revision 1.2.2.4
retrieving revision 1.2.2.5
diff -u -p -r1.2.2.4 -r1.2.2.5
--- mule-tests.el 2005/12/08 01:31:23 1.2.2.4
+++ mule-tests.el 2006/07/01 05:20:19 1.2.2.5
@@ -301,8 +301,7 @@ the Assert macro checks for correctness.
(name1 (make-temp-name prefix))
(name2 (make-temp-name prefix))
(file-name-coding-system 'iso-8859-2))
- ;; This is how you suppress output from `message', called by `write-region'
- (flet ((append-message (&rest args) ()))
+ (Silence-Message
(Assert (not (equal name1 name2)))
;; Kludge to handle Mac OS X which groks only UTF-8.
(cond ((eq system-type 'darwin)
1.2.2.2 +6 -3 XEmacs/xemacs/tests/automated/tag-tests.el
Index: tag-tests.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/automated/tag-tests.el,v
retrieving revision 1.2.2.1
retrieving revision 1.2.2.2
diff -u -p -r1.2.2.1 -r1.2.2.2
--- tag-tests.el 2004/05/13 00:10:58 1.2.2.1
+++ tag-tests.el 2006/07/01 05:20:19 1.2.2.2
@@ -68,20 +68,23 @@ If FILENAME is omitted, the printname of
(let ((tags-always-exact t))
;; Search for the tag "mystruct"; this should succeed
- (find-tag "mystruct")
+ (Silence-Message
+ (find-tag "mystruct"))
(Assert (eq (point) 2))
;; Search again. The search should fail, based on the patch that
;; Sven Grundmann submitted for 21.4.16.
(Check-Error-Message error "No more entries matching mystruct"
- (tags-loop-continue)))
+ (Silence-Message
+ (tags-loop-continue))))
(let ((tags-always-exact nil))
;; Search for the definition of "require". Until the etags.el upgrade
;; from 21.5 in 21.4.16, this test would fail.
(condition-case nil
- (find-tag "require")
+ (Silence-Message
+ (find-tag "require"))
(t t))
(Assert (eq (point) 52)))
1.2.2.6 +56 -6 XEmacs/xemacs/tests/automated/test-harness.el
Index: test-harness.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/automated/test-harness.el,v
retrieving revision 1.2.2.5
retrieving revision 1.2.2.6
diff -u -p -r1.2.2.5 -r1.2.2.6
--- test-harness.el 2003/10/23 02:04:04 1.2.2.5
+++ test-harness.el 2006/07/01 05:20:19 1.2.2.6
@@ -38,6 +38,14 @@
;;; Implementation-Incomplete-Expect-Failure wrapper macros to mark them.
;;; A lot of the tests we run push limits; suppress Ebola message with the
;;; Ignore-Ebola wrapper macro.
+;;; Some noisy code will call `message'. Output from `message' can be
+;;; suppressed with the Silence-Message macro. Functions that are known to
+;;; issue messages include `write-region', `find-tag', `tag-loop-continue',
+;;; `insert', and `mark-whole-buffer'. N.B. The Silence-Message macro
+;;; currently does not suppress the newlines printed by `message'.
+;;; Definitely do not use Silence-Message with Check-Message.
+;;; In general it should probably only be used on code that prepares for a
+;;; test, not on tests.
;;;
;;; You run the tests using M-x test-emacs-test-file,
;;; or $(EMACS) -batch -l .../test-harness.el -f batch-test-emacs file ...
@@ -45,6 +53,23 @@
(require 'bytecomp)
+(defvar unexpected-test-suite-failures 0
+ "Cumulative number of unexpected failures since test-harness was loaded.
+
+\"Unexpected failures\" are those caught by a generic handler established
+outside of the test context. As such they involve an abort of the test
+suite for the file being tested.
+
+They often occur during preparation of a test or recording of the results.
+For example, an executable used to generate test data might not be present
+on the system, or a system error might occur while reading a data file.")
+
+(defvar unexpected-test-suite-failure-files nil
+ "List of test files causing unexpected failures.")
+
+;; Declared for dynamic scope; _do not_ initialize here.
+(defvar unexpected-test-file-failures)
+
(defvar test-harness-test-compiled nil
"Non-nil means the test code was compiled before execution.")
@@ -134,6 +159,7 @@ The output file's name is made by append
(setq body (cons (read buffer) body)))
(end-of-file nil)
(error
+ (incf unexpected-test-file-failures)
(princ (format "Unexpected error %S reading forms from buffer\n"
error-info))))
`(lambda ()
@@ -144,7 +170,6 @@ The output file's name is made by append
(defvar missing-message-failures)
(defvar other-failures)
- (defvar unexpected-test-suite-failure)
(defvar trick-optimizer)
,@(nreverse body))))
@@ -158,6 +183,7 @@ The output file's name is made by append
(wrong-error-failures 0)
(missing-message-failures 0)
(other-failures 0)
+ (unexpected-test-file-failures 0)
;; #### perhaps this should be a defvar, and output at the very end
;; OTOH, this way AC types can use a null EMACSPACKAGEPATH to find
@@ -165,7 +191,6 @@ The output file's name is made by append
(skipped-test-reasons (make-hash-table :test 'equal))
(trick-optimizer nil)
- (unexpected-test-suite-failure nil)
(debug-on-error t)
(pass-stream nil))
(with-output-to-temp-buffer "*Test-Log*"
@@ -266,8 +291,8 @@ BODY is a sequence of expressions and ma
(Print-Failure "%S ==> expected error %S, got error %S instead"
,quoted-body ',expected-error error-info)
(incf wrong-error-failures)))))
-
+ ;; Do not use this with Silence-Message.
(defmacro Check-Message (expected-message-regexp &rest body)
(Skip-Test-Unless (fboundp 'defadvice)
"can't defadvice"
@@ -299,6 +324,10 @@ BODY is a sequence of expressions and ma
(incf other-failures)))
(ad-unadvise 'message)))))
+ ;; #### Perhaps this should override `message' itself, too?
+ (defmacro Silence-Message (&rest body)
+ `(flet ((append-message (&rest args) ())) ,@body))
+
(defmacro Ignore-Ebola (&rest body)
`(let ((debug-issue-ebola-notices -42)) ,@body))
@@ -313,7 +342,7 @@ BODY is a sequence of expressions and ma
(condition-case error-info
(funcall (test-harness-read-from-buffer inbuffer))
(error
- (setq unexpected-test-suite-failure t)
+ (incf unexpected-test-file-failures)
(princ (format "Unexpected error %S while executing interpreted code\n"
error-info))
(message "Unexpected error %S while executing interpreted code." error-info)
@@ -334,6 +363,7 @@ BODY is a sequence of expressions and ma
(condition-case error-info
(if code (funcall code))
(error
+ (incf unexpected-test-file-failures)
(princ (format "Unexpected error %S while executing byte-compiled code\n"
error-info))
(message "Unexpected error %S while executing byte-compiled code."
error-info)
@@ -376,7 +406,11 @@ BODY is a sequence of expressions and ma
(cons (list filename passes total)
test-harness-file-results-alist))
(message "%s" summary-msg))
- (when unexpected-test-suite-failure
+ (when (> unexpected-test-file-failures 0)
+ (setq unexpected-test-suite-failure-files
+ (cons filename unexpected-test-suite-failure-files))
+ (setq unexpected-test-suite-failures
+ (+ unexpected-test-suite-failures unexpected-test-file-failures))
(message "Test suite execution failed unexpectedly."))
(fmakunbound 'Assert)
(fmakunbound 'Check-Error)
@@ -503,7 +537,23 @@ For example, invoke \"xemacs -batch -f b
(/ (* 100 nsucc) ntest))
(message test-harness-null-summary-template
(concat basename ":")))
- (setq results (cdr results))))))
+ (setq results (cdr results)))))
+ (when (> unexpected-test-suite-failures 0)
+ (message "\n***** There %s %d unexpected test suite %s in %s:"
+ (if (= unexpected-test-suite-failures 1) "was" "were")
+ unexpected-test-suite-failures
+ (if (= unexpected-test-suite-failures 1) "failure" "failures")
+ (if (= (length unexpected-test-suite-failure-files) 1)
+ "file"
+ "files"))
+ (while unexpected-test-suite-failure-files
+ (let ((line (pop unexpected-test-suite-failure-files)))
+ (while (and (< (length line) 61)
+ unexpected-test-suite-failure-files)
+ (setq line
+ (concat line " "
+ (pop unexpected-test-suite-failure-files))))
+ (message line)))))
(message "\nDone")
(kill-emacs (if error 1 0))))