Dr. Werner Fink 2009-12-04 17:43:38 +00:00 committed by Git OBS Bridge
parent fc073d192c
commit baa426bbe1
10 changed files with 247 additions and 173 deletions

View File

@ -0,0 +1,47 @@
diff -r 1257b938f03a lisp/ChangeLog
--- lisp/ChangeLog Fri Dec 04 10:59:45 2009 +0900
+++ lisp/ChangeLog Sat Dec 05 01:08:29 2009 +0900
@@ -1,3 +1,8 @@
+2009-12-05 Stephen J. Turnbull <stephen@xemacs.org>
+
+ * font.el (x-font-create-object): Check for Xft before using it.
+ This fixes the symptom in openSUSE bug #558764.
+
2009-11-10 Jerry James <james@xemacs.org>
* device.el (device-type): Remove (mostly imaginary) support for
diff -r 1257b938f03a lisp/font.el
--- lisp/font.el Fri Dec 04 10:59:45 2009 +0900
+++ lisp/font.el Sat Dec 05 01:08:29 2009 +0900
@@ -569,6 +569,7 @@
(if (or (not (stringp fontname))
(not (string-match font-x-font-regexp fontname)))
(if (and (stringp fontname)
+ (featurep 'xft-fonts)
(string-match font-xft-font-regexp fontname))
;; Return an XFT font.
(xft-font-create-object fontname)
diff -r 1257b938f03a src/ChangeLog
--- src/ChangeLog Fri Dec 04 10:59:45 2009 +0900
+++ src/ChangeLog Sat Dec 05 01:08:29 2009 +0900
@@ -1,3 +1,8 @@
+2009-12-05 Stephen J. Turnbull <stephen@xemacs.org>
+
+ * faces.c (complex_vars_of_faces): Explain why "*" isn't rewritten
+ as a full XLFD.
+
2009-11-19 Vin Shelton <acs@xemacs.org>
* sysdep.c (sys_subshell): Restore sys_subshell(); it's necessary
diff -r 1257b938f03a src/faces.c
--- src/faces.c Fri Dec 04 10:59:45 2009 +0900
+++ src/faces.c Sat Dec 05 01:08:29 2009 +0900
@@ -2342,6 +2342,8 @@
Fcons
(Fcons
(list1 (device_symbol),
+ /* grrr. This really does need to be "*", not an XLFD.
+ An unspecified XLFD won't pick up stuff like 10x20. */
build_string ("*")),
inst_list);
#ifdef MULE

View File

@ -0,0 +1,148 @@
# HG changeset patch
# User Stephen J. Turnbull <stephen@xemacs.org>
# Date 1259891798 -32400
# Node ID dec62ca5a899f41688a663765df1aefddfae6351
# Parent 75975fd0b7fc8043f7fc719439c225fa739134d9
Prevent font frobbers from operating on TTY specs.
--- lisp/ChangeLog Wed Nov 18 22:44:28 2009 +0900
+++ lisp/ChangeLog Fri Dec 04 10:56:38 2009 +0900
@@ -79,6 +79,20 @@
Update docstring.
(narrow-to-defun):
Document that optional ARG is ignored.
+
+2009-11-01 Stephen Turnbull <stephen@xemacs.org>
+
+ * faces.el (Face-frob-property):
+ Give mapper for TTYs 2 args.
+ (make-face-family):
+ (make-face-size):
+ Generic mapper ignores TTYs and null devices.
+ (make-face-bold):
+ (make-face-italic):
+ (make-face-bold-italic):
+ (make-face-unbold):
+ (make-face-unitalic):
+ TTY mapper takes 2 args.
2009-10-09 Stephen Turnbull <stephen@xemacs.org>
--- lisp/faces.el Wed Nov 18 22:44:28 2009 +0900
+++ lisp/faces.el Fri Dec 04 10:56:38 2009 +0900
@@ -933,10 +933,11 @@
;; and EXACT-P are as in that call. UNFROBBED-FACE and FROBBED-FACE are
;; what we expect the original face and the result to look like,
;; respectively. TTY-PROPS is a list of face properties to frob in place
- ;; of `font' for TTY's. FROB-MAPPING is either a plist mapping device
+ ;; of `font' for TTYs. FROB-MAPPING is either a plist mapping device
;; types to functions of two args (NAME DEVICE) that will frob the
- ;; instantiator as appropriate for the device type (this includes TTY's),
- ;; or a function to handle the mapping for all device types.
+ ;; instantiator to NAME as appropriate for DEVICE's type (this includes
+ ;; TTYs #### TTYs are not passed the device, just the symbol 'tty), or a
+ ;; function to handle the mapping for all device types.
;; STANDARD-FACE-MAPPING is an alist of mappings of inheritance
;; instantiators to be replaced with other inheritance instantiators, meant
;; for e.g. converting [bold] into [bold-italic].
@@ -1038,7 +1039,11 @@
(t
(let ((value
(if (eq devtype-spec 'tty)
- (funcall mapper x)
+ ;; #### not quite right but need
+ ;; two args to match documentation
+ ;; mostly we just ignore TTYs so
+ ;; for now just pass the devtype
+ (funcall mapper x 'tty)
(funcall mapper x
(derive-domain-from-locale
locale devtype-spec
@@ -1193,11 +1198,16 @@
(Face-frob-property face locale tags exact-p
nil nil 'font nil
+ ;; #### this code is duplicated in make-face-size
`(lambda (f d)
- ;; keep the dependency on font.el for now
- (let ((fo (font-create-object f d)))
- (set-font-family fo ,family)
- (font-create-name fo d)))
+ ;; keep the dependency on font.el for now
+ ;; #### The filter on null d is a band-aid.
+ ;; Frob-face-property should not be passing in
+ ;; null devices.
+ (unless (or (null d) (eq d 'tty))
+ (let ((fo (font-create-object f d)))
+ (set-font-family fo ,family)
+ (font-create-name fo d))))
nil))
;; Style (ie, typographical face) frobbing
@@ -1311,7 +1321,7 @@
(interactive (list (read-face-name "Make which face bold: ")))
(Face-frob-property face locale tags exact-p
'default 'bold 'font '(highlight)
- '(tty (lambda (x) t)
+ '(tty (lambda (f d) t)
x x-make-font-bold
gtk gtk-make-font-bold
mswindows mswindows-make-font-bold
@@ -1330,7 +1340,7 @@
(interactive (list (read-face-name "Make which face italic: ")))
(Face-frob-property face locale tags exact-p
'default 'italic 'font '(underline)
- '(tty (lambda (x) t)
+ '(tty (lambda (f d) t)
x x-make-font-italic
gtk gtk-make-font-italic
mswindows mswindows-make-font-italic
@@ -1349,7 +1359,7 @@
(interactive (list (read-face-name "Make which face bold-italic: ")))
(Face-frob-property face locale tags exact-p
'default 'bold-italic 'font '(underline highlight)
- '(tty (lambda (x) t)
+ '(tty (lambda (f d) t)
x x-make-font-bold-italic
gtk gtk-make-font-bold-italic
mswindows mswindows-make-font-bold-italic
@@ -1369,7 +1379,7 @@
(interactive (list (read-face-name "Make which face non-bold: ")))
(Face-frob-property face locale tags exact-p
'bold 'default 'font '(highlight)
- '(tty (lambda (x) nil)
+ '(tty (lambda (f d) nil)
x x-make-font-unbold
gtk gtk-make-font-unbold
mswindows mswindows-make-font-unbold
@@ -1388,7 +1398,7 @@
(interactive (list (read-face-name "Make which face non-italic: ")))
(Face-frob-property face locale tags exact-p
'italic 'default 'font '(underline)
- '(tty (lambda (x) nil)
+ '(tty (lambda (f d) nil)
x x-make-font-unitalic
gtk gtk-make-font-unitalic
mswindows mswindows-make-font-unitalic
@@ -1408,11 +1418,16 @@
(read-number "Size to set: " t 10)))
(Face-frob-property face locale tags exact-p
nil nil 'font nil
+ ;; #### this code is duplicated in make-face-family
`(lambda (f d)
;; keep the dependency on font.el for now
- (let ((fo (font-create-object f d)))
- (set-font-size fo ,size)
- (font-create-name fo d)))
+ ;; #### The filter on null d is a band-aid.
+ ;; Frob-face-property should not be passing in
+ ;; null devices.
+ (unless (or (null d) (eq d 'tty))
+ (let ((fo (font-create-object f d)))
+ (set-font-size fo ,size)
+ (font-create-name fo d))))
nil))
;; Why do the following two functions lose so badly in so many

View File

@ -35,7 +35,7 @@ Index: xemacs-21.5.29/Makefile.in.in
#endif
#ifdef WIN32_NATIVE
${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}
@@ -417,14 +419,14 @@ install-arch-dep: mkdir
@@ -417,10 +417,10 @@ install-arch-dep: mkdir
cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version}.exe ./${PROGNAME}
cd ${bindir} && $(RM) ./${SHEBANG_PROGNAME} && ${LN_S} ${PROGNAME}-${version}.exe ./${SHEBANG_PROGNAME}
# else
@ -49,12 +49,7 @@ Index: xemacs-21.5.29/Makefile.in.in
+ cd $(DESTDIR)${bindir} && $(RM) ./${SHEBANG_PROGNAME} && ${LN_S} ${PROGNAME}-${version} ./${SHEBANG_PROGNAME}
# endif /* CYGWIN */
#endif /* WIN32_NATIVE */
if test "${prefix}" != "${exec_prefix}"; then \
- $(MAKEPATH) ${exec_prefix}/lib/${instvardir}; \
+ $(MAKEPATH) $(DESTDIR)${exec_prefix}/lib/${instvardir}; \
for dir in \
lib/${inststaticdir} \
lib/${instvardir}/etc \
#ifdef HAVE_SHLIB
@@ -435,13 +437,13 @@ install-arch-dep: mkdir
done; \
fi
@ -148,19 +143,6 @@ Index: xemacs-21.5.29/Makefile.in.in
## Install bundled packages, if present.
Index: xemacs-21.5.29/dynodump/Makefile.in.in
===================================================================
--- xemacs-21.5.29.orig/dynodump/Makefile.in.in
+++ xemacs-21.5.29/dynodump/Makefile.in.in
@@ -22,6 +22,8 @@
## Synched up with: Not synched with FSF.
+DESTDIR=
+
## For performance and consistency, no built-in rules.
.SUFFIXES:
.SUFFIXES: .c .o .i .h
Index: xemacs-21.5.29/etc/tests/external-widget/Makefile
===================================================================
--- xemacs-21.5.29.orig/etc/tests/external-widget/Makefile

View File

@ -13,3 +13,19 @@ Index: xemacs-21.5.29/configure.ac
AC_CHECK_LIB(gdbm_compat, dbm_open, [
enable_database_gdbm=yes enable_database_dbm=no libdbm="-lgdbm_compat -lgdbm"], [
if test "$enable_database_gdbm" = "yes"; then
--- xemacs-beta-b604d235f028/configure.ac
+++ xemacs-beta-b604d235f028/configure.ac 2009-12-03 15:29:15.975430547 +0000
@@ -5035,11 +5035,11 @@ dnl #### Should we check for gdbm.h, too
if test "$enable_database_gdbm $enable_database_dbm" != "no no"; then
ndbm_h_file=""
AC_CHECK_HEADERS([ndbm.h gdbm/ndbm.h],[ndbm_h_file=$ac_header; break;],[],[])
- if test "$ndbm_h_found" != "yes"; then
+ if test -z "$ndbm_h_file" ; then
test "$enable_database_gdbm" = "yes" -o \
"$enable_database_dbm" = "yes" && \
XE_DIE("Required DBM support cannot be provided.")
- enable_database_gdbm=no enable_database_dbm=no]
+ enable_database_gdbm=no enable_database_dbm=no
fi
fi

View File

@ -1,96 +0,0 @@
|APPROVE COMMIT 21.5
|
|This patch has been committed. When trying to open very large image
|files (or image files with header files that claim the image is very
|large), we multiply length times width to get the number of pixels in
|the image (and possibly multiply that number if a pixel occupies more
|than 1 byte). The multiplication can overflow, resulting in passing
|negative or insufficiently positive size values to malloc. This patch
|checks whether the multiplication will overflow. If so, XEmacs
|refuses to attempt to load the image.
|
|(Patch taken from upstream, already applied there)
|
--- src/glyphs-eimage.c Mon Jun 29 08:20:47 2009 -0600
+++ src/glyphs-eimage.c Wed Jul 01 15:42:54 2009 -0600
@@ -409,6 +409,7 @@
*/
{
+ UINT_64_BIT pixels_sq;
int jpeg_gray = 0; /* if we're dealing with a grayscale */
/* Step 4: set parameters for decompression. */
@@ -431,7 +432,10 @@
jpeg_start_decompress (&cinfo);
/* Step 6: Read in the data and put into EImage format (8bit RGB triples)*/
-
+ pixels_sq =
+ (UINT_64_BIT) cinfo.output_width * (UINT_64_BIT) cinfo.output_height;
+ if (pixels_sq > ((size_t) -1) / 3)
+ signal_image_error ("JPEG image too large to instantiate", instantiator);
unwind.eimage =
xnew_binbytes (cinfo.output_width * cinfo.output_height * 3);
if (!unwind.eimage)
@@ -677,6 +681,7 @@
{
ColorMapObject *cmo = unwind.giffile->SColorMap;
int i, j, row, pass, interlace, slice;
+ UINT_64_BIT pixels_sq;
Binbyte *eip;
/* interlaced gifs have rows in this order:
0, 8, 16, ..., 4, 12, 20, ..., 2, 6, 10, ..., 1, 3, 5, ... */
@@ -685,6 +690,9 @@
height = unwind.giffile->SHeight;
width = unwind.giffile->SWidth;
+ pixels_sq = (UINT_64_BIT) width * (UINT_64_BIT) height;
+ if (pixels_sq > ((size_t) -1) / (3 * unwind.giffile->ImageCount))
+ signal_image_error ("GIF image too large to instantiate", instantiator);
unwind.eimage =
xnew_binbytes (width * height * 3 * unwind.giffile->ImageCount);
if (!unwind.eimage)
@@ -948,11 +956,15 @@
{
int y;
Binbyte **row_pointers;
+ UINT_64_BIT pixels_sq;
height = info_ptr->height;
width = info_ptr->width;
+ pixels_sq = (UINT_64_BIT) width * (UINT_64_BIT) height;
+ if (pixels_sq > ((size_t) -1) / 3)
+ signal_image_error ("PNG image too large to instantiate", instantiator);
/* Wow, allocate all the memory. Truly, exciting. */
- unwind.eimage = xnew_array_and_zero (Binbyte, width * height * 3);
+ unwind.eimage = xnew_array_and_zero (Binbyte, (size_t) (pixels_sq * 3));
/* libpng expects that the image buffer passed in contains a
picture to draw on top of if the png has any transparencies.
This could be a good place to pass that in... */
@@ -1299,6 +1311,7 @@
uint32 *raster;
Binbyte *ep;
+ UINT_64_BIT pixels_sq;
assert (!NILP (data));
@@ -1321,12 +1334,15 @@
TIFFGetField (unwind.tiff, TIFFTAG_IMAGEWIDTH, &width);
TIFFGetField (unwind.tiff, TIFFTAG_IMAGELENGTH, &height);
- unwind.eimage = xnew_binbytes (width * height * 3);
+ pixels_sq = (UINT_64_BIT) width * (UINT_64_BIT) height;
+ if (pixels_sq >= 1 << 29)
+ signal_image_error ("TIFF image too large to instantiate", instantiator);
+ unwind.eimage = xnew_binbytes (pixels_sq * 3);
/* #### This is little more than proof-of-concept/function testing.
It needs to be reimplemented via scanline reads for both memory
compactness. */
- raster = (uint32*) _TIFFmalloc (width * height * sizeof (uint32));
+ raster = (uint32*) _TIFFmalloc ((tsize_t) (pixels_sq * sizeof (uint32)));
if (raster != NULL)
{
int i, j;

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:50627ee71e69dfbf818494f6701e7e07767f4ceafad20ad1a57c60f48119002a
size 12547703

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3f3880590588e727a99eebdec4deec354f5c1b2be51c6ee524a16571f7c5599a
size 9999561

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Fri Dec 4 18:41:30 CET 2009 - werner@suse.de
- Add patches from upstream to fix bnc#558764 (thenk you Stephen)
-------------------------------------------------------------------
Tue Aug 25 12:27:40 UTC 2009 - aj@suse.de

View File

@ -885,18 +885,6 @@ Index: xemacs-21.5.29/src/regex.c
reg_syntax_t re_syntax_options;
Index: xemacs-21.5.29/src/s/linux.h
===================================================================
--- xemacs-21.5.29.orig/src/s/linux.h
+++ xemacs-21.5.29/src/s/linux.h
@@ -25,6 +25,7 @@ Boston, MA 02111-1307, USA. */
#define USG
#define LINUX
+#define I18N2
/* powerpc gcc 2.8.0 doesn't define __ELF__, but it is */
Index: xemacs-21.5.29/suse/README.SuSE
===================================================================
--- /dev/null

View File

@ -30,6 +30,8 @@ BuildRequires: canna-devel compface db-devel fdupes fwnndev gcc-c++ gdbm-devel
%define xincludes /usr/X11R6/include
%define xlibraries /usr/X11R6/%{_lib}
%endif
%define _id b604d235f028
%define _hg beta-%{_id}
Url: http://www.xemacs.org
License: GPL v2 or later
Group: Productivity/Editors/Emacs
@ -37,31 +39,17 @@ PreReq: permissions
Requires: xemacs-info xemacs-packages ctags
Conflicts: gnuserv
AutoReqProv: on
Version: 21.5.29
Version: 21.5.b604d235f028
Release: 4
Summary: XEmacs
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# Howto get the cvs tree of XEmacs:
# ==============================================
# cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs login
# Password = cvs
# cvs -z3 -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs checkout xemacs
# Now check what tags are available:
# cd packages
# cvs status -v ChangeLog
# And update to the latest xemacs tag:
# cvs update -r r21-5-16
# cd ..
# Now make a tar.bz2 file from the contents of the "packages" directory:
# tar jcvf xemacs-<version>.tar.bz2 xemacs-<version>/
#
# XEmacs moved to Mercurial instad of CVS.
# Howto get the Mercurial tree of XEmacs:
# See: http://xemacs.digimirror.nl/Develop/hgaccess.html
# hg clone http://hg.debian.org/hg/xemacs/xemacs-beta
#
# delete the .hg directory before creating the tarball in order
# not to make the source rpm huge.
Source0: ftp://ftp.xemacs.org/xemacs-21.5/xemacs-%{version}.tar.bz2
Source0: ftp://ftp.xemacs.org/xemacs-21.5/xemacs-%{_hg}.tar.bz2
Source1: xe-list.el
Source2: fix-load-history.el
Source3: xemacs.desktop
@ -94,9 +82,11 @@ Patch45: fix-defface-custom-modified-face.patch
Patch50: menus-always-utf8.patch
Patch51: bnc502716-fontmenu.patch
Patch52: bnc502716-xft.patch
Patch53: xemacs-21.5.29-large-images.patch
Patch54: bnc558764_avoid-xft-if-absent.patch
Patch55: changeset-dec62ca5a899.patch
Patch292811: bugzilla-292811-make-x-make-font-bold-italic-xft-work.patch
Patch301352: bugzilla-301352-fix-wrong-incrementing-in-macros.patch
%define _default_patch_fuzz 2
%description
This is the current version of XEmacs, formerly known as Lucid-Emacs.
@ -160,33 +150,24 @@ Authors:
and many other contributors
%prep
# Currently XEmacs is not fully usable for Xfreetype support
# therefore we use XFontSet support:
%{!?enable_xfs:%global enable_xfs 1}
%ifarch ia64
%global enable_pdump 0
%else
%global enable_pdump 0
%endif
%global enable_dump_in_exec 0
# Currently XEmacs is not fully usable for Xfreetype support
# therefore we use XFontSet support:
%if %{?_project:1}%{!?_project:0}
%{!?enable_xfs:%global enable_xfs %(echo '%_project'|grep -cE '(SUSE:)?(openSUSE|SLE|Factory)')}
echo Project='%_project'
%else
%if %{?distribution:1}%{!?distribution:0}
%{!?enable_xfs:%global enable_xfs %(echo '%distribution'|grep -cE 'SUSE[:[:blank:]](openSUSE|SLE|Linux|Factory)')}
echo Distribution='%distribution'
%endif
%endif
%{!?enable_xfs:%global enable_xfs 1}
%if ! %enable_xfs
echo Use xft, requires X11, Xft, Xrender, freetype, and fontconfig support.
%else
echo Use xfs, that is XFontSet support for internationalized menubar.
%endif
%setup -q -n xemacs-%{version}
%setup -q -n xemacs-%{_hg}
%patch3 -p1
#%patch5 -p1 -b .fontmenu # appears to be not needed anymore
%patch13 -p1
#%patch13 -p1
%patch14 -p1
%patch18 -p0 -b .xevent
%patch19 -p1 -b .ppc
@ -212,7 +193,8 @@ echo Use xfs, that is XFontSet support for internationalized menubar.
%patch51 -p0
%patch52 -p0
%endif
%patch53 -p0
%patch54 -p0
%patch55 -p0
%patch292811 -p1
%patch301352 -p1
%patch0 -p1
@ -292,7 +274,7 @@ PREFIX="--prefix=/usr \
# when using "--rel-alloc, XEmacs 21.5.18 crashes often when using
# 'compile-goto-error'.
# --rel-alloc \
SPECIAL="--enable-database=gdbm,berkdb \
SPECIAL="--enable-database=berkdb,gdbm \
--with-ncurses \
--with-canna \
--with-tty=yes \
@ -335,10 +317,10 @@ X11="--with-xpm \
--with-png \
--with-x \
--with-athena=3d \
--enable--menubars=lucid \
--enable-scrollbars=lucid \
--enable-dialogs=athena \
--enable-widgets=athena \
--with-menubars=lucid \
--with-scrollbars=lucid \
--with-dialogs=athena \
--with-widgets=athena \
--x-includes=%{xincludes} \
--x-libraries=%{xlibraries} \
"
@ -354,18 +336,20 @@ MAIL="--enable-clash-detection \
#
# Mule
#
MULE="--enable-mule \
--with-xim=xlib \
# --with-xfs Compile with XFontSet support for bilingual menubar.
# * --with-xfs Compile with XFontSet support for bilingual menubar.
# Can't use this option with --with-xim=motif or xlib.
# And should have --with-menubars=lucid.
#
# (this is necessary to get German, French, Japanese
# and Romanian texts in the menus. It DOES work with
# --with-xim=xlib, the above comment from './configure --help'
# seems to be incorrect in that respect.)
#
MULE="--enable-mule \
--with-xim=xlib \
%if %enable_xfs
--with-xfs \
%else
--with-xft \
%endif
"
#