aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoakim Verona2012-04-26 11:52:04 +0200
committerJoakim Verona2012-04-26 11:52:04 +0200
commitab5b626f97ea7d71a98a06d8cc777fa925a1f716 (patch)
tree7961d0e6b583290e1480771cd0fabd00f4ea7f86 /src
parent2ec5843f029c7d55234dbe51d993003b2b3939ec (diff)
parentab036cd7bdd7b087047d241ffb5607d14942179e (diff)
downloademacs-ab5b626f97ea7d71a98a06d8cc777fa925a1f716.tar.gz
emacs-ab5b626f97ea7d71a98a06d8cc777fa925a1f716.zip
upstream partial out of memory
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog62
-rw-r--r--src/Makefile.in10
-rw-r--r--src/alloc.c14
-rw-r--r--src/indent.c3
-rw-r--r--src/keyboard.c21
-rw-r--r--src/lread.c5
-rw-r--r--src/nsterm.m8
-rw-r--r--src/s/cygwin.h7
-rw-r--r--src/w32.c10
-rw-r--r--src/window.c2
-rw-r--r--src/xdisp.c10
11 files changed, 115 insertions, 37 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 18a3d4545e3..6d2ed01bafc 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,55 @@
12012-04-14 Atsuo Ohki <ohki@gssm.otsuka.tsukuba.ac.jp> (tiny change)
2
3 * lread.c (lisp_file_lexically_bound_p):
4 Fix hang at ";-*-\n" (bug#11238).
5
62012-04-14 Eli Zaretskii <eliz@gnu.org>
7
8 * xdisp.c (find_last_unchanged_at_beg_row): Don't consider a row
9 "unchanged" if its end.pos is beyond ZV. (Bug#11199)
10
112012-04-14 Jan Djärv <jan.h.d@swipnet.se>
12
13 * nsterm.m (constrainFrameRect): Always constrain when there is only
14 one screen (Bug#10962).
15
162012-04-13 Ken Brown <kbrown@cornell.edu>
17
18 * s/cygwin.h (PTY_OPEN): Don't try to close a bogus file descriptor.
19
202012-04-13 Reuben Thomas <rrt@sc3d.org>
21
22 * indent.c (Fmove_to_column): Change interactive spec (Bug#739).
23
242012-04-11 Daniel Colascione <dancol@dancol.org>
25
26 * s/cygwin.h: The vfork the #define in cygwin.h was protecting
27 against is gone. It's better to use vfork now so that when Cygwin
28 gains a new, working vfork, we use it automatically (bug#10398).
29
302012-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
31
32 * window.c (save_window_save): Obey window-point-insertion-type.
33
342012-04-11 Glenn Morris <rgm@gnu.org>
35
36 * Makefile.in (GNUSTEP_CFLAGS): Rename from C_SWITCH_X_SYSTEM.
37
382012-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
39
40 * alloc.c (lisp_align_malloc): Remove unneeded prototype.
41
422012-04-10 "Jason S. Cornez" <jcornez@ravenpack.com> (tiny change)
43
44 * keyboard.c: Override inhibit-quit after the third C-g (bug#6585).
45 (force_quit_count): New var.
46 (handle_interrupt): Use it.
47
482012-04-10 Juanma Barranquero <lekktu@gmail.com>
49
50 * w32.c (w32_delayed_load): Record the full path of the library
51 being loaded (bug#10424).
52
12012-04-09 Glenn Morris <rgm@gnu.org> 532012-04-09 Glenn Morris <rgm@gnu.org>
2 54
3 * doc.c (Fsnarf_documentation): Check variables, functions are bound, 55 * doc.c (Fsnarf_documentation): Check variables, functions are bound,
@@ -12,8 +64,8 @@
12 * process.h: Add integer `gnutls_handshakes_tried' member to 64 * process.h: Add integer `gnutls_handshakes_tried' member to
13 process struct. 65 process struct.
14 66
15 * gnutls.h: Add `GNUTLS_EMACS_HANDSHAKES_LIMIT' upper limit. Add 67 * gnutls.h: Add `GNUTLS_EMACS_HANDSHAKES_LIMIT' upper limit.
16 convenience `GNUTLS_LOG2i' macro. 68 Add convenience `GNUTLS_LOG2i' macro.
17 69
18 * gnutls.c (gnutls_log_function2i): Convenience log function. 70 * gnutls.c (gnutls_log_function2i): Convenience log function.
19 (emacs_gnutls_read): Use new log functions, 71 (emacs_gnutls_read): Use new log functions,
@@ -99,8 +151,8 @@
99 (xml_cleanup_parser): New function, export for fn_xmlCleanupParser. 151 (xml_cleanup_parser): New function, export for fn_xmlCleanupParser.
100 Calls xmlCleanupParser only if libxml2 was loaded (or statically 152 Calls xmlCleanupParser only if libxml2 was loaded (or statically
101 linked in). 153 linked in).
102 (Flibxml_parse_html_region, Flibxml_parse_xml_region): Call 154 (Flibxml_parse_html_region, Flibxml_parse_xml_region):
103 init_libxml2_functions before calling libxml2 functions. 155 Call init_libxml2_functions before calling libxml2 functions.
104 (syms_of_xml) <Qlibxml2_dll>: DEFSYM it. 156 (syms_of_xml) <Qlibxml2_dll>: DEFSYM it.
105 157
106 * emacs.c: Don't include libxml/parser.h. 158 * emacs.c: Don't include libxml/parser.h.
@@ -9723,7 +9775,7 @@ See ChangeLog.11 for earlier changes.
9723;; coding: utf-8 9775;; coding: utf-8
9724;; End: 9776;; End:
9725 9777
9726 Copyright (C) 2011-2012 Free Software Foundation, Inc. 9778 Copyright (C) 2011-2012 Free Software Foundation, Inc.
9727 9779
9728 This file is part of GNU Emacs. 9780 This file is part of GNU Emacs.
9729 9781
diff --git a/src/Makefile.in b/src/Makefile.in
index 466a091cde9..e8b68040c44 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -75,16 +75,13 @@ C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
75## System-specific CFLAGS. 75## System-specific CFLAGS.
76C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@ 76C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@
77 77
78## Currently only set if NS_IMPL_GNUSTEP. 78GNUSTEP_CFLAGS=@GNUSTEP_CFLAGS@
79## C_SWITCH_X_SITE may override this.
80C_SWITCH_X_SYSTEM=@C_SWITCH_X_SYSTEM@
81 79
82## Define C_SWITCH_X_SITE to contain any special flags your compiler 80## Define C_SWITCH_X_SITE to contain any special flags your compiler
83## may need to deal with X Windows. For instance, if you've defined 81## may need to deal with X Windows. For instance, if you've defined
84## HAVE_X_WINDOWS and your X include files aren't in a place that your 82## HAVE_X_WINDOWS and your X include files aren't in a place that your
85## compiler can find on its own, you might want to add "-I/..." or 83## compiler can find on its own, you might want to add "-I/..." or
86## something similar. This is normally set by configure. 84## something similar. This is normally set by configure.
87## This is used before C_SWITCH_X_SYSTEM and may override it.
88C_SWITCH_X_SITE=@C_SWITCH_X_SITE@ 85C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
89 86
90## Define LD_SWITCH_X_SITE to contain any special flags your loader 87## Define LD_SWITCH_X_SITE to contain any special flags your loader
@@ -308,14 +305,11 @@ MKDEPDIR=@MKDEPDIR@
308## -DHAVE_CONFIG_H is needed for some other files to take advantage of 305## -DHAVE_CONFIG_H is needed for some other files to take advantage of
309## the information in `config.h'. 306## the information in `config.h'.
310## 307##
311## C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM
312## since it may have -I options that should override those.
313##
314## FIXME? MYCPPFLAGS only referenced in etc/DEBUG. 308## FIXME? MYCPPFLAGS only referenced in etc/DEBUG.
315ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I$(srcdir) \ 309ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I$(srcdir) \
316 -I$(lib) -I$(srcdir)/../lib \ 310 -I$(lib) -I$(srcdir)/../lib \
317 $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \ 311 $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \
318 $(C_SWITCH_X_SYSTEM) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \ 312 $(GNUSTEP_CFLAGS) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \
319 $(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \ 313 $(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \
320 $(WEBKIT_CFLAGS) $(CLUTTER_CFLAGS) \ 314 $(WEBKIT_CFLAGS) $(CLUTTER_CFLAGS) \
321 $(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \ 315 $(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \
diff --git a/src/alloc.c b/src/alloc.c
index 16b004fc0e9..314438ba9f1 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -296,7 +296,6 @@ enum mem_type
296 MEM_TYPE_VECTORLIKE 296 MEM_TYPE_VECTORLIKE
297}; 297};
298 298
299static POINTER_TYPE *lisp_align_malloc (size_t, enum mem_type);
300static POINTER_TYPE *lisp_malloc (size_t, enum mem_type); 299static POINTER_TYPE *lisp_malloc (size_t, enum mem_type);
301 300
302 301
@@ -938,9 +937,10 @@ lisp_free (POINTER_TYPE *block)
938 MALLOC_UNBLOCK_INPUT; 937 MALLOC_UNBLOCK_INPUT;
939} 938}
940 939
941/* Allocation of aligned blocks of memory to store Lisp data. */ 940/***** Allocation of aligned blocks of memory to store Lisp data. *****/
942/* The entry point is lisp_align_malloc which returns blocks of at most */ 941
943/* BLOCK_BYTES and guarantees they are aligned on a BLOCK_ALIGN boundary. */ 942/* The entry point is lisp_align_malloc which returns blocks of at most
943 BLOCK_BYTES and guarantees they are aligned on a BLOCK_ALIGN boundary. */
944 944
945/* Use posix_memalloc if the system has it and we're using the system's 945/* Use posix_memalloc if the system has it and we're using the system's
946 malloc (because our gmalloc.c routines don't have posix_memalign although 946 malloc (because our gmalloc.c routines don't have posix_memalign although
@@ -1099,7 +1099,7 @@ lisp_align_malloc (size_t nbytes, enum mem_type type)
1099#endif 1099#endif
1100 1100
1101 /* Initialize the blocks and put them on the free list. 1101 /* Initialize the blocks and put them on the free list.
1102 Is `base' was not properly aligned, we can't use the last block. */ 1102 If `base' was not properly aligned, we can't use the last block. */
1103 for (i = 0; i < (aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1); i++) 1103 for (i = 0; i < (aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1); i++)
1104 { 1104 {
1105 abase->blocks[i].abase = abase; 1105 abase->blocks[i].abase = abase;
@@ -1146,8 +1146,8 @@ lisp_align_free (POINTER_TYPE *block)
1146 ablock->x.next_free = free_ablock; 1146 ablock->x.next_free = free_ablock;
1147 free_ablock = ablock; 1147 free_ablock = ablock;
1148 /* Update busy count. */ 1148 /* Update busy count. */
1149 ABLOCKS_BUSY (abase) = 1149 ABLOCKS_BUSY (abase)
1150 (struct ablocks *) (-2 + (intptr_t) ABLOCKS_BUSY (abase)); 1150 = (struct ablocks *) (-2 + (intptr_t) ABLOCKS_BUSY (abase));
1151 1151
1152 if (2 > (intptr_t) ABLOCKS_BUSY (abase)) 1152 if (2 > (intptr_t) ABLOCKS_BUSY (abase))
1153 { /* All the blocks are free. */ 1153 { /* All the blocks are free. */
diff --git a/src/indent.c b/src/indent.c
index 1531d2ffde8..280607f7ecb 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -956,7 +956,8 @@ indented_beyond_p (EMACS_INT pos, EMACS_INT pos_byte, EMACS_INT column)
956 return val >= column; 956 return val >= column;
957} 957}
958 958
959DEFUN ("move-to-column", Fmove_to_column, Smove_to_column, 1, 2, "p", 959DEFUN ("move-to-column", Fmove_to_column, Smove_to_column, 1, 2,
960 "NMove to column: ",
960 doc: /* Move point to column COLUMN in the current line. 961 doc: /* Move point to column COLUMN in the current line.
961Interactively, COLUMN is the value of prefix numeric argument. 962Interactively, COLUMN is the value of prefix numeric argument.
962The column of a character is calculated by adding together the widths 963The column of a character is calculated by adding together the widths
diff --git a/src/keyboard.c b/src/keyboard.c
index 66d76563518..133b28234a8 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -10229,7 +10229,7 @@ DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,
10229 10229
10230 memset (keybuf, 0, sizeof keybuf); 10230 memset (keybuf, 0, sizeof keybuf);
10231 GCPRO1 (keybuf[0]); 10231 GCPRO1 (keybuf[0]);
10232 gcpro1.nvars = (sizeof keybuf/sizeof (keybuf[0])); 10232 gcpro1.nvars = (sizeof keybuf / sizeof (keybuf[0]));
10233 10233
10234 if (NILP (continue_echo)) 10234 if (NILP (continue_echo))
10235 { 10235 {
@@ -10243,7 +10243,7 @@ DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,
10243 cancel_hourglass (); 10243 cancel_hourglass ();
10244#endif 10244#endif
10245 10245
10246 i = read_key_sequence (keybuf, (sizeof keybuf/sizeof (keybuf[0])), 10246 i = read_key_sequence (keybuf, (sizeof keybuf / sizeof (keybuf[0])),
10247 prompt, ! NILP (dont_downcase_last), 10247 prompt, ! NILP (dont_downcase_last),
10248 ! NILP (can_return_switch_frame), 0); 10248 ! NILP (can_return_switch_frame), 0);
10249 10249
@@ -10934,6 +10934,11 @@ interrupt_signal (int signalnum) /* If we don't have an argument, some */
10934 errno = old_errno; 10934 errno = old_errno;
10935} 10935}
10936 10936
10937/* If Emacs is stuck because `inhibit-quit' is true, then keep track
10938 of the number of times C-g has been requested. If C-g is pressed
10939 enough times, then quit anyway. See bug#6585. */
10940static int force_quit_count;
10941
10937/* This routine is called at interrupt level in response to C-g. 10942/* This routine is called at interrupt level in response to C-g.
10938 10943
10939 It is called from the SIGINT handler or kbd_buffer_store_event. 10944 It is called from the SIGINT handler or kbd_buffer_store_event.
@@ -11052,8 +11057,16 @@ handle_interrupt (void)
11052 UNGCPRO; 11057 UNGCPRO;
11053 } 11058 }
11054 else 11059 else
11055 /* Else request quit when it's safe */ 11060 { /* Else request quit when it's safe. */
11056 Vquit_flag = Qt; 11061 if (NILP (Vquit_flag))
11062 force_quit_count = 0;
11063 if (++force_quit_count == 3)
11064 {
11065 immediate_quit = 1;
11066 Vinhibit_quit = Qnil;
11067 }
11068 Vquit_flag = Qt;
11069 }
11057 } 11070 }
11058 11071
11059/* TODO: The longjmp in this call throws the NS event loop integration off, 11072/* TODO: The longjmp in this call throws the NS event loop integration off,
diff --git a/src/lread.c b/src/lread.c
index bfb37b4fc89..50465fd01e8 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -839,7 +839,7 @@ lisp_file_lexically_bound_p (Lisp_Object readcharfun)
839 } 839 }
840 840
841 /* Stop scanning if no colon was found before end marker. */ 841 /* Stop scanning if no colon was found before end marker. */
842 if (!in_file_vars) 842 if (!in_file_vars || ch == '\n' || ch == EOF)
843 break; 843 break;
844 844
845 while (i > 0 && (var[i - 1] == ' ' || var[i - 1] == '\t')) 845 while (i > 0 && (var[i - 1] == ' ' || var[i - 1] == '\t'))
@@ -863,8 +863,7 @@ lisp_file_lexically_bound_p (Lisp_Object readcharfun)
863 ch = READCHAR; 863 ch = READCHAR;
864 } 864 }
865 if (! in_file_vars) 865 if (! in_file_vars)
866 /* The value was terminated by an end-marker, which 866 /* The value was terminated by an end-marker, which remove. */
867 remove. */
868 i -= 3; 867 i -= 3;
869 while (i > 0 && (val[i - 1] == ' ' || val[i - 1] == '\t')) 868 while (i > 0 && (val[i - 1] == ' ' || val[i - 1] == '\t'))
870 i--; 869 i--;
diff --git a/src/nsterm.m b/src/nsterm.m
index a45792fd645..7cbaf991311 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -6038,11 +6038,15 @@ ns_term_shutdown (int sig)
6038 restrict the height to just one monitor. So we override this. */ 6038 restrict the height to just one monitor. So we override this. */
6039- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen 6039- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen
6040{ 6040{
6041 /* When making the frame visible for the first time, we want to 6041 /* When making the frame visible for the first time or if there is just
6042 constrain. Other times not. */ 6042 one screen, we want to constrain. Other times not. */
6043 NSUInteger nr_screens = [[NSScreen screens] count];
6043 struct frame *f = ((EmacsView *)[self delegate])->emacsframe; 6044 struct frame *f = ((EmacsView *)[self delegate])->emacsframe;
6044 NSTRACE (constrainFrameRect); 6045 NSTRACE (constrainFrameRect);
6045 6046
6047 if (nr_screens == 1)
6048 return [super constrainFrameRect:frameRect toScreen:screen];
6049
6046 if (f->output_data.ns->dont_constrain 6050 if (f->output_data.ns->dont_constrain
6047 || ns_menu_bar_should_be_hidden ()) 6051 || ns_menu_bar_should_be_hidden ())
6048 return frameRect; 6052 return frameRect;
diff --git a/src/s/cygwin.h b/src/s/cygwin.h
index 9a371829eaa..f8c656e8ebc 100644
--- a/src/s/cygwin.h
+++ b/src/s/cygwin.h
@@ -58,7 +58,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
58 if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) \ 58 if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) \
59 fd = -1; \ 59 fd = -1; \
60 sigsetmask (mask); \ 60 sigsetmask (mask); \
61 emacs_close (dummy); \ 61 if (fd >= 0) \
62 emacs_close (dummy); \
62 } \ 63 } \
63 while (0) 64 while (0)
64 65
@@ -81,10 +82,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
81 82
82#define HAVE_SOCKETS 83#define HAVE_SOCKETS
83 84
84/* vfork() interacts badly with setsid(), causing ptys to fail to
85 change their controlling terminal */
86#define vfork fork
87
88/* This should work (at least when compiling with gcc). But I have no way 85/* This should work (at least when compiling with gcc). But I have no way
89 or intention to verify or even test it. If you encounter a problem with 86 or intention to verify or even test it. If you encounter a problem with
90 it, feel free to change this setting, but please add a comment here about 87 it, feel free to change this setting, but please add a comment here about
diff --git a/src/w32.c b/src/w32.c
index 3d3d33453c6..248a91463e8 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -5816,7 +5816,15 @@ w32_delayed_load (Lisp_Object libraries, Lisp_Object library_id)
5816 CHECK_STRING_CAR (dlls); 5816 CHECK_STRING_CAR (dlls);
5817 if ((library_dll = LoadLibrary (SDATA (XCAR (dlls))))) 5817 if ((library_dll = LoadLibrary (SDATA (XCAR (dlls)))))
5818 { 5818 {
5819 found = XCAR (dlls); 5819 char name[MAX_PATH];
5820 DWORD len;
5821
5822 len = GetModuleFileNameA (library_dll, name, sizeof (name));
5823 found = Fcons (XCAR (dlls),
5824 (len > 0)
5825 /* Possibly truncated */
5826 ? make_specified_string (name, -1, len, 1)
5827 : Qnil);
5820 break; 5828 break;
5821 } 5829 }
5822 } 5830 }
diff --git a/src/window.c b/src/window.c
index 484cc825fb8..710e496fe88 100644
--- a/src/window.c
+++ b/src/window.c
@@ -5950,6 +5950,8 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
5950 } 5950 }
5951 else 5951 else
5952 p->pointm = Fcopy_marker (w->pointm, Qnil); 5952 p->pointm = Fcopy_marker (w->pointm, Qnil);
5953 XMARKER (p->pointm)->insertion_type
5954 = !NILP (Vwindow_point_insertion_type);
5953 5955
5954 p->start = Fcopy_marker (w->start, Qnil); 5956 p->start = Fcopy_marker (w->start, Qnil);
5955 p->start_at_line_beg = w->start_at_line_beg; 5957 p->start_at_line_beg = w->start_at_line_beg;
diff --git a/src/xdisp.c b/src/xdisp.c
index 2e83671007c..2025eda79a7 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -16681,7 +16681,15 @@ find_last_unchanged_at_beg_row (struct window *w)
16681 continued. */ 16681 continued. */
16682 && !(MATRIX_ROW_END_CHARPOS (row) == first_changed_pos 16682 && !(MATRIX_ROW_END_CHARPOS (row) == first_changed_pos
16683 && (row->continued_p 16683 && (row->continued_p
16684 || row->exact_window_width_line_p))) 16684 || row->exact_window_width_line_p))
16685 /* If ROW->end is beyond ZV, then ROW->end is outdated and
16686 needs to be recomputed, so don't consider this row as
16687 unchanged. This happens when the last line was
16688 bidi-reordered and was killed immediately before this
16689 redisplay cycle. In that case, ROW->end stores the
16690 buffer position of the first visual-order character of
16691 the killed text, which is now beyond ZV. */
16692 && CHARPOS (row->end.pos) <= ZV)
16685 row_found = row; 16693 row_found = row;
16686 16694
16687 /* Stop if last visible row. */ 16695 /* Stop if last visible row. */