X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/bfab7c6ec74dc55d640ef36f8cb1790a1420f991..ad3e6f4474d2737be89456332319e8efbdb382c4:/src/casefiddle.c diff --git a/src/casefiddle.c b/src/casefiddle.c index 21a587b9a1..30bb457b17 100644 --- a/src/casefiddle.c +++ b/src/casefiddle.c @@ -1,13 +1,13 @@ /* GNU Emacs case conversion functions. Copyright (C) 1985, 1994, 1997, 1998, 1999, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Emacs. -GNU Emacs is free software; you can redistribute it and/or modify +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, 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 @@ -15,12 +15,11 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ +along with GNU Emacs. If not, see . */ #include +#include #include "lisp.h" #include "buffer.h" #include "character.h" @@ -59,6 +58,12 @@ casify_object (flag, obj) return obj; c1 = XFASTINT (obj) & ~flagbits; + /* FIXME: Even if enable-multibyte-characters is nil, we may + manipulate multibyte chars. This means we have a bug for latin-1 + chars since when we receive an int 128-255 we can't tell whether + it's an eight-bit byte or a latin-1 char. */ + if (c1 >= 256) + multibyte = 1; if (! multibyte) MAKE_CHAR_MULTIBYTE (c1); c = DOWNCASE (c1); @@ -86,7 +91,7 @@ casify_object (flag, obj) for (i = 0; i < size; i++) { c = SREF (obj, i); - MAKE_CHAR_MULTIBYTE (c); + MAKE_CHAR_MULTIBYTE (c); c1 = c; if (inword && flag != CASE_CAPITALIZE_UP) c = DOWNCASE (c); @@ -128,7 +133,7 @@ casify_object (flag, obj) bcopy (old_dst, dst, o - old_dst); o = dst + (o - old_dst); } - c = STRING_CHAR_AND_LENGTH (SDATA (obj) + i_byte, 0, len); + c = STRING_CHAR_AND_LENGTH (SDATA (obj) + i_byte, len); if (inword && flag != CASE_CAPITALIZE_UP) c = DOWNCASE (c); else if (!UPPERCASEP (c) @@ -424,7 +429,7 @@ With negative argument, capitalize previous words but do not move. */) void syms_of_casefiddle () { - Qidentity = intern ("identity"); + Qidentity = intern_c_string ("identity"); staticpro (&Qidentity); defsubr (&Supcase); defsubr (&Sdowncase);