OK, after some debugging it looks like the primary culprit is the assignment of source-file from buffer-file-name. A quick patch seems to fix it, but I can definitely see a pattern here if org functions are trying to get the filename of the current buffer (I can submit an official patch if this looks right):
modified lisp/ob-tangle.el
@@ -269,7 +269,7 @@ matching a regular expression."
(or (cdr (assq :tangle (nth 2 (org-babel-get-src-block-info 'no-eval))))
(user-error "Point is not in a source code block"))))
path-collector
- (source-file buffer-file-name))
+ (source-file (buffer-file-name (buffer-base-buffer))))
(mapc ;; map over file-names
(lambda (by-fn)
(let ((file-name (car by-fn)))
There are 339 uses of buffer-file-name that I can find, but most are just bare (buffer-file-name). Are there any other cases besides indirect buffers that we would need to handle? Would it be worth creating a new function "org-buffer-file-name" that could properly handle indirect buffers and any other special cases, or is it just a search and replace throughout?
Cheers,
Derek