<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/src/w32menu.c, branch pending</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>Add 2012 to FSF copyright years for Emacs files</title>
<updated>2012-01-05T09:46:05+00:00</updated>
<author>
<name>Glenn Morris</name>
</author>
<published>2012-01-05T09:46:05+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=acaf905b1130aae80fa59d2c861ffd4c8eb75486'/>
<id>acaf905b1130aae80fa59d2c861ffd4c8eb75486</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typos.</title>
<updated>2011-11-20T19:35:27+00:00</updated>
<author>
<name>Juanma Barranquero</name>
</author>
<published>2011-11-20T19:35:27+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=fe7a3057a38e896a9c4ad12c831fb84a5d808691'/>
<id>fe7a3057a38e896a9c4ad12c831fb84a5d808691</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Spelling fixes.</title>
<updated>2011-11-14T23:59:56+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2011-11-14T23:59:56+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=91af3942e9ab5540b3ab4dde6733bc883dc2abdd'/>
<id>91af3942e9ab5540b3ab4dde6733bc883dc2abdd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move DEFSYM to lisp.h and use everywhere.</title>
<updated>2011-06-24T21:25:22+00:00</updated>
<author>
<name>Juanma Barranquero</name>
</author>
<published>2011-06-24T21:25:22+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=cd3520a41df21d80a9d894c58af2daba23c8dd24'/>
<id>cd3520a41df21d80a9d894c58af2daba23c8dd24</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>* w32menu.c: Change 'unsigned long' to 'Time' in #if-0 code.</title>
<updated>2011-05-16T05:17:23+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2011-05-16T05:17:23+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=07156b3538e4de0baec3adbe498673f92c34fd90'/>
<id>07156b3538e4de0baec3adbe498673f92c34fd90</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>* w32menu.c (set_frame_menubar): Fix submenu allocation.</title>
<updated>2011-05-09T11:29:51+00:00</updated>
<author>
<name>Andreas Schwab</name>
</author>
<published>2011-05-09T11:29:51+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=57679c8695cd63c63dd33ba548fefdef68a5cca5'/>
<id>57679c8695cd63c63dd33ba548fefdef68a5cca5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>* lisp.h: (XVECTOR_SIZE): Remove.  All uses replaced with ASIZE.</title>
<updated>2011-04-25T21:34:39+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2011-04-25T21:34:39+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=77b37c05572d1028d0ec2c264ac0ed3a89c0f4da'/>
<id>77b37c05572d1028d0ec2c264ac0ed3a89c0f4da</id>
<content type='text'>
(ASIZE): Now contains previous implementation of XVECTOR_SIZE
instead of invoking XVECTOR_SIZE.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(ASIZE): Now contains previous implementation of XVECTOR_SIZE
instead of invoking XVECTOR_SIZE.
</pre>
</div>
</content>
</entry>
<entry>
<title>lisp.h: Fix a problem with aliasing and vector headers.</title>
<updated>2011-04-25T07:14:46+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2011-04-25T07:14:46+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=eab3844f965646b62e242aa622754b86d1fd3444'/>
<id>eab3844f965646b62e242aa622754b86d1fd3444</id>
<content type='text'>
GCC 4.6.0 optimizes based on type-based alias analysis.  For
example, if b is of type struct buffer * and v of type struct
Lisp_Vector *, then gcc -O2 was incorrectly assuming that &amp;b-&gt;size
!= &amp;v-&gt;size, and therefore "v-&gt;size = 1; b-&gt;size = 2; return
v-&gt;size;" must therefore return 1.  This assumption is incorrect
for Emacs, since it type-puns struct Lisp_Vector * with many other
types.  To fix this problem, this patch adds a new type struct
vector_header that documents the constraints on layout of vectors
and pseudovectors, and helps optimizing compilers not get fooled
by Emacs's type punning.  It also adds the macros XSETTYPED_PVECTYPE
XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
* lisp.h (XVECTOR_SIZE): New convenience macro.  All previous uses of
XVECTOR (foo)-&gt;size replaced to use this macro, to avoid the hassle
of writing XVECTOR (foo)-&gt;header.size.
(XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
(XSETTYPED_PVECTYPE): New macro, specifying the name of the size
member.
(XSETPVECTYPE): Rewrite in terms of new macro.
(XSETPVECTYPESIZE): New macro, specifying both type and size.
This is a bit clearer, and further avoids the possibility of
undesirable aliasing.
(XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
(XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
and XVECTOR_HEADER_SIZE.
(XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
since Lisp_Subr is a special case (no "next" field).
(ASIZE): Rewrite in terms of XVECTOR_SIZE.
(struct vector_header): New type.
(TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
object, to help avoid aliasing.
(PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
(SUBRP): Likewise, since Lisp_Subr is a special case.
* lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
(struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
(struct Lisp_Hash_Table): Combine first two members into a single
struct vector_header member.  All uses of "size" and "next" members
changed to be "header.size" and "header.next".
* buffer.h (struct buffer): Likewise.
* font.h (struct font_spec, struct font_entity, struct font): Likewise.
* frame.h (struct frame): Likewise.
* process.h (struct Lisp_Process): Likewise.
* termhooks.h (struct terminal): Likewise.
* window.c (struct save_window_data, struct saved_window): Likewise.
* window.h (struct window): Likewise.
* alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
* buffer.c (init_buffer_once): Likewise.
* lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
special case.
* process.c (Fformat_network_address): Use local var for size,
for brevity.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
GCC 4.6.0 optimizes based on type-based alias analysis.  For
example, if b is of type struct buffer * and v of type struct
Lisp_Vector *, then gcc -O2 was incorrectly assuming that &amp;b-&gt;size
!= &amp;v-&gt;size, and therefore "v-&gt;size = 1; b-&gt;size = 2; return
v-&gt;size;" must therefore return 1.  This assumption is incorrect
for Emacs, since it type-puns struct Lisp_Vector * with many other
types.  To fix this problem, this patch adds a new type struct
vector_header that documents the constraints on layout of vectors
and pseudovectors, and helps optimizing compilers not get fooled
by Emacs's type punning.  It also adds the macros XSETTYPED_PVECTYPE
XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
* lisp.h (XVECTOR_SIZE): New convenience macro.  All previous uses of
XVECTOR (foo)-&gt;size replaced to use this macro, to avoid the hassle
of writing XVECTOR (foo)-&gt;header.size.
(XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
(XSETTYPED_PVECTYPE): New macro, specifying the name of the size
member.
(XSETPVECTYPE): Rewrite in terms of new macro.
(XSETPVECTYPESIZE): New macro, specifying both type and size.
This is a bit clearer, and further avoids the possibility of
undesirable aliasing.
(XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
(XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
and XVECTOR_HEADER_SIZE.
(XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
since Lisp_Subr is a special case (no "next" field).
(ASIZE): Rewrite in terms of XVECTOR_SIZE.
(struct vector_header): New type.
(TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
object, to help avoid aliasing.
(PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
(SUBRP): Likewise, since Lisp_Subr is a special case.
* lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
(struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
(struct Lisp_Hash_Table): Combine first two members into a single
struct vector_header member.  All uses of "size" and "next" members
changed to be "header.size" and "header.next".
* buffer.h (struct buffer): Likewise.
* font.h (struct font_spec, struct font_entity, struct font): Likewise.
* frame.h (struct frame): Likewise.
* process.h (struct Lisp_Process): Likewise.
* termhooks.h (struct terminal): Likewise.
* window.c (struct save_window_data, struct saved_window): Likewise.
* window.h (struct window): Likewise.
* alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
* buffer.c (init_buffer_once): Likewise.
* lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
special case.
* process.c (Fformat_network_address): Use local var for size,
for brevity.
</pre>
</div>
</content>
</entry>
<entry>
<title>src/*.h: Remove unused parameters and functions.</title>
<updated>2011-03-26T01:23:15+00:00</updated>
<author>
<name>Juanma Barranquero</name>
</author>
<published>2011-03-26T01:23:15+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=f868cd8a7186e86e4c9bbd52de2aca99fa94648f'/>
<id>f868cd8a7186e86e4c9bbd52de2aca99fa94648f</id>
<content type='text'>
* keyboard.h (timer_check, show_help_echo): Remove unused parameters.

* keyboard.c (timer_check): Remove parameter `do_it_now',
  unused since 1996-04-12T06:01:29Z!rms@gnu.org.
  (show_help_echo): Remove parameter `ok_to_overwrite_keystroke_echo',
  unused since 2008-04-19T19:30:53Z!monnier@iro.umontreal.ca.

* keyboard.c (read_char):
* w32menu.c (w32_menu_display_help):
* xmenu.c (show_help_event, menu_help_callback):
  Adjust calls to `show_help_echo'.

* gtkutil.c (xg_maybe_add_timer):
* keyboard.c (readable_events):
* process.c (wait_reading_process_output):
* xmenu.c (x_menu_wait_for_event): Adjust calls to `timer_check'.

* insdel.c (adjust_markers_gap_motion):
  Remove; no-op since 1998-01-02T21:29:48Z!rms@gnu.org.
  (gap_left, gap_right): Don't call it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* keyboard.h (timer_check, show_help_echo): Remove unused parameters.

* keyboard.c (timer_check): Remove parameter `do_it_now',
  unused since 1996-04-12T06:01:29Z!rms@gnu.org.
  (show_help_echo): Remove parameter `ok_to_overwrite_keystroke_echo',
  unused since 2008-04-19T19:30:53Z!monnier@iro.umontreal.ca.

* keyboard.c (read_char):
* w32menu.c (w32_menu_display_help):
* xmenu.c (show_help_event, menu_help_callback):
  Adjust calls to `show_help_echo'.

* gtkutil.c (xg_maybe_add_timer):
* keyboard.c (readable_events):
* process.c (wait_reading_process_output):
* xmenu.c (x_menu_wait_for_event): Adjust calls to `timer_check'.

* insdel.c (adjust_markers_gap_motion):
  Remove; no-op since 1998-01-02T21:29:48Z!rms@gnu.org.
  (gap_left, gap_right): Don't call it.
</pre>
</div>
</content>
</entry>
<entry>
<title>w32: Fix some warnings reported by -Wall -Wextra.</title>
<updated>2011-03-23T16:25:38+00:00</updated>
<author>
<name>Juanma Barranquero</name>
</author>
<published>2011-03-23T16:25:38+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=9c88f339493465e8e200b21885f2ac886b299169'/>
<id>9c88f339493465e8e200b21885f2ac886b299169</id>
<content type='text'>
* lib-src/ntlib.c: Include &lt;ctype.h&gt;.

* nt/cmdproxy.c: Include &lt;ctype.h&gt;.
  (make_absolute): Remove unused variable `i'.

* src/w32fns.c (x_set_menu_bar_lines): Remove unused variable `olines'.
  (w32_wnd_proc): Pass NULL to Windows API, not uninitialized buffer.
  (Fx_close_connection): Remove unused variable `i'.

* src/w32font.c (w32font_draw): Return number of glyphs.
  (w32font_open_internal): Remove unused variable `i'.
  (w32font_driver): Add missing initializer.

* src/w32menu.c (utf8to16): Remove unused variable `utf16'.
  (fill_in_menu): Remove unused variable `items_added'.

* src/w32term.c (last_mouse_press_frame): Remove static global variable.
  (w32_clip_to_row): Remove unused variable `f'.
  (x_delete_terminal): Remove unused variable `i'.

* src/w32uniscribe.c (uniscribe_shape): Remove unused variable `nclusters'.
  (NOTHING): Remove unused static global variable.
  (uniscribe_check_otf): Remove unused variable `table'.
  (uniscribe_font_driver): Add missing initializers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lib-src/ntlib.c: Include &lt;ctype.h&gt;.

* nt/cmdproxy.c: Include &lt;ctype.h&gt;.
  (make_absolute): Remove unused variable `i'.

* src/w32fns.c (x_set_menu_bar_lines): Remove unused variable `olines'.
  (w32_wnd_proc): Pass NULL to Windows API, not uninitialized buffer.
  (Fx_close_connection): Remove unused variable `i'.

* src/w32font.c (w32font_draw): Return number of glyphs.
  (w32font_open_internal): Remove unused variable `i'.
  (w32font_driver): Add missing initializer.

* src/w32menu.c (utf8to16): Remove unused variable `utf16'.
  (fill_in_menu): Remove unused variable `items_added'.

* src/w32term.c (last_mouse_press_frame): Remove static global variable.
  (w32_clip_to_row): Remove unused variable `f'.
  (x_delete_terminal): Remove unused variable `i'.

* src/w32uniscribe.c (uniscribe_shape): Remove unused variable `nclusters'.
  (NOTHING): Remove unused static global variable.
  (uniscribe_check_otf): Remove unused variable `table'.
  (uniscribe_font_driver): Add missing initializers.
</pre>
</div>
</content>
</entry>
</feed>
