プロジェクト

全般

プロフィール

バグ #637

完了

つぶやき中のURLのt.coが展開されないツイートがある

Izumi Tsutsui さんが約10年前に追加. ほぼ10年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
ブランチ:
クラッシュする:

説明

https://twitter.com/ph_toei/status/429203799404593152
のツイートを mikutter 0.2.2.1476 で表示すると

  • & が "& amp;" のままで表示される
  • URLの t.co が展開されない
  • URLの下線が引かれない(リンク自体はクリックできる)

という状態になってしまいます。

URL、&、ハッシュタグ等々のエンティティが含まれる、かつ
twitter公式の画像を含むツイートで同様の現象が起こることが
過去にもあったのですが、必ず起こるわけでもないようで、
いまいち法則がわかっていません。


関連するチケット

関連している バグ #655: URLにエスケープされるような文字が含まれていないツイートで、リンク処理が一切行われない終了toshi_a 初音操作

Izumi Tsutsui さんが約10年前に更新

https://twitter.com/cgst/status/431336867309436928
でも再現しました。
ハッシュタグ + &記号 + twitter公式の添付画像 が条件?

Satoshi Okuno さんが約10年前に更新

寝たら明日が来ちゃう。日曜出勤なんてヤダー!な気分だったので調べてみました。

entity.rbの_generate_valueにてmessage.to_showに対してURLの正規表現をマッチさせてる処理があり、それが誤動作してる様です。

message.to_show.each_matches(rule[:regexp]){ |match, byte, pos|

なぜか展開後のURLと展開前のt.coのURLの両方がマッチしてる。

その2つのURLのrangeが一部かぶってて、cairo_markup_generator.rbのアンダーラインを引く処理で不正なhtmlが生成されている。

結果、Pangoがパース出来ず、各種装飾に失敗してる様です。

試しにmessage.to_showをmessage[:message]に変えたらアンダーラインは引かれる様に成りましたが、http+pic.twitter.com/〜+みたいにゴミが出ます。

一筋縄ではいかんですね。

Izumi Tsutsui さんが約10年前に更新

ハッシュタグなし、記号なしのこのツイート
https://twitter.com/ebijun/status/447493014550634496
でも再現するようです。
URLのエンティティと他のエンティティが同じ値になっていると変になる、とかでしょうか……

Izumi Tsutsui さんがほぼ10年前に更新

ハッシュタグもメンションもないこのツイートでも起きるようです。
https://twitter.com/Swati_THN/status/457867734420705280
何か記号がエスケープできてないんでしょうか。

0.2.2 だけかもしれませんが……

toshi_a 初音 さんがほぼ10年前に更新

  • ステータス新規 から レビュー待ち に変更
  • 担当者Izumi Tsutsui にセット

エスケープの都合上文字数がずれることがあって、「<」と「>」についてはその処理がありましたが、「&」はそれが処理されていなかったという問題がありました。

報告いただいた4件のうち、最初の2件に関しては正しく表示できるようになりました。

しかし、以下に関しては依然表示できません。

これは別の問題である可能性が高いので、 #655 に分けました。
解決したぶんについては、現在developのみに適用したため、そちらで確認してください。このあたりは0.2.2以降にいくつか書き換えている部分があってマージが面倒なので、バックポートしないかもしれません。

toshi_a 初音 さんがほぼ10年前に更新

  • 関連している バグ #655: URLにエスケープされるような文字が含まれていないツイートで、リンク処理が一切行われない を追加

Izumi Tsutsui さんがほぼ10年前に更新

  • ステータスレビュー待ち から 解決 に変更

例によって
NetBSD/i386 6.1.4 と pkgsrc-2014Q1 の
mikutter 0.2.2.1537
ruby 2.0.0p451
ruby-gnome2 2.2.0
という とか環境 ですが

core/entity.rb と core/mui/cairo_markup_generator.rb について
0.2.2.1537 に対して 6b0ad1c6 での差分を当てたところ、conflictもなく、
最初の2件のツイートは正しく t.co が展開されて
ハッシュタグも正しく表示されました。
https://twitter.com/tsutsuii/status/459948311642771456/photo/1
https://twitter.com/tsutsuii/status/459948736257331202/photo/1
ありがとうございます。

toshi_a 初音 さんがほぼ10年前に更新

  • ステータス解決 から 終了 に変更

他の形式にエクスポート: Atom PDF