X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/b14aac08d08c5f17dc27e8d2cc1cc76b33e92c62..db69b0cde386ed1e4cc928f5beb916107ee9fc88:/src/ChangeLog diff --git a/src/ChangeLog b/src/ChangeLog index aa21fb17c8..91d5069d55 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,89 @@ 2011-03-15 Paul Eggert + Use functions, not macros, for up- and down-casing (Bug#8254). + * buffer.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP): + (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Remove. All callers changed + to use the following functions instead of these macros. + (downcase): Adjust to lack of DOWNCASE_TABLE. Return int, not + EMACS_INT, since callers assume the returned value fits in int. + (upcase1): Likewise, for UPCASE_TABLE. + (uppercasep, lowercasep, upcase): New static inline functions. + * editfns.c (Fchar_equal): Remove no-longer-needed workaround for + the race-condition problem in the old DOWNCASE. + + * regex.c (CHARSET_LOOKUP_RANGE_TABLE_RAW, POP_FAILURE_REG_OR_COUNT): + Rename locals to avoid shadowing. + (regex_compile, re_match_2_internal): Move locals to avoid shadowing. + (regex_compile, re_search_2, re_match_2_internal): + Remove unused local vars. + (FREE_VAR): Rewrite so as not to use empty "else", + which gcc can warn about. + (regex_compile, re_match_2_internal): Mark locals as initialized. + (RETALLOC_IF): Define only if needed. + (WORDCHAR_P): Likewise. This one is never needed, but is used + only in a comment talking about a compiler bug, so put inside + the #if 0 of that comment. + (CHARSET_LOOKUP_BITMAP, FAIL_STACK_FULL, RESET_FAIL_STACK): + (PUSH_FAILURE_ELT, BUF_PUSH_3, STOP_ADDR_VSTRING): + Remove; unused. + + * search.c (boyer_moore): Rename locals to avoid shadowing. + * character.h (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE): Likewise. + + * search.c (simple_search): Remove unused var. + + * dired.c (compile_pattern): Move decl from here ... + * lisp.h: ... to here, so that it can be checked. + (struct re_registers): New forward decl. + + * character.h (INC_POS, DEC_POS): Rename locals to avoid shadowing. + + * indent.c (MULTIBYTE_BYTES_WIDTH): New args bytes, width. + All uses changed. + (MULTIBYTE_BYTES_WIDTH, scan_for_column, compute_motion): + Rename locals to avoid shadowing. + (Fvertical_motion): Mark locals as initialized. + + * casefiddle.c (casify_object, casify_region): Now static. + (casify_region): Mark local as initialized. + + * cmds.c (internal_self_insert): Rename local to avoid shadowing. + + * lisp.h (GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR, GCPRO5_VAR, GCPRO6_VAR): + New macros, so that the caller can use some names other than + gcpro1, gcpro2, etc. + (GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6): Reimplement in terms + of the new macros. + (GCPRO1_VAR, UNGCPRO_VAR): Change the meaning of the second + argument, for consistency with GCPRO2_VAR, etc: it is now the + prefix of the variable, not the variable itself. All uses + changed. + * dired.c (directory_files_internal, file_name_completion): + Rename locals to avoid shadowing. + + Fix a race condition diagnosed by gcc -Wsequence-point (Bug#8254). + An expression of the form (DOWNCASE (x) == DOWNCASE (y)), found in + dired.c's scmp function, had undefined behavior. + * lisp.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP): + (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Move from here ... + * buffer.h: ... to here, because these macros use current_buffer, + and the new implementation with inline functions needs to have + current_buffer in scope now, rather than later when the macros + are used. + (downcase, upcase1): New static inline functions. + (DOWNCASE, UPCASE1): Reimplement using these functions. + This avoids undefined behavior in expressions like + DOWNCASE (x) == DOWNCASE (y), which previously suffered + from race conditions in accessing the global variables + case_temp1 and case_temp2. + * casetab.c (case_temp1, case_temp2): Remove; no longer needed. + * lisp.h (case_temp1, case_temp2): Remove their decls. + * character.h (ASCII_CHAR_P): Move from here ... + * lisp.h: ... to here, so that the inline functions mentioned + above can use them. + + * dired.c (directory_files_internal_unwind): Now static. + * fileio.c (file_name_as_directory, directory_file_name): (barf_or_query_if_file_exists, auto_save_error, auto_save_1): Now static. @@ -9,6 +93,8 @@ (Fmake_directory_internal, Fread_file_name): Remove unused vars. (Ffile_selinux_context, Fset_file_selinux_context): Fix pointer signedness issues. + (Fset_file_times, Finsert_file_contents, auto_save_error): + Rename locals to avoid shadowing. * minibuf.c (choose_minibuf_frame_1): Now static. (Ftry_completion, Fall_completions): Rename or remove locals