]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/editfns.c (region_limit): Clip to narrowing.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 28 Jun 2012 19:09:41 +0000 (15:09 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 28 Jun 2012 19:09:41 +0000 (15:09 -0400)
Fixes: debbugs:11770
src/ChangeLog
src/alloc.c
src/editfns.c
src/keyboard.c
src/w32fns.c

index 262ed2ce4d67ea2f715dc8ceb4a29046d48b0018..241658ac33aa625cfa2fdf32b54597cd18628970 100644 (file)
@@ -1,3 +1,7 @@
+2012-06-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * editfns.c (region_limit): Clip to narrowing (bug#11770).
+
 2012-06-28  Paul Eggert  <eggert@cs.ucla.edu>
 
        Avoid integer overflow on scroll-left and scroll-right.
index 2570364e6c157ce27249823d99f259e51c48b7c7..bb57d46ee03f1bc4e13264ba8779fd0b0326f4e7 100644 (file)
@@ -5384,7 +5384,8 @@ See Info node `(elisp)Garbage Collection'.  */)
           turned off in that buffer.  Calling truncate_undo_list on
           Qt tends to return NULL, which effectively turns undo back on.
           So don't call truncate_undo_list if undo_list is Qt.  */
-       if (! NILP (nextb->BUFFER_INTERNAL_FIELD (name)) && ! EQ (nextb->BUFFER_INTERNAL_FIELD (undo_list), Qt))
+       if (! NILP (nextb->BUFFER_INTERNAL_FIELD (name))
+           && ! EQ (nextb->BUFFER_INTERNAL_FIELD (undo_list), Qt))
          truncate_undo_list (nextb);
 
        /* Shrink buffer gaps, but skip indirect and dead buffers.  */
index 63e77004f8bd2976c6e7c18711719060a70e69af..e8f55c9427bc365b0c34b021a4a7a3e2dd3d1071 100644 (file)
@@ -283,8 +283,12 @@ region_limit (int beginningp)
     error ("The mark is not set now, so there is no region");
 
   if ((PT < XFASTINT (m)) == (beginningp != 0))
-    m = make_number (PT);
-  return m;
+    return make_number (PT);
+  else
+    { /* Clip to the current narrowing (bug#11770).  */
+      ptrdiff_t mark = XFASTINT (m);
+      return make_number (mark < BEGV ? BEGV : mark > ZV ? ZV : m);
+    }
 }
 
 DEFUN ("region-beginning", Fregion_beginning, Sregion_beginning, 0, 0, 0,
index c76e015a6f4275e458db1476de7fafbcbe60c18c..fccef038f8a60ea8f9039fd511d8c055569fbb8e 100644 (file)
@@ -3854,7 +3854,7 @@ kbd_buffer_get_event (KBOARD **kbp,
          EMACS_TIME duration;
          EMACS_GET_TIME (duration);
          if (EMACS_TIME_GE (duration, *end_time))
-           return Qnil;        /* finished waiting */
+           return Qnil;        /* Finished waiting.  */
          else
            {
              EMACS_SUB_TIME (duration, *end_time, duration);
@@ -7309,8 +7309,8 @@ handle_user_signal (int sig)
   for (p = user_signals; p; p = p->next)
     if (p->sig == sig)
       {
-        if (special_event_name &&
-            strcmp (special_event_name, p->name) == 0)
+        if (special_event_name
+           && strcmp (special_event_name, p->name) == 0)
           {
             /* Enter the debugger in many ways.  */
             debug_on_next_call = 1;
index acd42792b9ba20d49eb97a98654f4523a11e46bf..dd81e24fbee74de08652cd62d2252dd3067bbfc1 100644 (file)
@@ -2509,19 +2509,19 @@ post_character_message (HWND hwnd, UINT msg,
      woken up if blocked in sys_select, but we do NOT want to post
      the quit_char message itself (because it will usually be as if
      the user had typed quit_char twice).  Instead, we post a dummy
-     message that has no particular effect. */
+     message that has no particular effect.  */
   {
     int c = wParam;
     if (isalpha (c) && wmsg.dwModifiers == ctrl_modifier)
       c = make_ctrl_char (c) & 0377;
     if (c == quit_char
-       || (wmsg.dwModifiers == 0 &&
-           w32_quit_key && wParam == w32_quit_key))
+       || (wmsg.dwModifiers == 0
+           && w32_quit_key && wParam == w32_quit_key))
       {
        Vquit_flag = Qt;
 
        /* The choice of message is somewhat arbitrary, as long as
-          the main thread handler just ignores it. */
+          the main thread handler just ignores it.  */
        msg = WM_NULL;
 
        /* Interrupt any blocking system calls.  */