diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/category.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/category.c b/src/category.c index e6c180f29c1..4e89c98a027 100644 --- a/src/category.c +++ b/src/category.c | |||
| @@ -364,18 +364,15 @@ then delete CATEGORY from the category set instead of adding it. */) | |||
| 364 | while (start <= end) | 364 | while (start <= end) |
| 365 | { | 365 | { |
| 366 | category_set = char_table_ref_and_range (table, start, &from, &to); | 366 | category_set = char_table_ref_and_range (table, start, &from, &to); |
| 367 | if (from < start || to > end) | 367 | if (CATEGORY_MEMBER (category, category_set) != NILP (reset)) |
| 368 | category_set = Fcopy_sequence (category_set); | ||
| 369 | SET_CATEGORY_SET (category_set, category, set_value); | ||
| 370 | if (from < start) | ||
| 371 | { | 368 | { |
| 369 | category_set = Fcopy_sequence (category_set); | ||
| 370 | SET_CATEGORY_SET (category_set, category, set_value); | ||
| 372 | if (to > end) | 371 | if (to > end) |
| 373 | char_table_set_range (table, start, end, category_set); | 372 | char_table_set_range (table, start, end, category_set); |
| 374 | else | 373 | else |
| 375 | char_table_set_range (table, start, to, category_set); | 374 | char_table_set_range (table, start, to, category_set); |
| 376 | } | 375 | } |
| 377 | else if (to > end) | ||
| 378 | char_table_set_range (table, start, end, category_set); | ||
| 379 | start = to + 1; | 376 | start = to + 1; |
| 380 | } | 377 | } |
| 381 | return Qnil; | 378 | return Qnil; |