113: [里々]単語の選択でフリーズすることがある

ばぐとら研究所統合ToDo管理システムへようこそ!バグ報告に限らず様々な要望を扱うシステムです。
まずは同じような内容がないか [検索] した後、無ければ [新規レポート] で作ってみましょう。
Windows 8以降、高速スタートアップが実装された関係で、SSP以外の部分に起因する不具合発生が出てきました。
何か挙動がおかしいかな、と思ったら、一度再起動(シャットダウン->起動ではなく)してみてから再度確かめてみてください。

最新状況

名前 ななっち
概要 [里々]単語の選択でフリーズすることがある
状態 [済]処理済
作成日時 2015-05-06 23:53:38
最終更新日時 2015-05-14 21:48:14

履歴

1 | 2015-05-06 23:53:38 | [−]新規
ななっち
ある条件下で、単語群の選択をすると、里々が内部で実行時エラーを起
こして結果的にフリーズするようです。

デフォルトでついてくる重複回避の機能が悪さをしているところまでは
突き止めたのですが、解決には至っていないので助けを求めると共に問
題を報告します。

条件が言葉で言い表しづらいので、再現するゴーストを置いておきま
す。
(条件付き単語群の、条件が変化した場合にこの現象が発生するみた
い?)

◆再現方法
ゴースト「あおいリボンのあおいさん」
http://nanachi.sakura.ne.jp/aoi.html

1. このゴーストで、「OnErrorTest」イベントを発生させます。例: 
\![raise,OnErrorTest]

2.表示された手順にしたがって選択肢をクリックしていくと、フリーズ
します。

◆当該するスクリプト
ghost/master/dic_Functions.txt の下の方にある「OnErrorTest」イベ
ント以下

2 | 2015-05-10 18:25:15 | [−]新規
中山蓮
Selector.h内の以下の記述を変更することで、特定条件では落ちなく
なったことを確認できました

@@ -102,7 +102,7 @@
 			{
 				m_OC->on_erase(OLD, old);
 				old = OLD.erase(old);
-				++old;
+//				++old;
 			}
 			else
 			{

しかし依然として、Selector.h95行目からの文字列同士の比較時に、
*newと*old双方の文字列の先頭アドレス次第で落ちます
文字列自体の比較をコードは想定されているようですが、実際はアドレ
ス同士の比較として処理されているようです
Selector.h.patch (text/plain, 290 bytes) [表示] [ダウンロード]

3 | 2015-05-10 21:30:07 | [−]新規
中山蓮
ごめんなさい、Family.select_all内でcandidatesに詰め込まれていたの
はconst Talk*やconst Word*であることを見逃し、見当違いなことを書
き込んでしまいました
対応したパッチは下のものになります

この段階で、私の環境ではあおいさんのバグ再現スクリプトが通るよう
になりましたが、自分で書いた以下のスクリプトをきちんと再生するこ
とが出来ませんでした


@test3	(testvalue)<3
a
b
@test3	(testvalue)<2
c
*jが押された
(set,testvalue,1)(test3)(set,testvalue,2)
(times,100,(test3))
Selector.h.patch (text/plain, 889 bytes) [表示] [ダウンロード]

4 | 2015-05-11 23:14:22 | [−]新規
中山蓮
前回のパッチから、直接値を比較せずに、そのポインタを比較すること
にしました
値とポインタは一対一の関係で結ばれているため、内容が一意に定まり
ます
さらに、後述のようにlistをソートする際は、ポインタを扱った方が比
較のスピードも早く、扱いも楽だからでした

前回のスクリプトとパッチの内容を書いた後、その働きから、重複選択
が落ちるのは、ポインタのリストが降順に並べられていないことにある
のではないかと理解しました
そこで、リストをupdate_candidatesに渡す前に、重複処理を行う2つの
選択モード(直前・有効)が選ばれている時のみ、選択された文・単語
群のポインタのリストをソートするようにしました
また、選択されている選択モードを取得するためのメンバ関数
type()を、Selectorクラスに追加しました
satori.patch (text/plain, 1982 bytes) [表示] [ダウンロード]

5 | 2015-05-14 21:48:14 | [済]処理済
ななっち
Mc156-1
様子見かもしれないけど、一応解決扱いに。

[リプライをつける]
Bug Tracking System 影舞 0.8.8
Powered by Ruby 1.8.7