Don't clobber match data in utf-8-hfs conversion (bug#41445)
Reported by Ture Pålsson. * lisp/international/ucs-normalize.el (ucs-normalize-hfs-nfd-post-read-conversion) (ucs-normalize-hfs-nfd-pre-write-conversion): Use save-match-data to avoid match data clobber in normalisation. * test/lisp/international/ucs-normalize-tests.el (ucs-normalize-save-match-data): New test.
This commit is contained in:
parent
0fc4989f34
commit
c5cf630ecd
2 changed files with 17 additions and 4 deletions
|
@ -612,14 +612,16 @@ COMPOSITION-PREDICATE will be used to compose region."
|
|||
(defun ucs-normalize-hfs-nfd-post-read-conversion (len)
|
||||
(save-excursion
|
||||
(save-restriction
|
||||
(narrow-to-region (point) (+ (point) len))
|
||||
(ucs-normalize-HFS-NFC-region (point-min) (point-max))
|
||||
(- (point-max) (point-min)))))
|
||||
(save-match-data
|
||||
(narrow-to-region (point) (+ (point) len))
|
||||
(ucs-normalize-HFS-NFC-region (point-min) (point-max))
|
||||
(- (point-max) (point-min))))))
|
||||
|
||||
;; Pre-write conversion for `utf-8-hfs'.
|
||||
;; _from and _to are legacy arguments (see `define-coding-system').
|
||||
(defun ucs-normalize-hfs-nfd-pre-write-conversion (_from _to)
|
||||
(ucs-normalize-HFS-NFD-region (point-min) (point-max)))
|
||||
(save-match-data
|
||||
(ucs-normalize-HFS-NFD-region (point-min) (point-max))))
|
||||
|
||||
;;; coding-system definition
|
||||
(define-coding-system 'utf-8-hfs
|
||||
|
|
|
@ -341,4 +341,15 @@ implementations:
|
|||
(display-buffer (current-buffer)))
|
||||
(message "No changes to failing lines needed"))))
|
||||
|
||||
(ert-deftest ucs-normalize-save-match-data ()
|
||||
"Verify that match data isn't clobbered (bug#41445)"
|
||||
(string-match (rx (+ digit)) "a47b")
|
||||
(should (equal (match-data t) '(1 3)))
|
||||
(should (equal
|
||||
(decode-coding-string
|
||||
(encode-coding-string "Käsesoßenrührlöffel" 'utf-8-hfs)
|
||||
'utf-8-hfs)
|
||||
"Käsesoßenrührlöffel"))
|
||||
(should (equal (match-data t) '(1 3))))
|
||||
|
||||
;;; ucs-normalize-tests.el ends here
|
||||
|
|
Loading…
Add table
Reference in a new issue