diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/search.c | 16 | ||||
| -rw-r--r-- | src/thread.h | 5 |
2 files changed, 5 insertions, 16 deletions
diff --git a/src/search.c b/src/search.c index e55aa767f11..e15e2b94e5f 100644 --- a/src/search.c +++ b/src/search.c | |||
| @@ -3059,18 +3059,14 @@ If optional arg RESEAT is non-nil, make markers on LIST point nowhere. */) | |||
| 3059 | static void | 3059 | static void |
| 3060 | save_search_regs (void) | 3060 | save_search_regs (void) |
| 3061 | { | 3061 | { |
| 3062 | if (!search_regs_saved) | 3062 | if (saved_search_regs.num_regs == 0) |
| 3063 | { | 3063 | { |
| 3064 | saved_search_regs.num_regs = search_regs.num_regs; | 3064 | saved_search_regs = search_regs; |
| 3065 | saved_search_regs.start = search_regs.start; | ||
| 3066 | saved_search_regs.end = search_regs.end; | ||
| 3067 | saved_last_thing_searched = last_thing_searched; | 3065 | saved_last_thing_searched = last_thing_searched; |
| 3068 | last_thing_searched = Qnil; | 3066 | last_thing_searched = Qnil; |
| 3069 | search_regs.num_regs = 0; | 3067 | search_regs.num_regs = 0; |
| 3070 | search_regs.start = 0; | 3068 | search_regs.start = 0; |
| 3071 | search_regs.end = 0; | 3069 | search_regs.end = 0; |
| 3072 | |||
| 3073 | search_regs_saved = 1; | ||
| 3074 | } | 3070 | } |
| 3075 | } | 3071 | } |
| 3076 | 3072 | ||
| @@ -3078,19 +3074,17 @@ save_search_regs (void) | |||
| 3078 | void | 3074 | void |
| 3079 | restore_search_regs (void) | 3075 | restore_search_regs (void) |
| 3080 | { | 3076 | { |
| 3081 | if (search_regs_saved) | 3077 | if (saved_search_regs.num_regs != 0) |
| 3082 | { | 3078 | { |
| 3083 | if (search_regs.num_regs > 0) | 3079 | if (search_regs.num_regs > 0) |
| 3084 | { | 3080 | { |
| 3085 | xfree (search_regs.start); | 3081 | xfree (search_regs.start); |
| 3086 | xfree (search_regs.end); | 3082 | xfree (search_regs.end); |
| 3087 | } | 3083 | } |
| 3088 | search_regs.num_regs = saved_search_regs.num_regs; | 3084 | search_regs = saved_search_regs; |
| 3089 | search_regs.start = saved_search_regs.start; | ||
| 3090 | search_regs.end = saved_search_regs.end; | ||
| 3091 | last_thing_searched = saved_last_thing_searched; | 3085 | last_thing_searched = saved_last_thing_searched; |
| 3092 | saved_last_thing_searched = Qnil; | 3086 | saved_last_thing_searched = Qnil; |
| 3093 | search_regs_saved = 0; | 3087 | saved_search_regs.num_regs = 0; |
| 3094 | } | 3088 | } |
| 3095 | } | 3089 | } |
| 3096 | 3090 | ||
diff --git a/src/thread.h b/src/thread.h index 1856fddf4cd..50f8f5cbe0a 100644 --- a/src/thread.h +++ b/src/thread.h | |||
| @@ -131,11 +131,6 @@ struct thread_state | |||
| 131 | struct re_registers m_search_regs; | 131 | struct re_registers m_search_regs; |
| 132 | #define search_regs (current_thread->m_search_regs) | 132 | #define search_regs (current_thread->m_search_regs) |
| 133 | 133 | ||
| 134 | /* If non-zero the match data have been saved in saved_search_regs | ||
| 135 | during the execution of a sentinel or filter. */ | ||
| 136 | bool m_search_regs_saved; | ||
| 137 | #define search_regs_saved (current_thread->m_search_regs_saved) | ||
| 138 | |||
| 139 | struct re_registers m_saved_search_regs; | 134 | struct re_registers m_saved_search_regs; |
| 140 | #define saved_search_regs (current_thread->m_saved_search_regs) | 135 | #define saved_search_regs (current_thread->m_saved_search_regs) |
| 141 | 136 | ||