In previous patch (isearch_3.patch) the variables are not restored because they were bind to the same symbol name, and multi-isearch-end will set them to nil. In addition, multi-isearch-end need to be added again to isearch-mode-end-hook, otherwise, even after exiting with C-g, C-s will start a multisearch instead of a normal isearch in the current buffer. See attached patch: isearch_4.patch