aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog47
-rw-r--r--src/eval.c2
-rw-r--r--src/keyboard.c3
-rw-r--r--src/nsfont.m5
-rw-r--r--src/nsterm.m7
-rw-r--r--src/xdisp.c46
6 files changed, 72 insertions, 38 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 24161dbda1e..c7d14843bcd 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,7 @@
12011-04-05 Paul Eggert <eggert@cs.ucla.edu> 12011-04-05 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 Fix more problems found by GCC 4.6.0's static checks.
4
3 * coding.c (EMIT_ONE_BYTE, EMIT_TWO_BYTES): Use unsigned, not int. 5 * coding.c (EMIT_ONE_BYTE, EMIT_TWO_BYTES): Use unsigned, not int.
4 This avoids several warnings with gcc -Wstrict-overflow. 6 This avoids several warnings with gcc -Wstrict-overflow.
5 (DECODE_COMPOSITION_RULE): If the rule is invalid, goto invalid_code 7 (DECODE_COMPOSITION_RULE): If the rule is invalid, goto invalid_code
@@ -14,8 +16,6 @@
14 16
15 * composite.c (composition_gstring_put_cache): Use unsigned integer. 17 * composite.c (composition_gstring_put_cache): Use unsigned integer.
16 18
172011-04-04 Paul Eggert <eggert@cs.ucla.edu>
18
19 * composite.h, composite.c (composition_gstring_put_cache): 19 * composite.h, composite.c (composition_gstring_put_cache):
20 Use EMACS_INT, not int, for length. 20 Use EMACS_INT, not int, for length.
21 21
@@ -53,8 +53,6 @@
53 * font.c (font_list_entities): Redo for clarity, 53 * font.c (font_list_entities): Redo for clarity,
54 so that reader need not know FONT_DPI_INDEX + 1 == FONT_SPACING_INDEX. 54 so that reader need not know FONT_DPI_INDEX + 1 == FONT_SPACING_INDEX.
55 55
562011-04-03 Paul Eggert <eggert@cs.ucla.edu>
57
58 * font.c (font_find_for_lface, Ffont_get_glyphs): Remove unused vars. 56 * font.c (font_find_for_lface, Ffont_get_glyphs): Remove unused vars.
59 (font_score): Avoid potential overflow in diff calculation. 57 (font_score): Avoid potential overflow in diff calculation.
60 58
@@ -79,8 +77,6 @@
79 77
80 * fileio.c (Finsert_file_contents): Make EOF condition clearer. 78 * fileio.c (Finsert_file_contents): Make EOF condition clearer.
81 79
822011-04-02 Paul Eggert <eggert@cs.ucla.edu>
83
84 * fileio.c (Finsert_file_contents): Avoid signed integer overflow. 80 * fileio.c (Finsert_file_contents): Avoid signed integer overflow.
85 (Finsert_file_contents): Remove unnecessary code checking fd. 81 (Finsert_file_contents): Remove unnecessary code checking fd.
86 82
@@ -109,8 +105,6 @@
109 * xselect.c (x_get_local_selection, x_handle_property_notify): 105 * xselect.c (x_get_local_selection, x_handle_property_notify):
110 Remove vars that are set but not used. 106 Remove vars that are set but not used.
111 107
1122011-04-01 Paul Eggert <eggert@cs.ucla.edu>
113
114 * xfns.c (x_create_tip_frame): Remove var that is set but not used. 108 * xfns.c (x_create_tip_frame): Remove var that is set but not used.
115 (make_invisible_cursor): Initialize a possibly-uninitialized variable. 109 (make_invisible_cursor): Initialize a possibly-uninitialized variable.
116 110
@@ -149,6 +143,43 @@
149 * deps.mk (sysdep.o): Depend on ../lib/allocator.h and on 143 * deps.mk (sysdep.o): Depend on ../lib/allocator.h and on
150 ../lib/careadlinkat.h. 144 ../lib/careadlinkat.h.
151 145
1462011-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
147
148 * keyboard.c (safe_run_hook_funcall): Fix last change (don't stop at the
149 first non-nil return value).
150
1512011-04-03 Jan Djärv <jan.h.d@swipnet.se>
152
153 * nsterm.m (ns_update_auto_hide_menu_bar): Define MAC_OS_X_VERSION_10_6
154 if not defined (Bug#8403).
155
1562011-04-02 Juanma Barranquero <lekktu@gmail.com>
157
158 * xdisp.c (display_count_lines): Remove parameter `start',
159 unused since 1998-01-01T02:27:27Z!rms@gnu.org. All callers changed.
160 (get_char_face_and_encoding): Remove parameter `multibyte_p',
161 unused since 2008-05-14T01:40:23Z!handa@m17n.org. All callers changed.
162 (fill_stretch_glyph_string): Remove parameters `row' and `area',
163 unused at least since Kim's GUI unification at 2003-03-16T20:45:46Z!storm@cua.dk
164 and thereabouts. All callers changed.
165 (get_per_char_metric): Remove parameter `f', unused since
166 2008-05-14T01:40:23Z!handa@m17n.org. All callers changed.
167
1682011-04-02 Jim Meyering <meyering@redhat.com>
169
170 do not dereference NULL upon failed strdup
171 * nsfont.m (ns_descriptor_to_entity): Use xstrdup, not strdup.
172 (ns_get_family): Likewise.
173
1742011-04-02 Juanma Barranquero <lekktu@gmail.com>
175
176 * eval.c (unwind_to_catch) [DEBUG_GCPRO]: Remove redundant assignment.
177
1782011-04-02 Jan Djärv <jan.h.d@swipnet.se>
179
180 * nsterm.m (ns_update_auto_hide_menu_bar): Only for OSX 10.6 or
181 later (Bug#8403).
182
1522011-04-01 Stefan Monnier <monnier@iro.umontreal.ca> 1832011-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
153 184
154 Add lexical binding. 185 Add lexical binding.
diff --git a/src/eval.c b/src/eval.c
index 25afe7677f7..d1a63a76767 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1297,7 +1297,7 @@ unwind_to_catch (struct catchtag *catch, Lisp_Object value)
1297 byte_stack_list = catch->byte_stack; 1297 byte_stack_list = catch->byte_stack;
1298 gcprolist = catch->gcpro; 1298 gcprolist = catch->gcpro;
1299#ifdef DEBUG_GCPRO 1299#ifdef DEBUG_GCPRO
1300 gcpro_level = gcprolist ? gcprolist->level + 1 : gcpro_level = 0; 1300 gcpro_level = gcprolist ? gcprolist->level + 1 : 0;
1301#endif 1301#endif
1302 backtrace_list = catch->backlist; 1302 backtrace_list = catch->backlist;
1303 lisp_eval_depth = catch->lisp_eval_depth; 1303 lisp_eval_depth = catch->lisp_eval_depth;
diff --git a/src/keyboard.c b/src/keyboard.c
index f38c1c88a7e..ae4fddb2c89 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1870,7 +1870,8 @@ safe_run_hook_funcall (size_t nargs, Lisp_Object *args)
1870 else 1870 else
1871 Vinhibit_quit = Fcons (Vinhibit_quit, args[0]); 1871 Vinhibit_quit = Fcons (Vinhibit_quit, args[0]);
1872 1872
1873 return internal_condition_case (safe_run_hooks_1, Qt, safe_run_hooks_error); 1873 internal_condition_case (safe_run_hooks_1, Qt, safe_run_hooks_error);
1874 return Qnil;
1874} 1875}
1875 1876
1876/* If we get an error while running the hook, cause the hook variable 1877/* If we get an error while running the hook, cause the hook variable
diff --git a/src/nsfont.m b/src/nsfont.m
index 68cd19da70e..48d40223553 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -100,7 +100,7 @@ ns_get_family (Lisp_Object font_spec)
100 return nil; 100 return nil;
101 else 101 else
102 { 102 {
103 char *tmp = strdup (SDATA (SYMBOL_NAME (tem))); 103 char *tmp = xstrdup (SDATA (SYMBOL_NAME (tem)));
104 NSString *family; 104 NSString *family;
105 ns_unescape_name (tmp); 105 ns_unescape_name (tmp);
106 family = [NSString stringWithUTF8String: tmp]; 106 family = [NSString stringWithUTF8String: tmp];
@@ -176,7 +176,7 @@ ns_descriptor_to_entity (NSFontDescriptor *desc,
176 if (family == nil) 176 if (family == nil)
177 family = [[NSFont userFixedPitchFontOfSize: 0] familyName]; 177 family = [[NSFont userFixedPitchFontOfSize: 0] familyName];
178 178
179 escapedFamily = strdup ([family UTF8String]); 179 escapedFamily = xstrdup ([family UTF8String]);
180 ns_escape_name (escapedFamily); 180 ns_escape_name (escapedFamily);
181 181
182 ASET (font_entity, FONT_TYPE_INDEX, Qns); 182 ASET (font_entity, FONT_TYPE_INDEX, Qns);
@@ -1526,4 +1526,3 @@ syms_of_nsfont (void)
1526 DEFVAR_LISP ("ns-reg-to-script", Vns_reg_to_script, 1526 DEFVAR_LISP ("ns-reg-to-script", Vns_reg_to_script,
1527 doc: /* Internal use: maps font registry to unicode script. */); 1527 doc: /* Internal use: maps font registry to unicode script. */);
1528} 1528}
1529
diff --git a/src/nsterm.m b/src/nsterm.m
index 91f0cbba585..c4756dc83cd 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -583,6 +583,11 @@ ns_menu_bar_should_be_hidden (void)
583static void 583static void
584ns_update_auto_hide_menu_bar (void) 584ns_update_auto_hide_menu_bar (void)
585{ 585{
586#ifndef MAC_OS_X_VERSION_10_6
587#define MAC_OS_X_VERSION_10_6 1060
588#endif
589#ifdef NS_IMPL_COCOA
590#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
586 BLOCK_INPUT; 591 BLOCK_INPUT;
587 592
588 NSTRACE (ns_update_auto_hide_menu_bar); 593 NSTRACE (ns_update_auto_hide_menu_bar);
@@ -615,6 +620,8 @@ ns_update_auto_hide_menu_bar (void)
615 } 620 }
616 621
617 UNBLOCK_INPUT; 622 UNBLOCK_INPUT;
623#endif
624#endif
618} 625}
619 626
620 627
diff --git a/src/xdisp.c b/src/xdisp.c
index 3c9d38536bb..e6a7f4254ef 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -824,8 +824,7 @@ static int display_mode_element (struct it *, int, int, int, Lisp_Object, Lisp_O
824static int store_mode_line_string (const char *, Lisp_Object, int, int, int, Lisp_Object); 824static int store_mode_line_string (const char *, Lisp_Object, int, int, int, Lisp_Object);
825static const char *decode_mode_spec (struct window *, int, int, Lisp_Object *); 825static const char *decode_mode_spec (struct window *, int, int, Lisp_Object *);
826static void display_menu_bar (struct window *); 826static void display_menu_bar (struct window *);
827static int display_count_lines (EMACS_INT, EMACS_INT, EMACS_INT, int, 827static int display_count_lines (EMACS_INT, EMACS_INT, int, EMACS_INT *);
828 EMACS_INT *);
829static int display_string (const char *, Lisp_Object, Lisp_Object, 828static int display_string (const char *, Lisp_Object, Lisp_Object,
830 EMACS_INT, EMACS_INT, struct it *, int, int, int, int); 829 EMACS_INT, EMACS_INT, struct it *, int, int, int, int);
831static void compute_line_metrics (struct it *); 830static void compute_line_metrics (struct it *);
@@ -19481,7 +19480,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
19481 } 19480 }
19482 19481
19483 /* Count lines from base line to window start position. */ 19482 /* Count lines from base line to window start position. */
19484 nlines = display_count_lines (linepos, linepos_byte, 19483 nlines = display_count_lines (linepos_byte,
19485 startpos_byte, 19484 startpos_byte,
19486 startpos, &junk); 19485 startpos, &junk);
19487 19486
@@ -19510,7 +19509,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
19510 limit_byte = CHAR_TO_BYTE (limit); 19509 limit_byte = CHAR_TO_BYTE (limit);
19511 } 19510 }
19512 19511
19513 nlines = display_count_lines (startpos, startpos_byte, 19512 nlines = display_count_lines (startpos_byte,
19514 limit_byte, 19513 limit_byte,
19515 - (height * 2 + 30), 19514 - (height * 2 + 30),
19516 &position); 19515 &position);
@@ -19529,7 +19528,7 @@ decode_mode_spec (struct window *w, register int c, int field_width,
19529 } 19528 }
19530 19529
19531 /* Now count lines from the start pos to point. */ 19530 /* Now count lines from the start pos to point. */
19532 nlines = display_count_lines (startpos, startpos_byte, 19531 nlines = display_count_lines (startpos_byte,
19533 PT_BYTE, PT, &junk); 19532 PT_BYTE, PT, &junk);
19534 19533
19535 /* Record that we did display the line number. */ 19534 /* Record that we did display the line number. */
@@ -19699,14 +19698,14 @@ decode_mode_spec (struct window *w, register int c, int field_width,
19699} 19698}
19700 19699
19701 19700
19702/* Count up to COUNT lines starting from START / START_BYTE. 19701/* Count up to COUNT lines starting from START_BYTE.
19703 But don't go beyond LIMIT_BYTE. 19702 But don't go beyond LIMIT_BYTE.
19704 Return the number of lines thus found (always nonnegative). 19703 Return the number of lines thus found (always nonnegative).
19705 19704
19706 Set *BYTE_POS_PTR to 1 if we found COUNT lines, 0 if we hit LIMIT. */ 19705 Set *BYTE_POS_PTR to 1 if we found COUNT lines, 0 if we hit LIMIT. */
19707 19706
19708static int 19707static int
19709display_count_lines (EMACS_INT start, EMACS_INT start_byte, 19708display_count_lines (EMACS_INT start_byte,
19710 EMACS_INT limit_byte, int count, 19709 EMACS_INT limit_byte, int count,
19711 EMACS_INT *byte_pos_ptr) 19710 EMACS_INT *byte_pos_ptr)
19712{ 19711{
@@ -20470,16 +20469,15 @@ append_glyph_string (struct glyph_string **head, struct glyph_string **tail,
20470} 20469}
20471 20470
20472 20471
20473/* Get face and two-byte form of character C in face FACE_ID on frame 20472/* Get face and two-byte form of character C in face FACE_ID on frame F.
20474 F. The encoding of C is returned in *CHAR2B. MULTIBYTE_P non-zero 20473 The encoding of C is returned in *CHAR2B. DISPLAY_P non-zero means
20475 means we want to display multibyte text. DISPLAY_P non-zero means
20476 make sure that X resources for the face returned are allocated. 20474 make sure that X resources for the face returned are allocated.
20477 Value is a pointer to a realized face that is ready for display if 20475 Value is a pointer to a realized face that is ready for display if
20478 DISPLAY_P is non-zero. */ 20476 DISPLAY_P is non-zero. */
20479 20477
20480static INLINE struct face * 20478static INLINE struct face *
20481get_char_face_and_encoding (struct frame *f, int c, int face_id, 20479get_char_face_and_encoding (struct frame *f, int c, int face_id,
20482 XChar2b *char2b, int multibyte_p, int display_p) 20480 XChar2b *char2b, int display_p)
20483{ 20481{
20484 struct face *face = FACE_FROM_ID (f, face_id); 20482 struct face *face = FACE_FROM_ID (f, face_id);
20485 20483
@@ -20599,7 +20597,7 @@ fill_composite_glyph_string (struct glyph_string *s, struct face *base_face,
20599 -1, Qnil); 20597 -1, Qnil);
20600 20598
20601 face = get_char_face_and_encoding (s->f, c, face_id, 20599 face = get_char_face_and_encoding (s->f, c, face_id,
20602 s->char2b + i, 1, 1); 20600 s->char2b + i, 1);
20603 if (face) 20601 if (face)
20604 { 20602 {
20605 if (! s->face) 20603 if (! s->face)
@@ -20798,15 +20796,13 @@ fill_image_glyph_string (struct glyph_string *s)
20798 20796
20799/* Fill glyph string S from a sequence of stretch glyphs. 20797/* Fill glyph string S from a sequence of stretch glyphs.
20800 20798
20801 ROW is the glyph row in which the glyphs are found, AREA is the 20799 START is the index of the first glyph to consider,
20802 area within the row. START is the index of the first glyph to 20800 END is the index of the last + 1.
20803 consider, END is the index of the last + 1.
20804 20801
20805 Value is the index of the first glyph not in S. */ 20802 Value is the index of the first glyph not in S. */
20806 20803
20807static int 20804static int
20808fill_stretch_glyph_string (struct glyph_string *s, struct glyph_row *row, 20805fill_stretch_glyph_string (struct glyph_string *s, int start, int end)
20809 enum glyph_row_area area, int start, int end)
20810{ 20806{
20811 struct glyph *glyph, *last; 20807 struct glyph *glyph, *last;
20812 int voffset, face_id; 20808 int voffset, face_id;
@@ -20840,7 +20836,7 @@ fill_stretch_glyph_string (struct glyph_string *s, struct glyph_row *row,
20840} 20836}
20841 20837
20842static struct font_metrics * 20838static struct font_metrics *
20843get_per_char_metric (struct frame *f, struct font *font, XChar2b *char2b) 20839get_per_char_metric (struct font *font, XChar2b *char2b)
20844{ 20840{
20845 static struct font_metrics metrics; 20841 static struct font_metrics metrics;
20846 unsigned code = (XCHAR2B_BYTE1 (char2b) << 8) | XCHAR2B_BYTE2 (char2b); 20842 unsigned code = (XCHAR2B_BYTE1 (char2b) << 8) | XCHAR2B_BYTE2 (char2b);
@@ -20868,7 +20864,7 @@ x_get_glyph_overhangs (struct glyph *glyph, struct frame *f, int *left, int *rig
20868 struct font_metrics *pcm; 20864 struct font_metrics *pcm;
20869 20865
20870 face = get_glyph_face_and_encoding (f, glyph, &char2b, NULL); 20866 face = get_glyph_face_and_encoding (f, glyph, &char2b, NULL);
20871 if (face->font && (pcm = get_per_char_metric (f, face->font, &char2b))) 20867 if (face->font && (pcm = get_per_char_metric (face->font, &char2b)))
20872 { 20868 {
20873 if (pcm->rbearing > pcm->width) 20869 if (pcm->rbearing > pcm->width)
20874 *right = pcm->rbearing - pcm->width; 20870 *right = pcm->rbearing - pcm->width;
@@ -21102,7 +21098,7 @@ compute_overhangs_and_x (struct glyph_string *s, int x, int backward_p)
21102 { \ 21098 { \
21103 s = (struct glyph_string *) alloca (sizeof *s); \ 21099 s = (struct glyph_string *) alloca (sizeof *s); \
21104 INIT_GLYPH_STRING (s, NULL, w, row, area, START, HL); \ 21100 INIT_GLYPH_STRING (s, NULL, w, row, area, START, HL); \
21105 START = fill_stretch_glyph_string (s, row, area, START, END); \ 21101 START = fill_stretch_glyph_string (s, START, END); \
21106 append_glyph_string (&HEAD, &TAIL, s); \ 21102 append_glyph_string (&HEAD, &TAIL, s); \
21107 s->x = (X); \ 21103 s->x = (X); \
21108 } \ 21104 } \
@@ -22475,7 +22471,7 @@ x_produce_glyphs (struct it *it)
22475 22471
22476 if (get_char_glyph_code (it->char_to_display, font, &char2b)) 22472 if (get_char_glyph_code (it->char_to_display, font, &char2b))
22477 { 22473 {
22478 pcm = get_per_char_metric (it->f, font, &char2b); 22474 pcm = get_per_char_metric (font, &char2b);
22479 if (pcm->width == 0 22475 if (pcm->width == 0
22480 && pcm->rbearing == 0 && pcm->lbearing == 0) 22476 && pcm->rbearing == 0 && pcm->lbearing == 0)
22481 pcm = NULL; 22477 pcm = NULL;
@@ -22777,8 +22773,8 @@ x_produce_glyphs (struct it *it)
22777 if (! font_not_found_p) 22773 if (! font_not_found_p)
22778 { 22774 {
22779 get_char_face_and_encoding (it->f, c, it->face_id, 22775 get_char_face_and_encoding (it->f, c, it->face_id,
22780 &char2b, it->multibyte_p, 0); 22776 &char2b, 0);
22781 pcm = get_per_char_metric (it->f, font, &char2b); 22777 pcm = get_per_char_metric (font, &char2b);
22782 } 22778 }
22783 22779
22784 /* Initialize the bounding box. */ 22780 /* Initialize the bounding box. */
@@ -22838,8 +22834,8 @@ x_produce_glyphs (struct it *it)
22838 else 22834 else
22839 { 22835 {
22840 get_char_face_and_encoding (it->f, ch, face_id, 22836 get_char_face_and_encoding (it->f, ch, face_id,
22841 &char2b, it->multibyte_p, 0); 22837 &char2b, 0);
22842 pcm = get_per_char_metric (it->f, font, &char2b); 22838 pcm = get_per_char_metric (font, &char2b);
22843 } 22839 }
22844 if (! pcm) 22840 if (! pcm)
22845 cmp->offsets[i * 2] = cmp->offsets[i * 2 + 1] = 0; 22841 cmp->offsets[i * 2] = cmp->offsets[i * 2 + 1] = 0;