+2008-02-07 Jim Meyering <meyering@redhat.com>
+
+ Use "do...while (0)", not "if (1)..else" in macro definitions.
+ The latter provokes a warning from gcc about the empty else, when
+ followed by ";". Also, without that trailing semicolon, it would
+ silently swallow up any following statement.
+ * syntax.h (SETUP_SYNTAX_TABLE):
+ (SETUP_SYNTAX_TABLE_FOR_OBJECT): Likewise.
+ * buffer.h (DECODE_POSITION): Likewise.
+
2008-02-07 Jim Meyering <meyering@redhat.com>
* lread.c [lint]: Don't include <sys/inode.h>.
and store the charpos in CHARPOS and the bytepos in BYTEPOS. */
#define DECODE_POSITION(charpos, bytepos, pos) \
-if (1) \
+do \
{ \
Lisp_Object __pos = (pos); \
if (NUMBERP (__pos)) \
else \
wrong_type_argument (Qinteger_or_marker_p, __pos); \
} \
-else
+while (0)
/* Return the address of byte position N in current buffer. */
*/
#define SETUP_SYNTAX_TABLE(FROM, COUNT) \
-if (1) \
+do \
{ \
gl_state.b_property = BEGV; \
gl_state.e_property = ZV + 1; \
update_syntax_table ((COUNT) > 0 ? (FROM) : (FROM) - 1, (COUNT),\
1, Qnil); \
} \
-else
+while (0)
/* Same as above, but in OBJECT. If OBJECT is nil, use current buffer.
If it is t, ignore properties altogether.
So if it is a buffer, we set the offset field to BEGV. */
#define SETUP_SYNTAX_TABLE_FOR_OBJECT(OBJECT, FROM, COUNT) \
-if (1) \
+do \
{ \
gl_state.object = (OBJECT); \
if (BUFFERP (gl_state.object)) \
+ (COUNT > 0 ? 0 : -1)), \
COUNT, 1, gl_state.object); \
} \
-else
+while (0)
struct gl_state_s
{