changeset 108456:07667a45e678

Merge from mainline.
author Katsumi Yamaoka <katsumi@flagship2>
date Mon, 26 Apr 2010 12:48:35 +0000
parents 2d8a4d786871 (current diff) 769f66a9a7ef (diff)
children aeb8069f9ba3
files
diffstat 21 files changed, 66 insertions(+), 161 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/ChangeLog	Mon Apr 26 12:48:35 2010 +0000
@@ -1,3 +1,38 @@
+2010-04-26  Kenichi Handa  <handa@m17n.org>
+
+	* composite.c (Ffind_composition_internal): Fix the return value
+	for an automatic composition.
+
+2010-04-25  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	Remove all NO_ARG_ARRAY uses.
+	* fns.c (concat2, concat3, nconc2):
+	* eval.c (apply1, call1, call2, call3, call4, call5, call6)
+	(call7): Remove NO_ARG_ARRAY usage, assume it's always true.
+	* m/xtensa.h (NO_ARG_ARRAY):
+	* m/template.h (NO_ARG_ARRAY):
+	* m/sparc.h (NO_ARG_ARRAY):
+	* m/sh3.h (NO_ARG_ARRAY):
+	* m/mips.h (NO_ARG_ARRAY):
+	* m/macppc.h (NO_ARG_ARRAY):
+	* m/iris4d.h (NO_ARG_ARRAY):
+	* m/intel386.h (NO_ARG_ARRAY):
+	* m/ibms390x.h (NO_ARG_ARRAY):
+	* m/ibms390.h (NO_ARG_ARRAY):
+	* m/ibmrs6000.h (NO_ARG_ARRAY):
+	* m/ia64.h (NO_ARG_ARRAY):
+	* m/hp800.h (NO_ARG_ARRAY):
+	* m/arm.h (NO_ARG_ARRAY):
+	* m/amdx86-64.h (NO_ARG_ARRAY):
+	* m/alpha.h (NO_ARG_ARRAY): Remove definition.
+
+2010-04-25  Eli Zaretskii  <eliz@gnu.org>
+
+	* xdisp.c (display_line): Don't assume 2nd call to
+	get_next_display_element cannot return zero.  (Bug#6030)
+	(iterate_out_of_display_property): New function, body from pop_it.
+	(pop_it): Use it.
+
 2010-04-24  Glenn Morris  <rgm@gnu.org>
 
 	* m/amdx86-64.h (START_FILES, LIB_STANDARD) [__OpenBSD__]:
--- a/src/composite.c	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/composite.c	Mon Apr 26 12:48:35 2010 +0000
@@ -1674,7 +1674,7 @@
 
       if (find_automatic_composition (from, to, &s, &e, &gstring, string)
 	  && (e <= XINT (pos) ? e > end : s < start))
-	return list3 (make_number (start), make_number (end), gstring);
+	return list3 (make_number (s), make_number (e), gstring);
     }
   if (!COMPOSITION_VALID_P (start, end, prop))
     return Fcons (make_number (start), Fcons (make_number (end),
--- a/src/eval.c	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/eval.c	Mon Apr 26 12:48:35 2010 +0000
@@ -2786,7 +2786,6 @@
   if (NILP (arg))
     RETURN_UNGCPRO (Ffuncall (1, &fn));
   gcpro1.nvars = 2;
-#ifdef NO_ARG_ARRAY
   {
     Lisp_Object args[2];
     args[0] = fn;
@@ -2794,9 +2793,6 @@
     gcpro1.var = args;
     RETURN_UNGCPRO (Fapply (2, args));
   }
-#else /* not NO_ARG_ARRAY */
-  RETURN_UNGCPRO (Fapply (2, &fn));
-#endif /* not NO_ARG_ARRAY */
 }
 
 /* Call function fn on no arguments */
@@ -2817,7 +2813,6 @@
      Lisp_Object fn, arg1;
 {
   struct gcpro gcpro1;
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[2];
 
   args[0] = fn;
@@ -2825,11 +2820,6 @@
   GCPRO1 (args[0]);
   gcpro1.nvars = 2;
   RETURN_UNGCPRO (Ffuncall (2, args));
-#else /* not NO_ARG_ARRAY */
-  GCPRO1 (fn);
-  gcpro1.nvars = 2;
-  RETURN_UNGCPRO (Ffuncall (2, &fn));
-#endif /* not NO_ARG_ARRAY */
 }
 
 /* Call function fn with 2 arguments arg1, arg2 */
@@ -2839,7 +2829,6 @@
      Lisp_Object fn, arg1, arg2;
 {
   struct gcpro gcpro1;
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[3];
   args[0] = fn;
   args[1] = arg1;
@@ -2847,11 +2836,6 @@
   GCPRO1 (args[0]);
   gcpro1.nvars = 3;
   RETURN_UNGCPRO (Ffuncall (3, args));
-#else /* not NO_ARG_ARRAY */
-  GCPRO1 (fn);
-  gcpro1.nvars = 3;
-  RETURN_UNGCPRO (Ffuncall (3, &fn));
-#endif /* not NO_ARG_ARRAY */
 }
 
 /* Call function fn with 3 arguments arg1, arg2, arg3 */
@@ -2861,7 +2845,6 @@
      Lisp_Object fn, arg1, arg2, arg3;
 {
   struct gcpro gcpro1;
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[4];
   args[0] = fn;
   args[1] = arg1;
@@ -2870,11 +2853,6 @@
   GCPRO1 (args[0]);
   gcpro1.nvars = 4;
   RETURN_UNGCPRO (Ffuncall (4, args));
-#else /* not NO_ARG_ARRAY */
-  GCPRO1 (fn);
-  gcpro1.nvars = 4;
-  RETURN_UNGCPRO (Ffuncall (4, &fn));
-#endif /* not NO_ARG_ARRAY */
 }
 
 /* Call function fn with 4 arguments arg1, arg2, arg3, arg4 */
@@ -2884,7 +2862,6 @@
      Lisp_Object fn, arg1, arg2, arg3, arg4;
 {
   struct gcpro gcpro1;
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[5];
   args[0] = fn;
   args[1] = arg1;
@@ -2894,11 +2871,6 @@
   GCPRO1 (args[0]);
   gcpro1.nvars = 5;
   RETURN_UNGCPRO (Ffuncall (5, args));
-#else /* not NO_ARG_ARRAY */
-  GCPRO1 (fn);
-  gcpro1.nvars = 5;
-  RETURN_UNGCPRO (Ffuncall (5, &fn));
-#endif /* not NO_ARG_ARRAY */
 }
 
 /* Call function fn with 5 arguments arg1, arg2, arg3, arg4, arg5 */
@@ -2908,7 +2880,6 @@
      Lisp_Object fn, arg1, arg2, arg3, arg4, arg5;
 {
   struct gcpro gcpro1;
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[6];
   args[0] = fn;
   args[1] = arg1;
@@ -2919,11 +2890,6 @@
   GCPRO1 (args[0]);
   gcpro1.nvars = 6;
   RETURN_UNGCPRO (Ffuncall (6, args));
-#else /* not NO_ARG_ARRAY */
-  GCPRO1 (fn);
-  gcpro1.nvars = 6;
-  RETURN_UNGCPRO (Ffuncall (6, &fn));
-#endif /* not NO_ARG_ARRAY */
 }
 
 /* Call function fn with 6 arguments arg1, arg2, arg3, arg4, arg5, arg6 */
@@ -2933,7 +2899,6 @@
      Lisp_Object fn, arg1, arg2, arg3, arg4, arg5, arg6;
 {
   struct gcpro gcpro1;
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[7];
   args[0] = fn;
   args[1] = arg1;
@@ -2945,11 +2910,6 @@
   GCPRO1 (args[0]);
   gcpro1.nvars = 7;
   RETURN_UNGCPRO (Ffuncall (7, args));
-#else /* not NO_ARG_ARRAY */
-  GCPRO1 (fn);
-  gcpro1.nvars = 7;
-  RETURN_UNGCPRO (Ffuncall (7, &fn));
-#endif /* not NO_ARG_ARRAY */
 }
 
 /* Call function fn with 7 arguments arg1, arg2, arg3, arg4, arg5, arg6, arg7 */
@@ -2959,7 +2919,6 @@
      Lisp_Object fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7;
 {
   struct gcpro gcpro1;
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[8];
   args[0] = fn;
   args[1] = arg1;
@@ -2972,11 +2931,6 @@
   GCPRO1 (args[0]);
   gcpro1.nvars = 8;
   RETURN_UNGCPRO (Ffuncall (8, args));
-#else /* not NO_ARG_ARRAY */
-  GCPRO1 (fn);
-  gcpro1.nvars = 8;
-  RETURN_UNGCPRO (Ffuncall (8, &fn));
-#endif /* not NO_ARG_ARRAY */
 }
 
 /* The caller should GCPRO all the elements of ARGS.  */
--- a/src/fns.c	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/fns.c	Mon Apr 26 12:48:35 2010 +0000
@@ -392,14 +392,10 @@
 concat2 (s1, s2)
      Lisp_Object s1, s2;
 {
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[2];
   args[0] = s1;
   args[1] = s2;
   return concat (2, args, Lisp_String, 0);
-#else
-  return concat (2, &s1, Lisp_String, 0);
-#endif /* NO_ARG_ARRAY */
 }
 
 /* ARGSUSED */
@@ -407,15 +403,11 @@
 concat3 (s1, s2, s3)
      Lisp_Object s1, s2, s3;
 {
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[3];
   args[0] = s1;
   args[1] = s2;
   args[2] = s3;
   return concat (3, args, Lisp_String, 0);
-#else
-  return concat (3, &s1, Lisp_String, 0);
-#endif /* NO_ARG_ARRAY */
 }
 
 DEFUN ("append", Fappend, Sappend, 0, MANY, 0,
@@ -2344,14 +2336,10 @@
 nconc2 (s1, s2)
      Lisp_Object s1, s2;
 {
-#ifdef NO_ARG_ARRAY
   Lisp_Object args[2];
   args[0] = s1;
   args[1] = s2;
   return Fnconc (2, args);
-#else
-  return Fnconc (2, &s1);
-#endif /* NO_ARG_ARRAY */
 }
 
 DEFUN ("nconc", Fnconc, Snconc, 0, MANY, 0,
--- a/src/m/alpha.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/alpha.h	Mon Apr 26 12:48:35 2010 +0000
@@ -41,11 +41,6 @@
 
 #undef WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 
--- a/src/m/amdx86-64.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/amdx86-64.h	Mon Apr 26 12:48:35 2010 +0000
@@ -38,11 +38,6 @@
 
 #undef WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
--- a/src/m/arm.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/arm.h	Mon Apr 26 12:48:35 2010 +0000
@@ -24,16 +24,6 @@
 
 #undef WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  We can't
- * do this on the arm with gcc, since the first 4 args are in registers.  */
-
-#ifdef __GNUC__
-#define NO_ARG_ARRAY
-#else
-#undef NO_ARG_ARRAY
-#endif
-
 #define NO_REMAP
 
 /* armin76@gentoo.org reported that the lgcc_s flag is necessary to
--- a/src/m/hp800.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/hp800.h	Mon Apr 26 12:48:35 2010 +0000
@@ -27,11 +27,6 @@
 
 #define WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
    the bit field into an int.  In other words, if bit fields
    are always unsigned.
--- a/src/m/ia64.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/ia64.h	Mon Apr 26 12:48:35 2010 +0000
@@ -26,11 +26,6 @@
 
 #undef WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
-   group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 
--- a/src/m/ibmrs6000.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/ibmrs6000.h	Mon Apr 26 12:48:35 2010 +0000
@@ -22,11 +22,6 @@
    operating system this machine is likely to run.
    USUAL-OPSYS="aix3-1"  */
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 
--- a/src/m/ibms390.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/ibms390.h	Mon Apr 26 12:48:35 2010 +0000
@@ -27,11 +27,6 @@
 
 #define WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
    the 24-bit bit field into an int.  In other words, if bit fields
    are always unsigned.
--- a/src/m/ibms390x.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/ibms390x.h	Mon Apr 26 12:48:35 2010 +0000
@@ -40,11 +40,6 @@
 
 #define WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Define the type to use.  */
 #define EMACS_INT long
 #define EMACS_UINT unsigned long
--- a/src/m/intel386.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/intel386.h	Mon Apr 26 12:48:35 2010 +0000
@@ -39,11 +39,6 @@
 
 #undef WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-/* #define NO_ARG_ARRAY */
-
 #ifdef USG
 #define TEXT_START 0
 #endif /* USG */
@@ -51,7 +46,6 @@
 #ifdef WINDOWSNT
 #define VIRT_ADDR_VARIES
 #define DATA_START 	get_data_start ()
-#define NO_ARG_ARRAY
 #endif
 
 #ifdef GNU_LINUX
--- a/src/m/iris4d.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/iris4d.h	Mon Apr 26 12:48:35 2010 +0000
@@ -23,11 +23,6 @@
 
 #define WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
    the bit field into an int.  In other words, if bit fields
    are always unsigned.
--- a/src/m/macppc.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/macppc.h	Mon Apr 26 12:48:35 2010 +0000
@@ -22,11 +22,6 @@
 
 #define WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
--- a/src/m/mips.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/mips.h	Mon Apr 26 12:48:35 2010 +0000
@@ -33,11 +33,6 @@
 #define WORDS_BIG_ENDIAN
 #endif
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
    the 24-bit bit field into an int.  In other words, if bit fields
    are always unsigned.
--- a/src/m/sh3.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/sh3.h	Mon Apr 26 12:48:35 2010 +0000
@@ -4,7 +4,5 @@
 # define WORDS_BIG_ENDIAN
 #endif
 
-#define NO_ARG_ARRAY
-
 /* arch-tag: 1b01b84f-f044-4afa-aa4b-caa54ec38966
    (do not change this comment) */
--- a/src/m/sparc.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/sparc.h	Mon Apr 26 12:48:35 2010 +0000
@@ -31,11 +31,6 @@
 
 #define WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* __sparc__ is defined by the compiler by default.  */
 
 /* XINT must explicitly sign-extend
--- a/src/m/template.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/template.h	Mon Apr 26 12:48:35 2010 +0000
@@ -27,11 +27,6 @@
 
 #define WORDS_BIG_ENDIAN
 
-/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
- * group of arguments and treat it as an array of the arguments.  */
-
-#define NO_ARG_ARRAY
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.
    Ones defined so far include m68k and many others */
--- a/src/m/xtensa.h	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/m/xtensa.h	Mon Apr 26 12:48:35 2010 +0000
@@ -2,8 +2,6 @@
 
 Add a license notice if this grows to > 10 lines of code.  */
 
-#define NO_ARG_ARRAY
-
 #ifdef __LITTLE_ENDIAN
 #undef WORDS_BIG_ENDIAN
 #else
--- a/src/xdisp.c	Sun Apr 25 13:11:29 2010 +0000
+++ b/src/xdisp.c	Mon Apr 26 12:48:35 2010 +0000
@@ -5259,6 +5259,33 @@
   ++it->sp;
 }
 
+static void
+iterate_out_of_display_property (it)
+     struct it *it;
+{
+  /* Maybe initialize paragraph direction.  If we are at the beginning
+     of a new paragraph, next_element_from_buffer may not have a
+     chance to do that.  */
+  if (it->bidi_it.first_elt && it->bidi_it.charpos < ZV)
+    bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it);
+  /* prev_stop can be zero, so check against BEGV as well.  */
+  while (it->bidi_it.charpos >= BEGV
+	 && it->prev_stop <= it->bidi_it.charpos
+	 && it->bidi_it.charpos < CHARPOS (it->position))
+    bidi_get_next_char_visually (&it->bidi_it);
+  /* Record the stop_pos we just crossed, for when we cross it
+     back, maybe.  */
+  if (it->bidi_it.charpos > CHARPOS (it->position))
+    it->prev_stop = CHARPOS (it->position);
+  /* If we ended up not where pop_it put us, resync IT's
+     positional members with the bidi iterator. */
+  if (it->bidi_it.charpos != CHARPOS (it->position))
+    {
+      SET_TEXT_POS (it->position,
+		    it->bidi_it.charpos, it->bidi_it.bytepos);
+      it->current.pos = it->position;
+    }
+}
 
 /* Restore IT's settings from IT->stack.  Called, for example, when no
    more overlay strings must be processed, and we return to delivering
@@ -5309,25 +5336,7 @@
 	     determine the paragraph base direction if the overlay we
 	     just processed is at the beginning of a new
 	     paragraph.  */
-	  if (it->bidi_it.first_elt && it->bidi_it.charpos < ZV)
-	    bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it);
-	  /* prev_stop can be zero, so check against BEGV as well.  */
-	  while (it->bidi_it.charpos >= BEGV
-		 && it->prev_stop <= it->bidi_it.charpos
-		 && it->bidi_it.charpos < CHARPOS (it->position))
-	    bidi_get_next_char_visually (&it->bidi_it);
-	  /* Record the stop_pos we just crossed, for when we cross it
-	     back, maybe.  */
-	  if (it->bidi_it.charpos > CHARPOS (it->position))
-	    it->prev_stop = CHARPOS (it->position);
-	  /* If we ended up not where pop_it put us, resync IT's
-	     positional members with the bidi iterator. */
-	  if (it->bidi_it.charpos != CHARPOS (it->position))
-	    {
-	      SET_TEXT_POS (it->position,
-			    it->bidi_it.charpos, it->bidi_it.bytepos);
-	      it->current.pos = it->position;
-	    }
+	  iterate_out_of_display_property (it);
 	}
       break;
     case GET_FROM_STRING:
@@ -17979,9 +17988,8 @@
 	  row_end = it->current;
 	  /* If the character at max_pos+1 is a newline, skip that as
 	     well.  Note that this may skip some invisible text.  */
-	  if (!get_next_display_element (it))
-	    abort ();
-	  if (ITERATOR_AT_END_OF_LINE_P (it))
+	  if (get_next_display_element (it)
+	      && ITERATOR_AT_END_OF_LINE_P (it))
 	    {
 	      set_iterator_to_next (it, 1);
 	      /* Record the position after the newline of a continued