Hello community,

here is the log from the commit of package kitinerary for openSUSE:Factory 
checked in at 2020-11-10 13:36:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kitinerary (Old)
 and      /work/SRC/openSUSE:Factory/.kitinerary.new.11331 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kitinerary"

Tue Nov 10 13:36:25 2020 rev:29 rq:846698 version:20.08.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/kitinerary/kitinerary.changes    2020-10-12 
13:50:19.981994937 +0200
+++ /work/SRC/openSUSE:Factory/.kitinerary.new.11331/kitinerary.changes 
2020-11-10 13:36:44.588796608 +0100
@@ -1,0 +2,15 @@
+Thu Nov  5 22:46:33 UTC 2020 - Luca Beltrame <lbeltr...@kde.org>
+
+- Update to 20.08.3
+  * New bugfix release
+  * For more details please see:
+  * https://kde.org/announcements/releases/2020-11-apps-update
+- Changes since 20.08.2:
+  * Be a bit less strict when applying the year from the context date
+  * Guard against SNCF tickets having 1st/2nd leg barcode on 3rd leg page
+  * Fix second leg class extraction from SNCF ticket barcodes
+  * Extract English SNCF tickets
+  * Avoid NaN comparisons
+  * Require C++17
+
+-------------------------------------------------------------------

Old:
----
  kitinerary-20.08.2.tar.xz
  kitinerary-20.08.2.tar.xz.sig

New:
----
  kitinerary-20.08.3.tar.xz
  kitinerary-20.08.3.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kitinerary.spec ++++++
--- /var/tmp/diff_new_pack.LFtqDm/_old  2020-11-10 13:36:45.180795432 +0100
+++ /var/tmp/diff_new_pack.LFtqDm/_new  2020-11-10 13:36:45.180795432 +0100
@@ -18,7 +18,7 @@
 
 %bcond_without lang
 Name:           kitinerary
-Version:        20.08.2
+Version:        20.08.3
 Release:        0
 Summary:        Data model and extraction system for travel reservations
 License:        LGPL-2.1-or-later


++++++ kitinerary-20.08.2.tar.xz -> kitinerary-20.08.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-20.08.2/CMakeLists.txt 
new/kitinerary-20.08.3/CMakeLists.txt
--- old/kitinerary-20.08.2/CMakeLists.txt       2020-10-03 14:53:18.000000000 
+0200
+++ new/kitinerary-20.08.3/CMakeLists.txt       2020-10-31 18:39:10.000000000 
+0100
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.5)
-set(PIM_VERSION "5.15.2")
+set(PIM_VERSION "5.15.3")
 project(KItinerary VERSION ${PIM_VERSION})
 
-set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(KF5_MIN_VERSION "5.71.0")
 
@@ -33,8 +33,8 @@
     find_package(SharedMimeInfo 1.3 REQUIRED)
 endif()
 
-set(KMIME_VERSION "5.15.2")
-set(PIM_PKPASS "5.15.2")
+set(KMIME_VERSION "5.15.3")
+set(PIM_PKPASS "5.15.3")
 
 find_package(KF5Mime ${KMIME_VERSION} CONFIG REQUIRED)
 find_package(KF5CalendarCore ${KF5_MIN_VERSION} CONFIG)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-20.08.2/po/nn/kitinerary.po 
new/kitinerary-20.08.3/po/nn/kitinerary.po
--- old/kitinerary-20.08.2/po/nn/kitinerary.po  1970-01-01 01:00:00.000000000 
+0100
+++ new/kitinerary-20.08.3/po/nn/kitinerary.po  2020-11-03 01:48:03.000000000 
+0100
@@ -0,0 +1,186 @@
+# Translation of kitinerary to Norwegian Nynorsk
+#
+# Karl Ove Hufthammer <k...@huftis.org>, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: kitinerary\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n";
+"POT-Creation-Date: 2020-07-13 07:48+0200\n"
+"PO-Revision-Date: 2020-10-24 14:33+0200\n"
+"Last-Translator: Karl Ove Hufthammer <k...@huftis.org>\n"
+"Language-Team: Norwegian Nynorsk <l10n...@lister.huftis.org>\n"
+"Language: nn\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 20.08.2\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
+
+#: calendarhandler.cpp:187
+#, kde-format
+msgctxt "canceled train/flight/loding reservation"
+msgid "Canceled: %1"
+msgstr "Kansellert: %1"
+
+#: calendarhandler.cpp:217
+#, kde-format
+msgid "Flight %1 from %2 to %3"
+msgstr "Flyging %1 frå %2 til %3"
+
+#: calendarhandler.cpp:236
+#, kde-format
+msgid "Boarding for flight %1"
+msgstr "Ombord­stiging for flyging %1"
+
+#: calendarhandler.cpp:238
+#, kde-format
+msgid "Boarding for flight %1 at gate %2"
+msgstr "Ombord­stiging for flyging %1 ved utgang %2"
+
+#: calendarhandler.cpp:247
+#, kde-format
+msgid "Boarding time: %1"
+msgstr "Ombord­stigings­tid: %1"
+
+#: calendarhandler.cpp:250
+#, kde-format
+msgid "Departure gate: %1"
+msgstr "Ombord­stiging ved utgang: %1"
+
+#: calendarhandler.cpp:260
+#, kde-format
+msgid "Boarding group: %1"
+msgstr "Ombord­stigings­gruppe: %1"
+
+#: calendarhandler.cpp:263 calendarhandler.cpp:295 calendarhandler.cpp:323
+#, kde-format
+msgid "Seat: %1"
+msgstr "Sete: %1"
+
+#: calendarhandler.cpp:266 calendarhandler.cpp:301 calendarhandler.cpp:326
+#: calendarhandler.cpp:369 calendarhandler.cpp:423
+#, kde-format
+msgid "Booking reference: %1"
+msgstr "Reservasjons­kode: %1"
+
+#: calendarhandler.cpp:278
+#, kde-format
+msgid "Train %1 from %2 to %3"
+msgstr "Tog %1 frå %2 til %3"
+
+#: calendarhandler.cpp:287
+#, kde-format
+msgid "Departure platform: %1"
+msgstr "Avgang ved plattform: %1"
+
+#: calendarhandler.cpp:292
+#, kde-format
+msgid "Coach: %1"
+msgstr "Vogn: %1"
+
+#: calendarhandler.cpp:298
+#, kde-format
+msgid "Arrival platform: %1"
+msgstr "Innkomst ved plattform: %1"
+
+#: calendarhandler.cpp:312
+#, kde-format
+msgid "Bus %1 from %2 to %3"
+msgstr "Buss %1 frå %2 til %3"
+
+#: calendarhandler.cpp:336
+#, kde-format
+msgid "Hotel reservation: %1"
+msgstr "Hotell­reservasjon: %1"
+
+#: calendarhandler.cpp:347
+#, kde-format
+msgid "Check-in: %1"
+msgstr "Innsjekk etter: %1"
+
+#: calendarhandler.cpp:350
+#, kde-format
+msgid "Check-out: %1"
+msgstr "Utsjekk før: %1"
+
+#: calendarhandler.cpp:353
+#, kde-format
+msgid "Phone: %1"
+msgstr "Telefon­nummer: %1"
+
+#: calendarhandler.cpp:356
+#, kde-format
+msgid "Email: %1"
+msgstr "E-post­adresse: %1"
+
+#: calendarhandler.cpp:359
+#, kde-format
+msgid "Website: %1"
+msgstr "Heime­side: %1"
+
+#: calendarhandler.cpp:402
+#, kde-format
+msgid "Entrance for %1"
+msgstr "Inn­gang for %1"
+
+#: calendarhandler.cpp:448
+#, kde-format
+msgid "Restaurant reservation: %1"
+msgstr "Restaurant­reservasjon: %1"
+
+#: calendarhandler.cpp:462
+#, kde-format
+msgid "Number Of People: %1"
+msgstr "Talet på gjestar: %1"
+
+#: calendarhandler.cpp:465
+#, kde-format
+msgid "Reservation reference: %1"
+msgstr "Reservasjonskode: %1"
+
+#: calendarhandler.cpp:469
+#, kde-format
+msgid "Under name: %1"
+msgstr "Under namnet: %1"
+
+#: calendarhandler.cpp:479
+#, kde-format
+msgid "Rental Car reservation: %1"
+msgstr "Leigebil­reservasjon: %1"
+
+# Same som «rental car» (førre tekst)?
+#: calendarhandler.cpp:487
+#, kde-format
+msgid "Rent car reservation: %1"
+msgstr "Leigebil­reservasjon: %1"
+
+#: calendarhandler.cpp:494
+#, kde-format
+msgid ""
+"Reservation reference: %1\n"
+"Under name: %2\n"
+"\n"
+"PickUp location: %3\n"
+"\n"
+"Dropoff Location: %4"
+msgstr ""
+"Reservasjons­referanse: %1\n"
+"Under namnet: %2\n"
+"\n"
+"Hente­stad: %3\n"
+"\n"
+"Levering: %4"
+
+#: calendarhandler.cpp:519
+#, kde-format
+msgid ""
+"Reservation reference: %1\n"
+"Under name: %2\n"
+"PickUp location: %3"
+msgstr ""
+"Reservasjons­referanse: %1\n"
+"Under namnet: %2\n"
+"Hente­stad: %3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-20.08.2/po/zh_CN/kitinerary.po 
new/kitinerary-20.08.3/po/zh_CN/kitinerary.po
--- old/kitinerary-20.08.2/po/zh_CN/kitinerary.po       2020-10-06 
05:43:07.000000000 +0200
+++ new/kitinerary-20.08.3/po/zh_CN/kitinerary.po       2020-11-03 
01:48:03.000000000 +0100
@@ -8,7 +8,7 @@
 "Project-Id-Version: kdeorg\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2020-07-13 07:48+0200\n"
-"PO-Revision-Date: 2020-09-23 12:20\n"
+"PO-Revision-Date: 2020-10-08 19:23\n"
 "Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-20.08.2/src/cli/org.kde.kitinerary-extractor.appdata.xml 
new/kitinerary-20.08.3/src/cli/org.kde.kitinerary-extractor.appdata.xml
--- old/kitinerary-20.08.2/src/cli/org.kde.kitinerary-extractor.appdata.xml     
2020-10-03 14:53:18.000000000 +0200
+++ new/kitinerary-20.08.3/src/cli/org.kde.kitinerary-extractor.appdata.xml     
2020-10-31 18:39:10.000000000 +0100
@@ -18,6 +18,7 @@
   <name xml:lang="it">Estrattore a riga di comando di KItinerary</name>
   <name xml:lang="ko">KItinerary 명령행 추출기</name>
   <name xml:lang="nl">Extractor van opdrachtregel van KItinerary</name>
+  <name xml:lang="nn">Kommandolinje­basert uthentar for KItinerary</name>
   <name xml:lang="pl">Wydobywane danych z wiersza poleceń KItinerary</name>
   <name xml:lang="pt">Extracção da Linha de Comandos do KItinerary</name>
   <name xml:lang="pt-BR">Extrator em linha de comando do KItinerary</name>
@@ -44,6 +45,7 @@
   <summary xml:lang="it">Estrattore di dati di prenotazioni a riga di 
comando.</summary>
   <summary xml:lang="ko">명령행 예약 데이터 추출기입니다.</summary>
   <summary xml:lang="nl">Gegevensextractor van reservering op de 
opdrachtregel.</summary>
+  <summary xml:lang="nn">Kommandolinje­basert uthentar for 
reservasjonsdata.</summary>
   <summary xml:lang="pl">Wydobywane danych o rezerwacji z wiersza 
poleceń.</summary>
   <summary xml:lang="pt">Extracção de dados de reservas na linha de 
comandos.</summary>
   <summary xml:lang="pt-BR">Extrator em linha de comando de dados de 
reservas.</summary>
@@ -72,6 +74,7 @@
     <p xml:lang="it">Estrattore a riga di comando per dati di itinerari, per 
l'integrazione con applicazioni di terze parti.</p>
     <p xml:lang="ko">외부 프로그램에 통합할 수 있는 명령행 여행 정보 추출기입니다.</p>
     <p xml:lang="nl">Extractor van reisgegevens op de opdrachtregel, voor 
integratie in toepassingen van derden.</p>
+    <p xml:lang="nn">Kommandolinje­basert uthentar for reiserute­data, for 
integrasjon med tredjeparts­program.</p>
     <p xml:lang="pl">Wydobywane danych z wiersza poleceń dla planu podróży, do 
zszywania z aplikacjami osób trzecich.</p>
     <p xml:lang="pt">Extracção pela linha de comandos de dados de itinerários, 
para se integrar com aplicações de terceiros.</p>
     <p xml:lang="pt-BR">Extrator em linha de comando para dados de 
itinerários, para integração em aplicativos de terceiros.</p>
@@ -89,9 +92,9 @@
     <binary>kitinerary-extractor</binary>
   </provides>
   <releases>
+    <release version="5.15.3" date="2020-11-05"/>
     <release version="5.15.2" date="2020-10-08"/>
     <release version="5.15.1" date="2020-09-03"/>
     <release version="5.15.0" date="2020-08-13"/>
-    <release version="5.14.3" date="2020-07-09"/>
   </releases>
 </component>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kitinerary-20.08.2/src/cli/org.kde.kitinerary-extractor.desktop 
new/kitinerary-20.08.3/src/cli/org.kde.kitinerary-extractor.desktop
--- old/kitinerary-20.08.2/src/cli/org.kde.kitinerary-extractor.desktop 
2020-10-03 14:53:18.000000000 +0200
+++ new/kitinerary-20.08.3/src/cli/org.kde.kitinerary-extractor.desktop 
2020-10-31 18:39:10.000000000 +0100
@@ -14,6 +14,7 @@
 Name[it]=Estrattore di KItinerary
 Name[ko]=KItinerary 추출기
 Name[nl]=Extractor van KItinerary
+Name[nn]=KItinerary-uthentar
 Name[pl]=Wydobywanie KItinerary
 Name[pt]=Extracção do KItinerary
 Name[pt_BR]=Extrator do KItinerary
@@ -38,6 +39,7 @@
 GenericName[it]=Estrattore a riga di comando di KItinerary
 GenericName[ko]=KItinerary 명령행 추출기
 GenericName[nl]=Extractor van opdrachtregel van KItinerary
+GenericName[nn]=Kommandolinje­basert uthentar for KItinerary
 GenericName[pl]=Wydobywane danych z wiersza poleceń KItinerary
 GenericName[pt]=Extracção pela linha de comandos do KItinerary
 GenericName[pt_BR]=Extrator em linha de comando do KItinerary
@@ -65,6 +67,7 @@
 Comment[it]=Estrattore di dati di prenotazioni a riga di comando.
 Comment[ko]=명령행 예약 데이터 추출기입니다.
 Comment[nl]=Gegevensextractor van reservering op de opdrachtregel.
+Comment[nn]=Kommandolinje­basert uthentar for reservasjonsdata.
 Comment[pl]=Wydobywane danych o rezerwacji z wiersza poleceń.
 Comment[pt]=Extracção de dados de reservas pela linha de comandos.
 Comment[pt_BR]=Extrator em linha de comando de dados de reservas.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-20.08.2/src/extractors/sncf.js 
new/kitinerary-20.08.3/src/extractors/sncf.js
--- old/kitinerary-20.08.2/src/extractors/sncf.js       2020-10-03 
14:53:18.000000000 +0200
+++ new/kitinerary-20.08.3/src/extractors/sncf.js       2020-10-31 
18:39:10.000000000 +0100
@@ -19,11 +19,11 @@
 
 function parseText(text) {
     var reservations = new Array();
-    var bookingRef = text.match(/DOSSIER VOYAGE : +([A-Z0-9]{6})/);
+    var bookingRef = text.match(/(?:DOSSIER VOYAGE|BOOKING FILE REFERENCE) : 
+([A-Z0-9]{6})/);
 
     var pos = 0;
     while (true) {
-        var header = text.substr(pos).match(/ +Départ \/ Arrivée.*\n/);
+        var header = text.substr(pos).match(/ +(?:Départ \/ Arrivée|Departure 
\/ Arrival).*\n/);
         if (!header)
             break;
         var index = header.index + header[0].length;
@@ -31,14 +31,14 @@
         var res = JsonLd.newTrainReservation();
         res.reservationNumber = bookingRef[1];
 
-        var depLine = text.substr(pos + index).match(/\n {2,3}([\w -]+?)  
+(\d{2}\/\d{2}) à (\d{2}h\d{2})/);
+        var depLine = text.substr(pos + index).match(/\n {2,3}([\w -]+?)  
+(\d{2}\/\d{2}) (?:à|at) (\d{2}h\d{2})/);
         if (!depLine)
             break;
         index += depLine.index + depLine[0].length;
         res.reservationFor.departureStation.name = depLine[1];
         res.reservationFor.departureTime = JsonLd.toDateTime(depLine[2] + " " 
+ depLine[3], "dd/MM hh'h'mm", "fr");
 
-        var arrLine = text.substr(pos + index).match(/\n {2,3}([\w -]+?)  
+(\d{2}\/\d{2}) à (\d{2}h\d{2})/);
+        var arrLine = text.substr(pos + index).match(/\n {2,3}([\w -]+?)  
+(\d{2}\/\d{2}) (?:à|at) (\d{2}h\d{2})/);
         if (!arrLine)
             break;
         index += arrLine.index + arrLine[0].length;
@@ -49,13 +49,13 @@
         // since the stations are vertically centered, the stuff we are 
looking for might be at different
         // positions relative to them
         var legText = text.substring(pos + header.index + header[0].length, 
pos + index);
-        var trainNumber = legText.match(/TRAIN N° ?(\d{3,4})/);
+        var trainNumber = legText.match(/TRAIN (?:N°|NUMBER) ?(\d{3,5})/);
         if (trainNumber)
             res.reservationFor.trainNumber = trainNumber[1];
-        var seatRes = legText.match(/(VOITURE|COACH) (\d+) - PLACE (\d+)/);
+        var seatRes = legText.match(/(?:VOITURE|COACH) (\d+) - PLACE (\d+)/);
         if (seatRes) {
-            res.reservedTicket.ticketedSeat.seatSection = seatRes[2];
-            res.reservedTicket.ticketedSeat.seatNumber = seatRes[3];
+            res.reservedTicket.ticketedSeat.seatSection = seatRes[1];
+            res.reservedTicket.ticketedSeat.seatNumber = seatRes[2];
         }
 
         reservations.push(res);
@@ -70,39 +70,44 @@
 function parsePdf(pdf) {
     var reservations = new Array();
 
+    var barcode = null;
     for (var i = 0; i < pdf.pageCount; ++i) {
         var page = pdf.pages[i];
 
-        // barcode format:
+        // barcode format: (see 
https://community.kde.org/KDE_PIM/KItinerary/SNCF_Barcodes)
         // 'i0CV'
         // 6x PNR
-        // 9x document id
+        // 9x document id / e-ticket number
         // '1211'
         // dd/MM/yyyy birthdate
-        // 2x 5x gare & connextion ids of the first leg
+        // 2x 5x SNCF station code of the first leg
         // 5x train number first leg
         // dd/MM travel date
         // 18x client id
         // 19x family name
         // 19x given name
-        // 1x class
-        // 4x stuff
-        // '1' to indicate a second leg, '0' otherwise
-        // 2x 5x gare & connexion ids for the second leg
+        // 1x class first leg ('1' or '2')
+        // 4x tariff/price code
+        // 1x class second leg ('1' or '2'; '0' if there is no second leg)
+        // 2x 5x SNCF station code for the second leg
         // 5x train number second leg
-        var barcode = null;
+        var nextBarcode = null;
         var images = page.imagesInRect(0.75, 0, 1, 0.75);
-        for (var j = 0; j < images.length && !barcode; ++j) {
-            barcode = Barcode.decodeAztec(images[j]);
-            if (barcode.substr(0, 4).toUpperCase() !== "I0CV")
-                barcode = null;
+        for (var j = 0; j < images.length && !nextBarcode; ++j) {
+            nextBarcode = Barcode.decodeAztec(images[j]);
+            if (nextBarcode.substr(0, 4).toUpperCase() !== "I0CV")
+                nextBarcode = null;
         }
+        // Guard against tickets with 3 or more legs, with the second page for 
the 3rd and subsequent
+        // leg repeating the barcode of the first two legs. One would expect 
the barcode for the following
+        // legs there, but that doesn't even seem to exists in the sample 
documents I have for this...
+        barcode = (nextBarcode && nextBarcode != barcode) ? nextBarcode : null;
 
         var underName = null;
         if (barcode) {
             var underName = JsonLd.newObject("Person");
-            underName.familyName = barcode.substring(73, 91).trim();
-            underName.givenName = barcode.substring(92, 110).trim();
+            underName.familyName = barcode.substr(72, 19).trim();
+            underName.givenName = barcode.substr(91, 19).trim();
         }
 
         var legs = parseText(page.text);
@@ -112,7 +117,7 @@
                 legs[j].reservedTicket.ticketToken = "aztecCode:" + barcode;
                 legs[j].reservationFor.departureStation.identifier = "sncf:" + 
barcode.substr(j == 0 ? 33 : 116, 5);
                 legs[j].reservationFor.arrivalStation.identifier = "sncf:" + 
barcode.substr(j == 0 ? 38 : 121, 5);
-                legs[j].reservedTicket.ticketedSeat.seatingType = 
barcode.substring(110, 111);
+                legs[j].reservedTicket.ticketedSeat.seatingType = 
barcode.substr(j == 0 ? 110 : 115, 1);
             }
             reservations.push(legs[j]);
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-20.08.2/src/jsapi/jsonld.cpp 
new/kitinerary-20.08.3/src/jsapi/jsonld.cpp
--- old/kitinerary-20.08.2/src/jsapi/jsonld.cpp 2020-10-03 14:53:18.000000000 
+0200
+++ new/kitinerary-20.08.3/src/jsapi/jsonld.cpp 2020-10-31 18:39:10.000000000 
+0100
@@ -197,7 +197,9 @@
     // if the date does not contain a year number, determine that based on the 
context date, if set
     else if (!hasYear && m_contextDate.isValid()) {
         dt.setDate({m_contextDate.date().year(), dt.date().month(), 
dt.date().day()});
-        if (dt < m_contextDate) {
+        // go one day back to leave a bit of room for documents produced very 
close to
+        // or even during the trip
+        if (dt < m_contextDate.addDays(-1)) {
             dt = dt.addYears(1);
         }
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kitinerary-20.08.2/src/knowledgedb/timezonedb.cpp 
new/kitinerary-20.08.3/src/knowledgedb/timezonedb.cpp
--- old/kitinerary-20.08.2/src/knowledgedb/timezonedb.cpp       2020-10-03 
14:53:18.000000000 +0200
+++ new/kitinerary-20.08.3/src/knowledgedb/timezonedb.cpp       2020-10-31 
18:39:10.000000000 +0100
@@ -11,6 +11,8 @@
 
 #include <QTimeZone>
 
+#include <cmath>
+
 using namespace KItinerary;
 
 const char* KnowledgeDb::tzId(KnowledgeDb::Tz tz)
@@ -43,6 +45,10 @@
 
 KnowledgeDb::Tz KnowledgeDb::timezoneForCoordinate(float lat, float lon, bool 
*ambiguous)
 {
+    if (std::isnan(lat) || std::isnan(lon)) {
+        return Tz::Undefined;
+    }
+
     // see arctic latitude filter in the generator script, we only cover 65°S 
to 80°N
     if (lat < timezone_index_params.yStart || lat > 
timezone_index_params.yEnd()) {
         return Tz::Undefined;


Reply via email to