吉田さん

返信ありがとうございました。
且つ、お返事できてなくてごめんなさい。

今朝方の master で不具合が再現しなくなっていることを確認しました。
(commit 30f8d566bb11d2b514af0c449d00683a445505d8)

取り急ぎ、ご報告です。

(2014/02/04 0:04), Kohei Yoshida wrote:
On Mon, 2014-02-03 at 23:34 +0900, Tomofumi Yagi wrote:

不具合の再現時は、/core/sc/source/core/data/column2.cxx 内、
ScColumn::GetOptimalHeight() でループしているように見えました。

このメソッド内で、ScColumn::HasEditCells() を呼ぶのですが(master では
822 行の辺り)、
true を返して且つ、nEditPos < nStart になる時があるように見えます。
この時、ScColumn::GetOptimalHeight() 内の while ループから抜けないように
思えました。

私の手元では、試しに次のようにすると不具合が再現しなくなります。
ーーーーーここからーーーーー
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 007e9e3..d47abbf 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -3208,6 +3208,9 @@ bool ScColumn::HasEditCells(SCROW nStartRow, SCROW
nEndRow, SCROW& rFirst)
       if (aPos.first == maCells.end())
           return false;

+    if ((aPos.first->position + aPos.second) < nStartRow )
+        return false;
+
       rFirst = aPos.first->position + aPos.second;
       return true;
   }
ーーーーーここまでーーーーー
八木さんありがとうございます。ココらへんのコードを少し調べてみますね。
nStartRowとnEndRowはFindFormulaEditText()に渡されているのでもしその間に
edit cellがない場合はend positionsが帰ってくる筈なのですが、それが帰って
こないという事はそこら辺にバグがあるのかもしれません。

調べてみます。

ちょっと頑張って調べたつもりなのですが、外してたらごめんなさい。
いえいえ、かなり役に立ちました。ありがとうございます。またよろしくおねが
いします。





--
Unsubscribe instructions: E-mail to discuss+unsubscr...@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted

メールによる返信