diff --git a/ChangeLog b/ChangeLog index c1a80f2d92f..3e76c91b196 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2011-09-29 Eli Zaretskii + + * .bzrignore: Add ./GNUmakefile.unix, lib/SYS, lib/alloca.in-h, + lib/signal.in-h. + + * config.bat: Rename GNUmakefile, so it is not run on MS-DOS. + Rename signal.in.h and alloca.in.h. + 2011-09-28 Eli Zaretskii * INSTALL: Mention that m17n libraries and libotf are needed for diff --git a/config.bat b/config.bat index a3660d577cd..cbbcf0cfcd5 100644 --- a/config.bat +++ b/config.bat @@ -279,8 +279,10 @@ If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-au cd lib Rem Rename files like djtar on plain DOS filesystem would. If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h +If Exist alloca.in.h update alloca.in.h alloca.in-h If Exist getopt.in.h update getopt.in.h getopt.in-h If Exist stdbool.in.h update stdbool.in.h stdbool.in-h +If Exist signal.in.h update signal.in.h signal.in-h If Exist stddef.in.h update stddef.in.h stddef.in-h If Exist stdint.in.h update stdint.in.h stdint.in-h If Exist stdio.in.h update stdio.in.h stdio.in-h @@ -326,6 +328,8 @@ Echo Then run CONFIG.BAT again with the same arguments you did now. goto End :gdbinitOk Echo Looking for the GDB init file...found +rem GNUMakefile is not appropriate for MS-DOS so move it out of the way +If Exist GNUmakefile mv -f GNUmakefile GNUmakefile.unix copy msdos\mainmake.v2 Makefile >nul rem ---------------------------------------------------------------------- goto End diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f83dbdd344a..38651d42596 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,38 @@ +2011-09-30 Martin Rudalics + + * startup.el (command-line-1): Fix last fix by inserting + initial-scratch-message into *scratch* before displaying it. + (Bug#9605) and (Bug#9636) + +2011-09-29 Eli Zaretskii + + * simple.el (line-move): If auto-hscroll-mode is disabled and the + window is hscrolled, move by logical lines. (Bug#9607) + (line-move-visual): Update the doc string to the above effect. + +2011-09-29 Martin Rudalics + + * window.el (display-buffer-record-window): When WINDOW is the + selected window use `point' instead of `window-point'. (Bug#9626) + + * startup.el (command-line-1): Use insert-before-markers when + inserting initial-scratch-message. (Bug#9605) + + * help.el (help-window): Remove variable. + +2011-09-29 Glenn Morris + + * pcmpl-cvs.el (pcomplete/cvs): Add "status" handler. + +2011-09-29 Juanma Barranquero + + * descr-text.el (describe-char-categories): Accept category + descriptions more than one line long. + 2011-09-28 Stefan Monnier + * simple.el (delete-trailing-whitespace): Fix last change. + * progmodes/perl-mode.el (perl-syntax-propertize-function): Don't confuse "y => 3" as the beginning of a `y' operation. diff --git a/lisp/descr-text.el b/lisp/descr-text.el index fca06adb2a9..7d267cec480 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -366,9 +366,10 @@ This function is semi-obsolete. Use `get-char-code-property'." (list (mapconcat (lambda (x) (let* ((c (category-docstring x)) - (doc (if (string-match "\\`\\(.*?\\)\n\\(.*\\)\\'" c) + (doc (if (string-match "\\`\\(.*?\\)\n" c) (propertize (match-string 1 c) - 'help-echo (match-string 2 c)) + 'help-echo + (substring c (1+ (match-end 1)))) c))) (format "%c:%s" x doc))) mnemonics ", "))))) diff --git a/lisp/help.el b/lisp/help.el index f4338c28ffb..e2af0759a65 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -37,17 +37,6 @@ (add-hook 'temp-buffer-setup-hook 'help-mode-setup) (add-hook 'temp-buffer-show-hook 'help-mode-finish) -;; The variable `help-window' below is used by `help-mode-finish' to -;; communicate the window displaying help (the "help window") to the -;; macro `with-help-window'. The latter sets `help-window' to t before -;; invoking `with-output-to-temp-buffer'. If and only if `help-window' -;; is eq to t, `help-mode-finish' (called by `temp-buffer-setup-hook') -;; sets `help-window' to the window selected by `display-buffer'. -;; Exiting `with-help-window' and calling `help-print-return-message' -;; reset `help-window' to nil. -(defvar help-window nil - "Window chosen for displaying help.") - ;; `help-window-point-marker' is a marker you can move to a valid ;; position of the buffer shown in the help window in order to override ;; the standard positioning mechanism (`point-min') chosen by diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el index 3ff07bca20e..9c9b72ab701 100644 --- a/lisp/pcmpl-cvs.el +++ b/lisp/pcmpl-cvs.el @@ -107,6 +107,10 @@ "j(pcmpl-cvs-tags '(?U ?P))" "I(pcmpl-cvs-entries '(??))W?")) (while (pcomplete-here (pcmpl-cvs-entries '(?U ?P))))) + ((pcomplete-test "status") + (setq pcomplete-help "(cvs)File status") + (pcomplete-opt "vlR") + (while (pcomplete-here (pcmpl-cvs-entries)))) (t (while (pcomplete-here (pcmpl-cvs-entries))))))) diff --git a/lisp/simple.el b/lisp/simple.el index 142270930ca..1ab90792bfa 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -589,9 +589,9 @@ If the region is active, only delete whitespace within the region." ;; Delete trailing empty lines. (goto-char end-marker) (when (and (not end) - (<= (skip-chars-backward "\n") -2) ;; Really the end of buffer. - (save-restriction (widen) (eobp))) + (save-restriction (widen) (eobp)) + (<= (skip-chars-backward "\n") -2)) (delete-region (1+ (point)) end-marker)) (set-marker end-marker nil)))) ;; Return nil for the benefit of `write-file-functions'. @@ -4244,7 +4244,9 @@ screen, instead of relying on buffer contents alone. It takes into account variable-width characters and line continuation. If nil, `line-move' moves point by logical lines. A non-nil setting of `goal-column' overrides the value of this variable -and forces movement by logical lines." +and forces movement by logical lines. +Disabling `auto-hscroll-mode' also overrides forces movement by logical +lines when the window is horizontally scrolled." :type 'boolean :group 'editing-basics :version "23.1") @@ -4321,7 +4323,15 @@ and forces movement by logical lines." (not executing-kbd-macro) (line-move-partial arg noerror to-end)) (set-window-vscroll nil 0 t) - (if (and line-move-visual (not goal-column)) + (if (and line-move-visual + ;; Display-based column are incompatible with goal-column. + (not goal-column) + ;; When auto-hscroll-mode is turned off and the text in + ;; the window is scrolled to the left, display-based + ;; motion doesn't make sense (because each logical line + ;; occupies exactly one screen line). + (not (and (null auto-hscroll-mode) + (> (window-hscroll) 0)))) (line-move-visual arg noerror) (line-move-1 arg noerror to-end)))) diff --git a/lisp/startup.el b/lisp/startup.el index 6c3bb397e9a..16cf41506bd 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -2307,13 +2307,13 @@ A fancy display is used on graphic displays, normal otherwise." ;; abort later. (unless (frame-live-p (selected-frame)) (kill-emacs nil)))))) - (when initial-buffer-choice - (cond ((eq initial-buffer-choice t) - (switch-to-buffer (get-buffer-create "*scratch*"))) - ((stringp initial-buffer-choice) - (find-file initial-buffer-choice)))) + (when (eq initial-buffer-choice t) + ;; When initial-buffer-choice equals t make sure that *scratch* + ;; exists. + (get-buffer-create "*scratch*")) ;; If *scratch* exists and is empty, insert initial-scratch-message. + ;; Do this before switching to *scratch* below to handle bug#9605. (and initial-scratch-message (get-buffer "*scratch*") (with-current-buffer "*scratch*" @@ -2321,6 +2321,12 @@ A fancy display is used on graphic displays, normal otherwise." (insert initial-scratch-message) (set-buffer-modified-p nil)))) + (when initial-buffer-choice + (cond ((eq initial-buffer-choice t) + (switch-to-buffer (get-buffer-create "*scratch*"))) + ((stringp initial-buffer-choice) + (find-file initial-buffer-choice)))) + (if (or inhibit-startup-screen initial-buffer-choice noninteractive diff --git a/lisp/window.el b/lisp/window.el index 512eebcc663..c6722a62c74 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -3833,7 +3833,14 @@ element is BUFFER." (list 'other ;; A quadruple of WINDOW's buffer, start, point and height. (list (window-buffer window) (window-start window) - (window-point window) (window-total-size window)) + (if (eq window (selected-window)) + ;; When WINDOW is the selected window use its + ;; buffer's `point' instead of `window-point' + ;; (Bug#9626). + (with-current-buffer (window-buffer window) + (point)) + (window-point window)) + (window-total-size window)) (selected-window) buffer)))) ((eq type 'window) ;; WINDOW has been created on an existing frame. diff --git a/msdos/ChangeLog b/msdos/ChangeLog index 46a5b69cc16..78ea6ebf1c5 100644 --- a/msdos/ChangeLog +++ b/msdos/ChangeLog @@ -1,3 +1,39 @@ +2011-09-29 Eli Zaretskii + + * mainmake.v2 (boot): Condition the value on the existence of + autogen/README, not admin/admin.el, since the latter is now part + of the release tarball. + (install): Don't copy lib-src/fns.el, as that file is no longer + generated in that directory. + + * sed1v2.inp (LIB_PTHREAD, LIB_PTHREAD_SIGMASK): Edit to empty. + (SETTINGS_CFLAGS, SETTINGS_LIBS): Edit these instead of + GCONF_CFLAGS and GCONF_LIBS. + + * sedlibmk.inp (ALLOCA_H, AR, ARFLAGS, GNULIB_CHDIR, GNULIB_DUP) + (GNULIB_FDATASYNC, GNULIB_FDOPEN, GNULIB_FSTAT, GNULIB_PCLOSE) + (GNULIB_PTHREAD_SIGMASK, GNULIB_RAISE, GNULIB_SIGACTION) + (GNULIB_SIGPROCMASK, GNULIB_SIGNAL_H_SIGPIPE, HAVE_FDATASYNC) + (HAVE_PCLOSE, HAVE_POPEN, HAVE_POSIX_SIGNALBLOCKING) + (HAVE_PTHREAD_SIGMASK, HAVE_RAISE, HAVE_SIGACTION) + (HAVE_SIGHANDLER_T, HAVE_SIGINFO_T, HAVE_SIGSET_T) + (HAVE_STRUCT_SIGACTION_SA_SIGACTION) + (HAVE_TYPE_VOLATILE_SIG_ATOMIC_T, LIB_PTHREAD) + (LIB_PTHREAD_SIGMASK, NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H) + (NEXT_SIGNAL_H, REPLACE_FDOPEN, REPLACE_PTHREAD_SIGMASK) + (REPLACE_RAISE): New edits. + (gl_LIBOBJS): Remove md5.o, filemode.o, and sha1.o. Add + pthread_sigmask.o. + (@GL_GENERATE_ALLOCA_H_TRUE@, @GL_GENERATE_ALLOCA_H_FALSE@): Edit + to comment out unneeded lines. + (warn-on-use.h): Edit the recipe commands to work with DJGPP + without requiring a Unixy shell. + + * inttypes.h (strtoimax) [DJGPP < 2.04]: New macro. + + * sed2v2.inp (HAVE_ALLOCA, HAVE_DECL_STRTOLL, HAVE_DECL_STRTOIMAX) + (HAVE_STRTOLL, HAVE_SIGSET_T, HAVE_SNPRINTF): New edits. + 2011-09-06 Paul Eggert * sedlibmk.inp (CONFIG_CLEAN_VPATH_FILES): Adjust to snippet moves diff --git a/msdos/inttypes.h b/msdos/inttypes.h index e21f1b1055c..2c9b2b2cd11 100644 --- a/msdos/inttypes.h +++ b/msdos/inttypes.h @@ -30,6 +30,7 @@ along with GNU Emacs. If not, see . */ #else /* __DJGPP__ < 2.04 */ #include #define strtoumax strtoull +#define strtoimax strtoll #endif /* __DJGPP__ < 2.04 */ #endif diff --git a/msdos/mainmake.v2 b/msdos/mainmake.v2 index 1aea06d2a4d..3b65fcc5ea4 100644 --- a/msdos/mainmake.v2 +++ b/msdos/mainmake.v2 @@ -64,12 +64,13 @@ MAKESHELL=/xyzzy/command top_srcdir := $(subst \,/,$(shell cd)) # Q: Do we need to bootstrap? -# A: Only if we find admin/admin.el, i.e. we are building out of -# a VCS-checkout (not a release) and src/b-emacs.exe does not exist. +# A: Only if we find autogen/README, i.e. we are building out of +# a VCS-checkout (not a release), and src/b-emacs.exe does not exist. # This avoids building a bootstrap-emacs and recompiling Lisp files -# when building a pretest/release tarball. +# when building a pretest/release tarball. Recompiling Lisp files +# is BAD because lisp/Makefile.in requires a Unixy shell. boot := -ifneq ($(wildcard admin/admin.el),) +ifneq ($(wildcard autogen/README),) ifeq ($(wildcard src/b-emacs.exe),) boot := b-emacs.exe endif @@ -132,7 +133,6 @@ install: all cd lib-src command.com /c >/dev/null for %p in (hexl etags ctags ebrowse) do\ if exist %p.exe mv -f %p.exe ../bin - if exist fns.el update fns.el ../bin/fns.el cd .. cd src mv -f emacs.exe ../bin/ diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp index 623f5cacbc9..d92fd1340ab 100644 --- a/msdos/sed1v2.inp +++ b/msdos/sed1v2.inp @@ -53,6 +53,7 @@ s/\.h\.in/.h-in/ /^LIB_GCC *=/s/@LIB_GCC@// /^LIB_STANDARD *=/s/@LIB_STANDARD@// /^LIB_MATH *=/s/@LIB_MATH@/-lm/ +/^LIB_PTHREAD *=/s/@LIB_PTHREAD@// /^LIBTIFF *=/s/@LIBTIFF@// /^LIBJPEG *=/s/@LIBJPEG@// /^LIBPNG *=/s/@LIBPNG@// @@ -70,8 +71,8 @@ s/\.h\.in/.h-in/ /^DBUS_CFLAGS *=/s/@DBUS_CFLAGS@// /^DBUS_LIBS *=/s/@DBUS_LIBS@// /^DBUS_OBJ *=/s/@DBUS_OBJ@// -/^GCONF_CFLAGS *=/s/@GCONF_CFLAGS@// -/^GCONF_LIBS *=/s/@GCONF_LIBS@// +/^SETTINGS_CFLAGS *=/s/@SETTINGS_CFLAGS@// +/^SETTINGS_LIBS *=/s/@SETTINGS_LIBS@// /^GTK_OBJ *=/s/@GTK_OBJ@// /^LIBS_TERMCAP *=/s/@LIBS_TERMCAP@// /^TERMCAP_OBJ *=/s/@TERMCAP_OBJ@/termcap.o tparam.o/ @@ -102,6 +103,7 @@ s/\.h\.in/.h-in/ /^GNU_OBJC_CFLAGS*=/s/@GNU_OBJC_CFLAGS@// /^LIBRESOLV *=/s/@LIBRESOLV@// /^LIBSELINUX_LIBS *=/s/@LIBSELINUX_LIBS@// +/^LIB_PTHREAD_SIGMASK *=/s/@[^@\n]*@// /^LIBGNUTLS_LIBS *=/s/@[^@\n]*@// /^LIBGNUTLS_CFLAGS *=/s/@[^@\n]*@// /^GETLOADAVG_LIBS *=/s/@[^@\n]*@// diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 3c3e69377f0..ea35a29c6b1 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -26,6 +26,7 @@ #define NSIG 320\ #endif +/^#undef HAVE_ALLOCA *$/s/^.*$/#define HAVE_ALLOCA 1/ /^#undef HAVE_SETITIMER *$/s/^.*$/#define HAVE_SETITIMER 1/ /^#undef HAVE_STRUCT_UTIMBUF *$/s/^.*$/#define HAVE_STRUCT_UTIMBUF 1/ /^#undef LOCALTIME_CACHE *$/s/^.*$/#define LOCALTIME_CACHE 1/ @@ -100,10 +101,19 @@ s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/ #else\ #undef HAVE_STDINT_H\ #endif +s/^#undef HAVE_DECL_STRTOLL *$/#define HAVE_DECL_STRTOLL 1/ s/^#undef HAVE_DECL_STRTOULL *$/#define HAVE_DECL_STRTOULL 1/ +s/^#undef HAVE_DECL_STRTOIMAX *$/#define HAVE_DECL_STRTOIMAX 1/ s/^#undef HAVE_DECL_STRTOUMAX *$/#define HAVE_DECL_STRTOUMAX 1/ +s/^#undef HAVE_STRTOLL *$/#define HAVE_STRTOLL 1/ s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/ -s/^#undef HAVE_STRTOULL *$/#define HAVE_STRTOULL 1/ +/^#undef HAVE_SIGSET_T *$/s/^.*$/#define HAVE_SIGSET_T 1/ +/^#undef HAVE_SNPRINTF/c\ +#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3\ +#define HAVE_SNPRINTF 1\ +#else\ +#undef HAVE_SNPRINTF\ +#endif # Comment out any remaining undef directives, because some of them # might be defined in sys/config.h we include at the top of config.h. diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp index a97ec7cb5f6..fdb8f8887db 100644 --- a/msdos/sedlibmk.inp +++ b/msdos/sedlibmk.inp @@ -111,6 +111,8 @@ am__cd = cd /^ALLOCA *=/s/@[^@\n]*@// /^ALSA_CFLAGS *=/s/@[^@\n]*@// /^ALSA_LIBS *=/s/@[^@\n]*@// +/^AR *=/s/@[^@\n]*@/ar/ +/^ARFLAGS *=/s/@[^@\n]*@/cru/ /^AWK *=/s/@[^@\n]*@/gawk/ /^CANNOT_DUMP *=/s/@[^@\n]*@/no/ /^CC *=/s/@[^@\n]*@/gcc/ @@ -147,9 +149,11 @@ am__cd = cd /^GNULIB_ATOLL *=/s/@GNULIB_ATOLL@/1/ /^GNULIB_CALLOC_POSIX *=/s/@GNULIB_CALLOC_POSIX@/0/ /^GNULIB_CANONICALIZE_FILE_NAME *=/s/@GNULIB_CANONICALIZE_FILE_NAME@/0/ +/^GNULIB_CHDIR *=/s/@GNULIB_CHDIR@/0/ /^GNULIB_CHOWN *=/s/@GNULIB_CHOWN@/0/ /^GNULIB_CLOSE *=/s/@GNULIB_CLOSE@/0/ /^GNULIB_DPRINTF *=/s/@GNULIB_DPRINTF@/0/ +/^GNULIB_DUP *=/s/@GNULIB_DUP@/0/ /^GNULIB_DUP2 *=/s/@GNULIB_DUP2@/0/ /^GNULIB_DUP3 *=/s/@GNULIB_DUP3@/1/ /^GNULIB_ENVIRON *=/s/@GNULIB_ENVIRON@/0/ @@ -159,6 +163,8 @@ am__cd = cd /^GNULIB_FCHOWNAT *=/s/@GNULIB_FCHOWNAT@/0/ /^GNULIB_FCHMODAT *=/s/@GNULIB_FCHMODAT@/0/ /^GNULIB_FCLOSE *=/s/@GNULIB_FCLOSE@/0/ +/^GNULIB_FDATASYNC *=/s/@GNULIB_FDATASYNC@/0/ +/^GNULIB_FDOPEN *=/s/@GNULIB_FDOPEN@/0/ /^GNULIB_FFLUSH *=/s/@GNULIB_FFLUSH@/0/ /^GNULIB_FGETC *=/s/@GNULIB_FGETC@/0/ /^GNULIB_FGETS *=/s/@GNULIB_FGETS@/0/ @@ -173,6 +179,7 @@ am__cd = cd /^GNULIB_FSCANF *=/s/@GNULIB_FSCANF@/0/ /^GNULIB_FSEEK *=/s/@GNULIB_FSEEK@/0/ /^GNULIB_FSEEKO *=/s/@GNULIB_FSEEKO@/0/ +/^GNULIB_FSTAT *=/s/@GNULIB_FSTAT@/0/ /^GNULIB_FSTATAT *=/s/@GNULIB_FSTATAT@/0/ /^GNULIB_FSYNC *=/s/@GNULIB_FSYNC@/0/ /^GNULIB_FTELL *=/s/@GNULIB_FTELL@/0/ @@ -220,6 +227,7 @@ am__cd = cd /^GNULIB_NANOSLEEP *=/s/@GNULIB_NANOSLEEP@/0/ /^GNULIB_OBSTACK_PRINTF *=/s/@GNULIB_OBSTACK_PRINTF@/0/ /^GNULIB_OBSTACK_PRINTF_POSIX *=/s/@GNULIB_OBSTACK_PRINTF_POSIX@/0/ +/^GNULIB_PCLOSE *=/s/@GNULIB_PCLOSE@/0/ /^GNULIB_PERROR *=/s/@GNULIB_PERROR@/0/ /^GNULIB_PIPE *=/s/@GNULIB_PIPE@/0/ /^GNULIB_PIPE2 *=/s/@GNULIB_PIPE2@/0/ @@ -227,12 +235,14 @@ am__cd = cd /^GNULIB_PREAD *=/s/@GNULIB_PREAD@/0/ /^GNULIB_PRINTF *=/s/@GNULIB_PRINTF@/0/ /^GNULIB_PRINTF_POSIX *=/s/@GNULIB_PRINTF_POSIX@/0/ +/^GNULIB_PTHREAD_SIGMASK *=/s/@GNULIB_PTHREAD_SIGMASK@/0/ /^GNULIB_PTSNAME *=/s/@GNULIB_PTSNAME@/0/ /^GNULIB_PUTC *=/s/@GNULIB_PUTC@/0/ /^GNULIB_PUTCHAR *=/s/@GNULIB_PUTCHAR@/0/ /^GNULIB_PUTENV *=/s/@GNULIB_PUTENV@/0/ /^GNULIB_PUTS *=/s/@GNULIB_PUTS@/0/ /^GNULIB_PWRITE *=/s/@GNULIB_PWRITE@/0/ +/^GNULIB_RAISE *=/s/@GNULIB_RAISE@/0/ /^GNULIB_RANDOM_R *=/s/@GNULIB_RANDOM_R@/0/ /^GNULIB_READ *=/s/@GNULIB_READ@/0/ /^GNULIB_READLINK *=/s/@GNULIB_READLINK@/0/ @@ -246,6 +256,9 @@ am__cd = cd /^GNULIB_RPMATCH *=/s/@GNULIB_RPMATCH@/0/ /^GNULIB_SCANF *=/s/@GNULIB_SCANF@/0/ /^GNULIB_SETENV *=/s/@GNULIB_SETENV@/0/ +/^GNULIB_SIGACTION *=/s/@GNULIB_SIGACTION@/0/ +/^GNULIB_SIGNAL_H_SIGPIPE *=/s/@GNULIB_SIGNAL_H_SIGPIPE@/0/ +/^GNULIB_SIGPROCMASK *=/s/@GNULIB_SIGPROCMASK@/0/ /^GNULIB_SLEEP *=/s/@GNULIB_SLEEP@/0/ /^GNULIB_SNPRINTF *=/s/@GNULIB_SNPRINTF@/0/ /^GNULIB_SPRINTF_POSIX *=/s/@GNULIB_SPRINTF_POSIX@/0/ @@ -285,11 +298,14 @@ am__cd = cd /^GNULIB_WCTOMB *=/s/@GNULIB_WCTOMB@/0/ /^GNULIB_WRITE *=/s/@GNULIB_WRITE@/0/ /^GNULIB__EXIT *=/s/@GNULIB__EXIT@/0/ +/^GSETTINGS_CFLAGS *=/s/@[^@\n]*@// +/^GSETTINGS_LIBS *=/s/@[^@\n]*@// /^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/ /^HAVE_CANONICALIZE_FILE_NAME *=/s/@HAVE_CANONICALIZE_FILE_NAME@/0/ /^HAVE_CHOWN *=/s/@HAVE_CHOWN@/1/ /^HAVE_DECL_ENVIRON *=/s/@HAVE_DECL_ENVIRON@/1/ /^HAVE_DECL_FCHDIR *=/s/@HAVE_DECL_FCHDIR@/0/ +/^HAVE_DECL_FDATASYNC *=/s/@HAVE_DECL_FDATASYNC@/0/ /^HAVE_DECL_FPURGE *=/s/@HAVE_DECL_FPURGE@// /^HAVE_DECL_FSEEKO *=/s/@HAVE_DECL_FSEEKO@/0/ /^HAVE_DECL_FTELLO *=/s/@HAVE_DECL_FTELLO@/0/ @@ -315,6 +331,7 @@ am__cd = cd /^HAVE_FCHDIR *=/s/@HAVE_FCHDIR@/0/ /^HAVE_FCHMODAT *=/s/@HAVE_FCHMODAT@/0/ /^HAVE_FCHOWNAT *=/s/@HAVE_FCHOWNAT@/0/ +/^HAVE_FDATASYNC *=/s/@HAVE_FDATASYNC@/0/ /^HAVE_FSEEKO *=/s/@HAVE_FSEEKO@/0/ /^HAVE_FSTATAT *=/s/@HAVE_FSTATAT@/0/ /^HAVE_FSYNC *=/s/@HAVE_FSYNC@/1/ @@ -351,11 +368,16 @@ am__cd = cd /^HAVE_NANOSLEEP *=/s/@HAVE_NANOSLEEP@/0/ /^HAVE_OS_H *=/s/@HAVE_OS_H@/0/ /^HAVE_PIPE *=/s/@HAVE_PIPE@/0/ +/^HAVE_PCLOSE *=/s/@HAVE_PCLOSE@/1/ /^HAVE_PIPE2 *=/s/@HAVE_PIPE2@/0/ +/^HAVE_POPEN *=/s/@HAVE_POPEN@/1/ +/^HAVE_POSIX_SIGNALBLOCKING *=/s/@HAVE_POSIX_SIGNALBLOCKING@/1/ /^HAVE_PREAD *=/s/@HAVE_PREAD@/0/ /^HAVE_PTSNAME *=/s/@HAVE_PTSNAME@/0/ +/^HAVE_PTHREAD_SIGMASK *=/s/@HAVE_PTHREAD_SIGMASK@/0/ /^HAVE_PWRITE *=/s/@HAVE_PWRITE@/0/ /^HAVE_RANDOM_H *=/s/@HAVE_RANDOM_H@/1/ +/^HAVE_RAISE *=/s/@HAVE_RAISE@/1/ /^HAVE_RANDOM_R *=/s/@HAVE_RANDOM_R@/0/ /^HAVE_READLINK *=/s/@HAVE_READLINK@/0/ /^HAVE_READLINKAT *=/s/@HAVE_READLINKAT@/0/ @@ -363,15 +385,20 @@ am__cd = cd /^HAVE_RENAMEAT *=/s/@HAVE_RENAMEAT@/0/ /^HAVE_RPMATCH *=/s/@HAVE_RPMATCH@/0/ /^HAVE_SETENV *=/s/@HAVE_SETENV@/1/ +/^HAVE_SIGACTION *=/s/@HAVE_SIGACTION@/1/ +/^HAVE_SIGHANDLER_T *=/s/@HAVE_SIGHANDLER_T@/0/ +/^HAVE_SIGINFO_T *=/s/@HAVE_SIGINFO_T@/0/ /^HAVE_SIGNED_SIG_ATOMIC_T *=/s/@HAVE_SIGNED_SIG_ATOMIC_T@/1/ /^HAVE_SIGNED_WCHAR_T *=/s/@HAVE_SIGNED_WCHAR_T@/0/ /^HAVE_SIGNED_WINT_T *=/s/@HAVE_SIGNED_WINT_T@/1/ +/^HAVE_SIGSET_T *=/s/@HAVE_SIGSET_T@/1/ /^HAVE_SLEEP *=/s/@HAVE_SLEEP@/1/ /^HAVE_STDINT_H *=/s/@HAVE_STDINT_H@/HAVE_STDINT_H/ /^HAVE_STRPTIME *=/s/@HAVE_STRPTIME@/0/ /^HAVE_STRTOD *=/s/@HAVE_STRTOD@/1/ /^HAVE_STRTOLL *=/s/@HAVE_STRTOLL@/1/ /^HAVE_STRTOULL *=/s/@HAVE_STRTOULL@/1/ +/^HAVE_STRUCT_SIGACTION_SA_SIGACTION *=/s/@HAVE_STRUCT_SIGACTION_SA_SIGACTION@/0/ /^HAVE_STRUCT_RANDOM_DATA *=/s/@HAVE_STRUCT_RANDOM_DATA@/0/ /^HAVE_SYMLINK *=/s/@HAVE_SYMLINK@/1/ /^HAVE_SYMLINKAT *=/s/@HAVE_SYMLINKAT@/0/ @@ -381,6 +408,7 @@ am__cd = cd /^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/ /^HAVE_SYS_TYPES_H *=/s/@HAVE_SYS_TYPES_H@/1/ /^HAVE_TIMEGM *=/s/@HAVE_TIMEGM@/0/ +/^HAVE_TYPE_VOLATILE_SIG_ATOMIC_T *=/s/@HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@/1/ /^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/ /^HAVE_UNLINKAT *=/s/@HAVE_UNLINKAT@/0/ /^HAVE_UNLOCKPT *=/s/@HAVE_UNLOCKPT@/0/ @@ -398,11 +426,14 @@ am__cd = cd /^INCLUDE_NEXT_AS_FIRST_DIRECTIVE *=/s/@[^@\n]*@/include_next/ /^LDFLAGS *=/s/@[^@\n]*@// /^LD_FIRSTFLAG *=/s/@[^@\n]*@// +/^LIB_PTHREAD *=/s/@[^@\n]*@// +/^LIB_PTHREAD_SIGMASK *=/s/@[^@\n]*@// /^LIBS *=/s/@[^@\n]*@// /^MAKEINFO *=/s/@MAKEINFO@/makeinfo/ # MKDIR_P lines are edited further below /^MKDIR_P *=/s/@MKDIR_P@// /^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@// +/^NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDARG_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@[^@\n]*@// /^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@// @@ -413,6 +444,7 @@ am__cd = cd /^NEXT_AS_FIRST_DIRECTIVE_UNISTD_H *=/s/@[^@\n]*@// /^NEXT_GETOPT_H *=/s/@[^@\n]*@// /^NEXT_STDARG_H *=/s/@[^@\n]*@// +/^NEXT_SIGNAL_H *=/s/@[^@\n]*@// /^NEXT_STDDEF_H *=/s/@[^@\n]*@// /^NEXT_STDIO_H *=/s/@[^@\n]*@// /^NEXT_STDINT_H *=/s/@[^@\n]*@// @@ -435,6 +467,7 @@ am__cd = cd /^REPLACE_DUP2 *=/s/@REPLACE_DUP2@/0/ /^REPLACE_FCHOWNAT *=/s/@REPLACE_FCHOWNAT@/0/ /^REPLACE_FCLOSE *=/s/@REPLACE_FCLOSE@/0/ +/^REPLACE_FDOPEN *=/s/@REPLACE_FDOPEN@/0/ /^REPLACE_FFLUSH *=/s/@REPLACE_FFLUSH@/0/ /^REPLACE_FOPEN *=/s/@REPLACE_FOPEN@/0/ /^REPLACE_FPRINTF *=/s/@REPLACE_FPRINTF@/0/ @@ -473,9 +506,11 @@ am__cd = cd /^REPLACE_POPEN *=/s/@REPLACE_POPEN@/0/ /^REPLACE_PREAD *=/s/@REPLACE_PREAD@/0/ /^REPLACE_PRINTF *=/s/@REPLACE_PRINTF@/0/ +/^REPLACE_PTHREAD_SIGMASK *=/s/@REPLACE_PTHREAD_SIGMASK@/0/ /^REPLACE_PUTENV *=/s/@REPLACE_PUTENV@/0/ /^REPLACE_PWRITE *=/s/@REPLACE_PWRITE@/0/ /^REPLACE_READ *=/s/@REPLACE_READ@/0/ +/^REPLACE_RAISE *=/s/@REPLACE_RAISE@/0/ /^REPLACE_READLINK *=/s/@REPLACE_READLINK@/0/ /^REPLACE_REALLOC *=/s/@REPLACE_REALLOC@/0/ /^REPLACE_REALPATH *=/s/@REPLACE_REALPATH@/0/ @@ -510,6 +545,7 @@ am__cd = cd /^REPLACE_WRITE *=/s/@REPLACE_WRITE@/0/ /^SIG_ATOMIC_T_SUFFIX *=/s/@SIG_ATOMIC_T_SUFFIX@// /^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/ +/^ALLOCA_H *=/s/@[^@\n]*@/alloca.h/ /^STDBOOL_H *=/s/@[^@\n]*@// /^STDARG_H *=/s/@[^@\n]*@// /^STDDEF_H *=/s/@[^@\n]*@// @@ -522,7 +558,7 @@ am__cd = cd /^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@// /am__append_1 *=.*gettext\.h/s/@[^@\n]*@/\#/ /am__append_2 *=.*verify\.h/s/@[^@\n]*@// -/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o md5.o filemode.o sha1.o/ +/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o pthread_sigmask.o/ /^BUILT_SOURCES *=/s/ *inttypes\.h// /^am_libgnu_a_OBJECTS *=/s/careadlinkat\.\$(OBJEXT)// /^am_libgnu_a_OBJECTS *=/s/allocator\.\$(OBJEXT)// @@ -560,6 +596,8 @@ s/^ -*test -z.*|| rm/ -rm/ s/@echo /@djecho/ # # Fix the recipes for header files +s/^@GL_GENERATE_ALLOCA_H_TRUE@// +s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/ s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/ s/^@GL_GENERATE_STDBOOL_H_FALSE@// s/^@GL_GENERATE_STDARG_H_TRUE@/\#/ @@ -574,6 +612,9 @@ arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h\ /^cxxdefs\.h:/,/^[ ][ ]*mv /c\ cxxdefs.h: $(top_srcdir)/build-aux/snippet/cxxdefs.h\ sed -n -e '/_GL_CXXDEFS/,$$p' < $(top_srcdir)/build-aux/snippet/cxxdefs.h > $@ +/^warn-on-use\.h:/,/^[ ][ ]*mv /c\ +warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h\ + sed -n -e '/^.ifndef/,$$p' < $(top_srcdir)/build-aux/snippet/warn-on-use.h > $@ s/^ [ ]*{ echo \(.*\); \\/ djecho \1 > $@-t/ s/^ [ ]*{ echo \(.*\) && \\/ djecho \1 > $@-t/ s/ \&\& \\ *$// diff --git a/src/ChangeLog b/src/ChangeLog index 37f2e39848f..2cb49cace00 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,14 +1,4 @@ -2011-09-29 Paul Eggert - - * alloc.c: Do not assume sizeof (size_t) is a multiple of 8 - when debugging. - (alignof, XMALLOC_BASE_ALIGNMENT, XMALLOC_HEADER_ALIGNMENT) - (XMALLOC_OVERRUN_SIZE_SIZE): New macros. - (XMALLOC_OVERRUN_CHECK_OVERHEAD, xmalloc_put_size, xmalloc_get_size) - (overrun_check_malloc, overrun_check_realloc, overrun_check_free): - Replace uses of sizeof (size_t) with XMALLOC_OVERRUN_SIZE_SIZE. - -2011-09-28 Paul Eggert +2011-09-30 Paul Eggert * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp): (allocate_vectorlike, buffer_memory_full, struct sdata, SDATA_SIZE) @@ -785,6 +775,57 @@ rather than rolling our own approximation. (SCROLL_BAR_VEC_SIZE): Remove; not used. +2011-09-30 Paul Eggert + + Remove dependency on glibc malloc internals. + * alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): + Move back here from lisp.h, but with their new implementations. + (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) + (XMALLOC_OVERRUN_SIZE_SIZE): Move these new lisp.h macros here. + * charset.c (charset_table_init): New static var. + (syms_of_charset): Use it instead of xmalloc. This removes a + dependency on glibc malloc internals. See Eli Zaretskii's comment in + . + * lisp.h (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): + Move back to alloc.c. + (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) + (XMALLOC_OVERRUN_SIZE_SIZE): Move to alloc.c. + +2011-09-30 Jan Djärv + + * nsterm.m (windowDidResize): Call x_set_window_size only when + ns_in_resize is true. Otherwise set pixelwidth/height and + call change_frame_size (Bug#9628). + +2011-09-30 Paul Eggert + + Port --enable-checking=all to Fedora 14 x86-64. + * charset.c (syms_of_charset): Also account for glibc malloc's + internal overhead when calculating the initial malloc maximum. + + Port --enable-checking=all to Fedora 14 x86. + * alloc.c (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): + Move to lisp.h. + (xmalloc_put_size, xmalloc_get_size, overrun_check_malloc) + (overrun_check_realloc, overrun_check_free): + Use XMALLOC_OVERRUN_SIZE_SIZE, not sizeof (size_t). + That way, xmalloc returns a properly-aligned pointer even if + XMALLOC_OVERRUN_CHECK is defined. The old debugging code happened + to align OK on typical 64-bit hosts, but not on Fedora 14 x86. + * charset.c (syms_of_charset): Take XMALLOC_OVERRUN_CHECK_OVERHEAD + into account when calculating the initial malloc maximum. + * lisp.h (XMALLOC_OVERRUN_CHECK_OVERHEAD, XMALLOC_OVERRUN_CHECK_SIZE): + Move here from alloc.c, so that charset.c can use it too. + Properly align; the old code wasn't right for common 32-bit hosts + when configured with --enable-checking=all. + (XMALLOC_BASE_ALIGNMENT, COMMON_MULTIPLE, XMALLOC_HEADER_ALIGNMENT) + (XMALLOC_OVERRUN_SIZE_SIZE): New macros. + +2011-09-29 Eli Zaretskii + + * sysdep.c (snprintf) [!EOVERFLOW]: If EOVERFLOW is not defined, + use EDOM. + 2011-09-28 Eli Zaretskii * xdisp.c (compute_display_string_end): If there's no display @@ -803,8 +844,8 @@ * xdisp.c (handle_invisible_prop): If invisible text ends on a newline, reseat the iterator instead of bidi-iterating there one character at a time. (Bug#9610) - (BUFFER_POS_REACHED_P, move_it_in_display_line_to): Bail when past - TO_CHARPOS if the bidi iterator is at base embedding level. + (BUFFER_POS_REACHED_P, move_it_in_display_line_to): Bail out when + past TO_CHARPOS if the bidi iterator is at base embedding level. 2011-09-27 Andreas Schwab @@ -841,9 +882,9 @@ value is now t. Doc fix. * indent.c (Fvertical_motion): Compute and apply the overshoot - logic when moving up, not only when moving down. Fix the + logic also when moving up, not only when moving down. Fix the confusing name and values of the it_overshoot_expected variable; - logic changes accordingly. (Bug#9254) (Bug#9549) + logic changed accordingly. (Bug#9254) (Bug#9549) * xdisp.c (pos_visible_p): Produce correct pixel coordinates when CHARPOS is covered by a display string which includes newlines. @@ -859,7 +900,7 @@ 2011-09-24 Jim Meyering - do not ignore write error for any output size + Do not ignore write error for any output size. The previous change was incomplete. While it makes emacs --batch detect the vast majority of stdout write failures, errors were still ignored whenever the output size is diff --git a/src/alloc.c b/src/alloc.c index 286421ebe47..bfb40e6c09a 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -490,36 +490,45 @@ buffer_memory_full (ptrdiff_t nbytes) /* Check for overrun in malloc'ed buffers by wrapping a header and trailer around each block. - The header consists of 16 fixed bytes followed by - XMALLOC_OVERRUN_SIZE_SIZE bytes containing the original block size - in little-endian order. The trailer consists of 16 fixed bytes. + The header consists of XMALLOC_OVERRUN_CHECK_SIZE fixed bytes + followed by XMALLOC_OVERRUN_SIZE_SIZE bytes containing the original + block size in little-endian order. The trailer consists of + XMALLOC_OVERRUN_CHECK_SIZE fixed bytes. The header is used to detect whether this block has been allocated - through these functions -- as it seems that some low-level libc - functions may bypass the malloc hooks. -*/ - + through these functions, as some low-level libc functions may + bypass the malloc hooks. */ #define XMALLOC_OVERRUN_CHECK_SIZE 16 #define XMALLOC_OVERRUN_CHECK_OVERHEAD \ (2 * XMALLOC_OVERRUN_CHECK_SIZE + XMALLOC_OVERRUN_SIZE_SIZE) /* Define XMALLOC_OVERRUN_SIZE_SIZE so that (1) it's large enough to - hold a size_t value and (2) so that the header size is a multiple - of the alignment that Emacs needs. */ -#define alignof(type) offsetof (struct { char c; type x; }, x) -#define XMALLOC_BASE_ALIGNMENT \ - max (max (alignof (double), alignof (long double)), alignof (intmax_t)) + hold a size_t value and (2) the header size is a multiple of the + alignment that Emacs needs for C types and for USE_LSB_TAG. */ +#define XMALLOC_BASE_ALIGNMENT \ + offsetof ( \ + struct { \ + union { long double d; intmax_t i; void *p; } u; \ + char c; \ + }, \ + c) #ifdef USE_LSB_TAG -# define XMALLOC_HEADER_ALIGNMENT max (1 << GCTYPEBITS, XMALLOC_BASE_ALIGNMENT) +/* A common multiple of the positive integers A and B. Ideally this + would be the least common multiple, but there's no way to do that + as a constant expression in C, so do the best that we can easily do. */ +# define COMMON_MULTIPLE(a, b) \ + ((a) % (b) == 0 ? (a) : (b) % (a) == 0 ? (b) : (a) * (b)) +# define XMALLOC_HEADER_ALIGNMENT \ + COMMON_MULTIPLE (1 << GCTYPEBITS, XMALLOC_BASE_ALIGNMENT) #else # define XMALLOC_HEADER_ALIGNMENT XMALLOC_BASE_ALIGNMENT #endif #define XMALLOC_OVERRUN_SIZE_SIZE \ - (((XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t) \ - + XMALLOC_HEADER_ALIGNMENT - 1) \ - / XMALLOC_HEADER_ALIGNMENT * XMALLOC_HEADER_ALIGNMENT) \ - - XMALLOC_OVERRUN_CHECK_SIZE) + (((XMALLOC_OVERRUN_CHECK_SIZE + sizeof (size_t) \ + + XMALLOC_HEADER_ALIGNMENT - 1) \ + / XMALLOC_HEADER_ALIGNMENT * XMALLOC_HEADER_ALIGNMENT) \ + - XMALLOC_OVERRUN_CHECK_SIZE) static char const xmalloc_overrun_check_header[XMALLOC_OVERRUN_CHECK_SIZE] = { '\x9a', '\x9b', '\xae', '\xaf', diff --git a/src/charset.c b/src/charset.c index 2451c55e92a..299655b2cf8 100644 --- a/src/charset.c +++ b/src/charset.c @@ -1154,10 +1154,10 @@ usage: (define-charset-internal ...) */) sizeof *charset_table); memcpy (new_table, charset_table, old_size * sizeof *new_table); charset_table = new_table; - /* FIXME: Doesn't this leak memory? The old charset_table becomes - unreachable. It could be that this is intentional, because the - old charset table may be in a dumped emacs, and reallocating such - a table may not work. If the memory leak is intentional, a + /* FIXME: This leaks memory, as the old charset_table becomes + unreachable. If the old charset table is charset_table_init + then this leak is intentional; otherwise, it's unclear. + If the latter memory leak is intentional, a comment should be added to explain this. If not, the old charset_table should be freed, by passing it as the 1st argument to xpalloc and removing the memcpy. */ @@ -2318,20 +2318,21 @@ init_charset_once (void) #ifdef emacs +/* Allocate an initial charset table that is large enough to handle + Emacs while it is bootstrapping. As of September 2011, the size + needs to be at least 166; make it a bit bigger to allow for future + expansion. + + Don't make the value so small that the table is reallocated during + bootstrapping, as glibc malloc calls larger than just under 64 KiB + during an initial bootstrap wreak havoc after dumping; see the + M_MMAP_THRESHOLD value in alloc.c, plus there is a extra overhead + internal to glibc malloc and perhaps to Emacs malloc debugging. */ +static struct charset charset_table_init[180]; + void syms_of_charset (void) { - /* Allocate an initial charset table that is just under 64 KiB in size. - This should be large enough so that the charset table need not be - reallocated during an initial bootstrap. Allocating anything larger than - 64 KiB in an initial run may not work, because glibc malloc might use - mmap for larger allocations, and these don't work well across dumped - systems. */ - enum { - initial_malloc_max = (1 << 16) - 1, - charset_table_size_init = initial_malloc_max / sizeof (struct charset) - }; - DEFSYM (Qcharsetp, "charsetp"); DEFSYM (Qascii, "ascii"); @@ -2364,9 +2365,8 @@ syms_of_charset (void) Vcharset_hash_table = Fmake_hash_table (2, args); } - charset_table = (struct charset *) xmalloc (sizeof (struct charset) - * charset_table_size_init); - charset_table_size = charset_table_size_init; + charset_table = charset_table_init; + charset_table_size = sizeof charset_table_init / sizeof *charset_table_init; charset_table_used = 0; defsubr (&Scharsetp); diff --git a/src/nsterm.m b/src/nsterm.m index 827404a2974..a2ae5e69512 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -5357,7 +5357,23 @@ ns_term_shutdown (int sig) a "windowDidResize" which calls x_set_window_size). */ #ifndef NS_IMPL_GNUSTEP if (cols > 0 && rows > 0) - x_set_window_size (emacsframe, 0, cols, rows); + { + if (ns_in_resize) + x_set_window_size (emacsframe, 0, cols, rows); + else + { + NSWindow *window = [self window]; + NSRect wr = [window frame]; + FRAME_PIXEL_WIDTH (emacsframe) = (int)wr.size.width + - emacsframe->border_width; + FRAME_PIXEL_HEIGHT (emacsframe) = (int)wr.size.height + - FRAME_NS_TITLEBAR_HEIGHT (emacsframe) + - FRAME_TOOLBAR_HEIGHT (emacsframe); + change_frame_size (emacsframe, rows, cols, 0, 0, 1); + SET_FRAME_GARBAGED (emacsframe); + cancel_mouse_face (emacsframe); + } + } #endif ns_send_appdefined (-1); diff --git a/src/sysdep.c b/src/sysdep.c index ba296a2d094..d2ce5a8cc1b 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -1844,7 +1844,11 @@ snprintf (char *buf, size_t bufsize, char const *format, ...) if (INT_MAX < nbytes) { +#ifdef EOVERFLOW errno = EOVERFLOW; +#else + errno = EDOM; +#endif return -1; } return nbytes;