gpgscm: Guard use of tagged expressions.
authorJustus Winter <justus@g10code.com>
Fri, 17 Feb 2017 09:43:20 +0000 (10:43 +0100)
committerJustus Winter <justus@g10code.com>
Fri, 17 Feb 2017 09:43:20 +0000 (10:43 +0100)
* tests/gpgscm/init.scm (vm-history-print): Check that the tag added
to expressions when parsing source files matches the expected format.
* tests/gpgscm/lib.scm (assert): Likewise.
--

This makes the error handling more robust.  We saw the assumption
about the format of the tags being violated on one build system, and
it obscured the view on the underlying problem.

Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/init.scm
tests/gpgscm/lib.scm

index 83261b0..87d3c88 100644 (file)
        (display n)
        (display ": ")
        (let ((tag (get-tag f)))
-         (unless (null? tag)
-                 (display (basename (car tag)))
-                 (display ":")
-                 (display (+ 1 (cdr tag)))
-                 (display ": ")))
+         (when (and (pair? tag) (string? (car tag)) (number? (cdr tag)))
+               (display (basename (car tag)))
+               (display ":")
+               (display (+ 1 (cdr tag)))
+               (display ": ")))
        (write f))
        (newline)
        (loop (+ n 1) skip (cdr frames))))))
index 6959aa4..2cfe725 100644 (file)
@@ -20,7 +20,7 @@
 (macro (assert form)
   (let ((tag (get-tag form)))
     `(if (not ,(cadr form))
-        (throw ,(if (pair? tag)
+        (throw ,(if (and (pair? tag) (string? (car tag)) (number? (cdr tag)))
                     `(string-append ,(car tag) ":"
                                     ,(number->string (+ 1 (cdr tag)))
                                     ": Assertion failed: ")