]> git.eshelyaron.com Git - emacs.git/commitdiff
bindat (strz): Fix wrong-type-argument error when unpacking
authorRichard Hansen <rhansen@rhansen.org>
Sun, 29 May 2022 22:09:08 +0000 (18:09 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 2 Jun 2022 02:24:05 +0000 (22:24 -0400)
* lisp/emacs-lisp/bindat.el (strz): Fix (wrong-type-argument
number-or-marker-p nil) error when unpacking a strz with
unspecified (variable) length.
* test/lisp/emacs-lisp/bindat-tests.el (strz): Mark test as passing.

lisp/emacs-lisp/bindat.el
test/lisp/emacs-lisp/bindat-tests.el

index e597dd62479a8a0cd87db8710a7cd3b6af9f4952..0725b677cffc8c5c0dfcf36930cf557149ce5d44 100644 (file)
     (if (stringp s) s
       (apply #'unibyte-string s))))
 
-(defun bindat--unpack-strz (len)
+(defun bindat--unpack-strz (&optional len)
   (let ((i 0) s)
     (while (and (if len (< i len) t) (/= (aref bindat-raw (+ bindat-idx i)) 0))
       (setq i (1+ i)))
     (setq s (substring bindat-raw bindat-idx (+ bindat-idx i)))
-    (setq bindat-idx (+ bindat-idx len))
+    (setq bindat-idx (+ bindat-idx (or len (1+ i))))
     (if (stringp s) s
       (apply #'unibyte-string s))))
 
index cb7b6fe1c203ce30794a0455abeccd956890c9d6..b3850f14f17edda0c5335849e873c1d88ee61f8a 100644 (file)
     (should (equal (bindat-pack spec "abc") "abc\0")))
 
   (ert-deftest bindat-test--strz-varlen-unpack ()
-    :expected-result :failed
     ;; There is no test for unpacking a string without a null
     ;; terminator because such packed strings cannot be produced from
     ;; the spec (packing "a" should produce "a\0", not "a").