From 0b4e35453874db0acf046e46c571cdef5f39f59a Mon Sep 17 00:00:00 2001 From: Tom Gillespie Date: Mon, 19 Dec 2022 21:25:02 -0500 Subject: [PATCH] Fix missing null check for tangle links during export * lisp/ob-tangle.el (org-babel-tangle--unbracketed-link): Add the let bound variable l to the and statement to prevent l from being passed to `string-match' in the event that it is nil. When tangling nested noweb blocks during export it is possible for the results of `org-store-link' to return nil. This commit ensures that the value returned for l is only passed to `string-match' when it is non-nil, avoiding a `wrong-type-argument' (stringp nil) error. Handling of comments and nesting of babel blocks is known to have issues. The bug is from 8a781d35dc68f20fa2a5546c98ba3d9b77ee3cda where new code was introduced to obtain the value for bare which was not present in early code. I'm guessing that the bug appears now because `string-match' is called on l (aka link) at a point in time when it was never previously called and it was thus masked because in the old version it was impossible to call `string-match' when `link' was nil because another variable was always nil, masking the issue. --- lisp/ob-tangle.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el index bd17bda32..fd6b6f3b9 100644 --- a/lisp/ob-tangle.el +++ b/lisp/ob-tangle.el @@ -500,7 +500,8 @@ The PARAMS are the 3rd element of the info for the same src block." (cl-letf (((symbol-function 'org-store-link-functions) (lambda () nil))) (org-store-link nil)))) - (bare (and (string-match org-link-bracket-re l) + (bare (and l + (string-match org-link-bracket-re l) (match-string 1 l)))) (when bare (if (and org-babel-tangle-use-relative-file-links -- 2.38.2