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

メールによる返信