aboutsummaryrefslogtreecommitdiff
path: root/games/trigger-rally/hiscore1.h.patch
blob: 4441ae2437bea23533aeb8f75729b55905719d03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
diff -rupN src/include/hiscore1.h src_patched/include/hiscore1.h
--- src/include/hiscore1.h	2016-04-08 20:58:38.000000000 +0200
+++ src_patched/include/hiscore1.h	2016-04-28 15:27:43.763427992 +0200
@@ -41,6 +41,17 @@
         return InputStream;                                         \
 } else (void)0
 
+
+// TODO: remove duplicate code
+#define GETLINE_SKIP_EMPTY_LINES_B(InputStream, String) if (true) { \
+    while (std::getline(InputStream, String)) {                     \
+        if (!String.empty())                                        \
+            break;                                                  \
+    }                                                               \
+    if (String.empty())                                             \
+        return static_cast<bool> (InputStream);                     \
+} else (void)0
+
 ///
 /// @brief Basic structure to load and save race results.
 ///
@@ -724,19 +735,19 @@ private:
         std::istringstream sspdata(decrypt(pdata));
 #undef decrypt
 
-        GETLINE_SKIP_EMPTY_LINES(sspdata, ts);
+        GETLINE_SKIP_EMPTY_LINES_B(sspdata, ts);
         nu = std::stoul(ts);
 
         while (nu-- != 0)
         {
-            GETLINE_SKIP_EMPTY_LINES(sspdata, ts);
+            GETLINE_SKIP_EMPTY_LINES_B(sspdata, ts);
             allunlocks[pname].insert(ts);
         }
 
         while (sspdata >> rd)
             alltimes.insert({rd.mapname, rd});
 
-        return sspdata;
+        return static_cast<bool> (sspdata);
     }
 
     ///