Subject: bug#65379: 29.1.50; isearch started through `isearch-resume' incorrectly moves point after failure

From: Juri Linkov <[email-masked]>
Date: Sun, 20 Aug 2023 20:37:28 +0300

close 65379 30.0.50
thanks

> One of the more arcane features of isearch ... I do not actually
> use that, but I modeled one of my personal isearch functions after
> `isearch-resume´ and came across this issue.

Thanks for the bug report.  I don't use `isearch-resume',
so never noticed this bug.

> I'm not an isearch expert, but I think the remedy should be to add a
> call to `isearch-push-state' before the call to `isearch-update' in
> function `isearch-resume':
>
> diff --git a/lisp/isearch.el b/lisp/isearch.el
> index 3d2bbda4975..14f335f4cea 100644
> --- a/lisp/isearch.el
> +++ b/lisp/isearch.el
> @@ -4640,6 +4640,7 @@ isearch-resume
>  	isearch-message message
>  	isearch-case-fold-search case-fold)
>    (isearch-search)
> +  (isearch-push-state)
>    (isearch-update))
>
> At least that helps preventing the incorrect behavior, and most other
> calls to `isearch-update' have a preceeding call to `isearch-push-state'
> in isearch.el.  But that doesn't mean anything, of course, so somebody
> else should review that.

You are absolutely right.  This is the correct way to fix it.
Now pushed to master.  Thanks for the patch.