JDimproved / JDim

2ch browser for linux
https://jdimproved.github.io/JDim/
GNU General Public License v2.0
46 stars 11 forks source link

先頭に空行があるレスを5chのスレに書き込んだときは書き込みマークが付かない #1220

Closed ma8ma closed 1 year ago

ma8ma commented 1 year ago

先頭に空行があるレスを5chのスレに書き込んだときは書き込みマークが付かない

バグの説明

スレに書き込みをしたとき書き込みマークが付かないことがあったと報告がありました。

https://next2ch.net/test/read.cgi/linux/1654053581/112-113

検証したところ先頭に空行があるレスを5ch.netのスレに書き込んだときは書き込みマークが付きませんでした。

再現の方法

  1. 5ch.netのスレを開く
  2. 書き込みビューを開いて先頭に空の行があるレスを入力する

    
    あいうえお
    かきくけこ

    ソースコードの文字列リテラルで表現すると \nあいうえお\nかきくけこ

  3. 書き込んでスレを再読込みする
  4. 書き込んだレスに書き込みマークが付かない

やりたかったこと・期待する結果

先頭に空行があるレスを書き込んだときも書き込みマークが付く

スクリーンショット

なし

動作環境

[バージョン] JDim 0.10.1-20230806(git:a6bb171816)
[ディストリ ] Ubuntu 23.04 (x86_64)
[パッケージ] バイナリ/ソース( <配布元> )
[ DE/WM ] KDE
[ gtkmm  ] 3.24.7
[ glibmm  ] 2.66.6
[ TLS lib ] GnuTLS 3.7.8
[オプション ] '--with-alsa''--with-pangolayout'
[ そ の 他 ]

追加の情報

ローカルにキャッシュされたDATファイルを見ると先頭の空行はありませんでした。

再現にある書き込みをDATにしたときの例 (日付とIDはダミー)

名無しさん@お腹いっぱい。<>sage<>2023/08/11(金) 99:99:99.99 ID:???<> あいうえお <br> かきくけこ <>

また、next2ch.netに先頭に空行があるレスを書き込んだときは先頭の空行がDATに反映されておりサイトによって扱いが違うようです。

ma8ma commented 1 year ago

https://github.com/JDimproved/JDim/blob/a6bb171816528092bd5b56211d3262816f506c86/src/message/logitem.h#L58-L65

レスと書き込み内容の比較は、(1)先頭部分を簡易チェック、(2)先頭が一致したら全文を比較の順序で処理されます。 比較で使用する書き込み入力データはバッファに保存する前にDATのレス本文と比較しやすい形式に変換されます。

書き込み入力のうち全文比較に使われるテキストデータは先頭と末尾からASCIIの空白と改行文字が取り除かれます。 しかし、先頭部分の簡易チェックで使われるテキストデータは先頭にあるASCIIの改行文字が取り除かれないためデータの不一致が発生したようです。

mtasaka commented 1 year ago

ちょっと上でいいかは分りませんが、一先ずpr出しておきました。