OSDN Git Service

DirItemIterator.h: Fix crash when entering empty folders
authorsdottaka <sdottaka@users.sourceforge.net>
Sun, 20 Sep 2015 13:38:20 +0000 (22:38 +0900)
committersdottaka <sdottaka@users.sourceforge.net>
Sun, 20 Sep 2015 13:38:20 +0000 (22:38 +0900)
Src/DirItemIterator.h

index d8622dc..e9ee20a 100644 (file)
@@ -36,7 +36,12 @@ public:
                if (m_sel != -1)
                {
                        if (m_pList->GetItemData(m_sel) == reinterpret_cast<void *>((uintptr_t)-1L))
-                               m_sel = m_pList->GetNextItem(m_sel, m_selected, m_reverse);
+                       {
+                               if (m_reverse && m_sel == 0)
+                                       m_sel = -1;
+                               else
+                                       m_sel = m_pList->GetNextItem(m_sel, m_selected, m_reverse);
+                       }
                }
        }
 
@@ -106,8 +111,13 @@ public:
                        m_pdi = reinterpret_cast<const DIFFITEM *>(m_pList->GetItemData(m_sel));
                        if (m_pdi == reinterpret_cast<const DIFFITEM *>(-1L))
                        {
-                               m_sel = m_pList->GetNextItem(m_sel, m_selected, m_reverse);
-                               m_pdi = reinterpret_cast<const DIFFITEM *>(m_pList->GetItemData(m_sel));
+                               if (m_reverse && m_sel == 0)
+                                       m_sel = -1;
+                               else
+                               {
+                                       m_sel = m_pList->GetNextItem(m_sel, m_selected, m_reverse);
+                                       m_pdi = reinterpret_cast<const DIFFITEM *>(m_pList->GetItemData(m_sel));
+                               }
                        }
                }
        }