From: Richard Hansen Date: Sun, 29 May 2022 03:10:44 +0000 (-0400) Subject: bindat (strz): Fix off-by-one bug in computed length X-Git-Tag: emacs-29.0.90~1910^2~298 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e66d6b379345063900eb3e99db6367c69a860cdf;p=emacs.git bindat (strz): Fix off-by-one bug in computed length * lisp/emacs-lisp/bindat.el (strz): Include null terminator when computing packed string length. * test/lisp/emacs-lisp/bindat-tests.el (strz): Mark tests as passing. --- diff --git a/lisp/emacs-lisp/bindat.el b/lisp/emacs-lisp/bindat.el index c6d64975eca..b236e47e5b9 100644 --- a/lisp/emacs-lisp/bindat.el +++ b/lisp/emacs-lisp/bindat.el @@ -688,9 +688,9 @@ is the name of a variable that will hold the value we need to pack.") ('unpack `(bindat--unpack-strz ,len)) (`(length ,val) `(cl-incf bindat-idx ,(cond - ((null len) `(length ,val)) + ((null len) `(1+ (length ,val))) ((numberp len) len) - (t `(or ,len (length ,val)))))) + (t `(or ,len (1+ (length ,val))))))) (`(pack . ,args) (macroexp-let2 nil len len `(if ,len diff --git a/test/lisp/emacs-lisp/bindat-tests.el b/test/lisp/emacs-lisp/bindat-tests.el index c8545a216be..cb7b6fe1c20 100644 --- a/test/lisp/emacs-lisp/bindat-tests.el +++ b/test/lisp/emacs-lisp/bindat-tests.el @@ -191,12 +191,10 @@ (let ((spec (bindat-type strz))) (ert-deftest bindat-test--strz-varlen-len () - :expected-result :failed (should (equal (bindat-length spec "") 1)) (should (equal (bindat-length spec "abc") 4))) (ert-deftest bindat-test--strz-varlen-pack () - :expected-result :failed (should (equal (bindat-pack spec "") "\0")) (should (equal (bindat-pack spec "abc") "abc\0")))