From 57b64a412e858611d78914df96b51cdd1e05f964 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Tue, 16 Feb 2016 20:37:57 +0100
Subject: [PATCH] Fix infinite loop when no chapter number is parsed

---
 .../kanade/tachiyomi/util/ChapterRecognition.java | 15 +++++++++------
 .../kanade/tachiyomi/ChapterRecognitionTest.java  |  7 +++++++
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/ChapterRecognition.java b/app/src/main/java/eu/kanade/tachiyomi/util/ChapterRecognition.java
index 045b4609e..812916e54 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/ChapterRecognition.java
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/ChapterRecognition.java
@@ -111,12 +111,15 @@ public class ChapterRecognition {
         }
 
         // Strip anything after "part xxx" and try that
-        name = pPart.matcher(name).replaceAll("$1");
-        dummyChapter.name = name;
-        parseChapterNumber(dummyChapter, manga);
-        if (dummyChapter.chapter_number >= 0) {
-            chapter.chapter_number = dummyChapter.chapter_number;
-            return;
+        matcher = pPart.matcher(name);
+        if (matcher.find()) {
+            name = pPart.matcher(name).replaceAll("$1");
+            dummyChapter.name = name;
+            parseChapterNumber(dummyChapter, manga);
+            if (dummyChapter.chapter_number >= 0) {
+                chapter.chapter_number = dummyChapter.chapter_number;
+                return;
+            }
         }
     }
 
diff --git a/app/src/test/java/eu/kanade/tachiyomi/ChapterRecognitionTest.java b/app/src/test/java/eu/kanade/tachiyomi/ChapterRecognitionTest.java
index 28ad19ed8..150520ad5 100644
--- a/app/src/test/java/eu/kanade/tachiyomi/ChapterRecognitionTest.java
+++ b/app/src/test/java/eu/kanade/tachiyomi/ChapterRecognitionTest.java
@@ -172,4 +172,11 @@ public class ChapterRecognitionTest {
         ChapterRecognition.parseChapterNumber(c, randomManga);
         assertThat(c.chapter_number).isEqualTo(027f);
     }
+
+    @Test
+    public void testUnparsable() {
+        Chapter c = createChapter("Foo");
+        ChapterRecognition.parseChapterNumber(c, randomManga);
+        assertThat(c.chapter_number).isEqualTo(-1f);
+    }
 }