/* String search routines for GNU Emacs.
-Copyright (C) 1985-1987, 1993-1994, 1997-1999, 2001-2015 Free Software
+Copyright (C) 1985-1987, 1993-1994, 1997-1999, 2001-2016 Free Software
Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
#include <config.h>
#include "lisp.h"
-#include "category.h"
#include "character.h"
#include "buffer.h"
#include "syntax.h"
#include "charset.h"
#include "region-cache.h"
-#include "commands.h"
#include "blockinput.h"
#include "intervals.h"
start, &next_change);
if (result)
{
+ /* When the cache revalidation is deferred,
+ next-change might point beyond ZV, which will
+ cause assertion violation in CHAR_TO_BYTE below.
+ Limit next_change to ZV to avoid that. */
+ if (next_change > ZV)
+ next_change = ZV;
start = next_change;
lim1 = next_change = end;
}
if (case_action == all_caps)
Fupcase_region (make_number (search_regs.start[sub]),
- make_number (newpoint));
+ make_number (newpoint),
+ Qnil);
else if (case_action == cap_initial)
Fupcase_initials_region (make_number (search_regs.start[sub]),
make_number (newpoint));
regexp.
Value is nil if SUBEXPth pair didn't match, or there were less than
SUBEXP pairs.
-Zero means the entire text matched by the whole regexp or whole string. */)
+Zero means the entire text matched by the whole regexp or whole string.
+
+Return value is undefined if the last search failed. */)
(Lisp_Object subexp)
{
return match_limit (subexp, 1);
regexp.
Value is nil if SUBEXPth pair didn't match, or there were less than
SUBEXP pairs.
-Zero means the entire text matched by the whole regexp or whole string. */)
+Zero means the entire text matched by the whole regexp or whole string.
+
+Return value is undefined if the last search failed. */)
(Lisp_Object subexp)
{
return match_limit (subexp, 0);
}
DEFUN ("match-data", Fmatch_data, Smatch_data, 0, 3, 0,
- doc: /* Return a list containing all info on what the last search matched.
+ doc: /* Return a list describing what the last search matched.
Element 2N is `(match-beginning N)'; element 2N + 1 is `(match-end N)'.
All the elements are markers or nil (nil if the Nth pair didn't match)
if the last match was on a buffer; integers or nil if a string was matched.
Use `set-match-data' to reinstate the data in this list.
If INTEGERS (the optional first argument) is non-nil, always use
-integers \(rather than markers) to represent buffer positions. In
+integers (rather than markers) to represent buffer positions. In
this case, and if the last match was in a buffer, the buffer will get
stored as one additional element at the end of the list.