LibreOffice Writer 6.0.6.2 データベースの交換 ファイルの種類

LibreOffice Writer
6.0.6.2 において
「データベースの交換」で
表計算(.ods)やCSV ファイルを使用すると
「差し込み印刷」画面までは順調にいくのですが
いざ、出力となると
クラッシュします

ファイルを Base で読み込み
( .odb )にすると、問題なく作成できます

6.2alpha1 再現しない

Writer
[編集]→「データベースの交換」
[データベースの交換]ダイアログ
[検索]クリック
表計算ファイル(.ods)選択
「使用できるデータベース」欄に
新規に表示される
[閉じる]クリック
[表示]→「データソース」クリック
今回登録したデータベースの 田 をクリック
「テーブル」の 田 をクリック
「テーブル名」を選択
「見出し」を Writer 本文へドラッグ

[ファイル]→「印刷」クリック
【 ドキュメントにアドレスデータベースのフィールドが含まれています。
差し込み印刷を実行しますか? 】
[はい]をクリック

[差し込み印刷]ダイアログ
「出力」欄
「ファイル」選択
[OK]クリック
[名前を付けて保存]ダイアログ
[保存]クリック

これでクラッシュします

あ、すまん、「差し込み印刷」の部分こっちの不注意で読み落とした。再現した。

何故かはわからないが、ここでコケてるっぽい。
https://opengrok.libreoffice.org/xref/core/sw/source/uibase/dbui/dbmgr.cxx?r=977ccf4b#1584
多分自分これ以上調査しないだろうなあ…この辺の構造体の設計意図とか理解するの面倒臭がるから。
追記:
https://opengrok.libreoffice.org/xref/core/dbaccess/source/core/api/RowSetBase.cxx?r=ccb2a1f6#1281
m_rBHelper.bDisposedの値がtrueになっているっぽい。原因は不明。

https://bugs.documentfoundation.org/show_bug.cgi?id=121951

あくまでエンドユーザー視点ではなくプログラマ視点の話。エンドユーザー的には解決策になってない。

以下3行をコメントアウトして
https://opengrok.libreoffice.org/xref/core/dbaccess/source/ui/browser/unodatbr.cxx?r=6311f7ff#2973

そして、ここの分岐を通らないようにする
https://opengrok.libreoffice.org/xref/core/dbaccess/source/ui/browser/unodatbr.cxx?r=6311f7ff#2982
つまり以下、デフォルト引数に頼らないようにして
https://opengrok.libreoffice.org/xref/core/dbaccess/source/ui/browser/unodatbr.cxx?r=6311f7ff#3708
https://opengrok.libreoffice.org/xref/core/dbaccess/source/ui/inc/unodatbr.hxx?r=6311f7ff#300

以下3行をコメントアウト
https://opengrok.libreoffice.org/xref/core/dbaccess/source/ui/browser/unodatbr.cxx?r=6311f7ff#3731

すると
FPreaparedStatement::closeあたりを走らなくなった
(変更前のログ取るの面倒なので正確には覚えてない)

結果としてエラーが出ることなく、差し込み印刷できるようになった。ただこの変更でメモリリークが起きないかどうかは知らない。エラーの原因になるメンバの変更をとにかく抑えることだけを意識したものだから。

あ、そうそう、余談だが、odsをデータベースの交換で指定した場合、実はドキュメント(たぶん昔のマイドキュメント,俺の環境はWindows 10)にodbファイルを作るみたい。