diff options
Diffstat (limited to 'src/ChangeLog')
| -rw-r--r-- | src/ChangeLog | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 7468af4c725..7e873e3d85d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,26 @@ | |||
| 1 | 2011-03-15 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-03-15 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | Fix a race condition diagnosed by gcc -Wsequence-point (Bug#8254). | ||
| 4 | An expression of the form (DOWNCASE (x) == DOWNCASE (y)), found in | ||
| 5 | dired.c's scmp function, had undefined behavior. | ||
| 6 | * lisp.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP): | ||
| 7 | (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Move from here ... | ||
| 8 | * buffer.h: ... to here, because these macros use current_buffer, | ||
| 9 | and the new implementation with inline functions needs to have | ||
| 10 | current_buffer in scope now, rather than later when the macros | ||
| 11 | are used. | ||
| 12 | (downcase, upcase1): New static inline functions. | ||
| 13 | (DOWNCASE, UPCASE1): Reimplement using these functions. | ||
| 14 | This avoids undefined behavior in expressions like | ||
| 15 | DOWNCASE (x) == DOWNCASE (y), which previously suffered | ||
| 16 | from race conditions in accessing the global variables | ||
| 17 | case_temp1 and case_temp2. | ||
| 18 | * casetab.c (case_temp1, case_temp2): Remove; no longer needed. | ||
| 19 | * lisp.h (case_temp1, case_temp2): Remove their decls. | ||
| 20 | * character.h (ASCII_CHAR_P): Move from here ... | ||
| 21 | * lisp.h: ... to here, so that the inline functions mentioned | ||
| 22 | above can use them. | ||
| 23 | |||
| 3 | * dired.c (directory_files_internal_unwind): Now static. | 24 | * dired.c (directory_files_internal_unwind): Now static. |
| 4 | 25 | ||
| 5 | * fileio.c (file_name_as_directory, directory_file_name): | 26 | * fileio.c (file_name_as_directory, directory_file_name): |