ページ移動:ページフィルターのタイミングでエラーになることがある

Issue #1542 closed
Ito Mitsuhiro repo owner created an issue

「設定 > ブック > 移動 > ページ移動準備(nv.Config.Book.IsReadyToPageMove)」を ON にした状態でページリストパネルでフィルタすると、エラーで強制終了してしまうことがあるようです。
ブックによって再現しないケースもりますが、参考までに再現手順とエラーメッセージを以下に記載します。

<再現手順>
step 1: ブックを開く
step 2: (省略可)任意のページへ移動
step 3: (省略可)現在表示中のページがリストに残るようにフィルタ文字列を入力 ・・・ エラーにはならない
step 4: 現在表示中のページがリストに残らないようにフィルタ文字列を入力 ・・・ エラーになる
※step4では検索結果が空になるようフィルタしたほうが、より再現性が高まる印象です。

<エラーメッセージ>

OS Version: Microsoft Windows NT 10.0.19045.0 (64bit)
NeeView Version: 41.2 (.zip)

System.NullReferenceException: Object reference not set to an instance of an object.
at NeeView.PageFrames.PageFrameFactory.GetNextPage(PageFrame frame, Int32 direction)
at NeeView.PageFrames.PageFrameContainerCollection.UpdateContainerNode(LinkedListNode`1 node, LinkedListDirection direction)
at NeeView.PageFrames.PageFrameContainerCollection.FindOrCreateLatestContainerNode(PagePosition position, LinkedListDirection direction)
at NeeView.PageFrames.PageFrameContainerCollection.EnsureLatestContainerNode(PagePosition position, LinkedListDirection direction, CreateContainerNodeOptions options)
at NeeView.PageFrames.PageFrameContainerCollection.UpdateContainer(LinkedListNode`1 node)
at NeeView.PageFrames.PageFrameBox.FillContainers()
at NeeView.PageFrames.PageFrameBox.g__UpdateContainers|83_1(LinkedListNode`1 node)
at NeeView.PageFrames.PageFrameBox.ContainerCollection_CollectionChanged(Object sender, PageFrameContainerCollectionChangedEventArgs e)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at NeeView.App.Main()


Comments (2)

  1. Log in to comment