New Defects reported by Coverity Scan for digiKam

scan-admin-S5/EvlXga/RWk0Htik3J/[email protected] Tue, 14 Jul 2026 15:43:22 +0000 (UTC)
Newsgroups gmane.comp.kde.digikam.devel
Message-ID <[email protected]>
----==_mimepart_6a56591a29f75_e0b9f2c20652419983548
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi,

Please find the latest report on new defect(s) introduced to digiKam found with Coverity Scan.

12 new defect(s) introduced to digiKam found with Coverity Scan.
45 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.

New defect(s) Reported-by: Coverity Scan
Showing 12 of 12 defect(s)


** CID 1696747:       Memory - illegal accesses  (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 201           in Marble::PlanetarySats::setSatFile(const char *)()


_____________________________________________________________________________________________
*** CID 1696747:         Memory - illegal accesses  (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 201             in Marble::PlanetarySats::setSatFile(const char *)()
195             min = 0;
196         };
197     }
198     
199     void PlanetarySats::setSatFile(const char* const fname)
200     {
>>>     CID 1696747:         Memory - illegal accesses  (BUFFER_SIZE)
>>>     Calling "strncpy" with a maximum size argument of 205 bytes on destination array "this->pls_satelmfl" of size 205 bytes might leave the destination string unterminated.
201         strncpy(pls_satelmfl, fname, sizeof(pls_satelmfl));
202     }
203     
204     void PlanetarySats::setStateVector(double mjd, double x, double y, double z, double vx, double vy, double vz)
205     {
206         pls_rep[0] = x;

** CID 1696746:       Memory - illegal accesses  (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 400           in Marble::PlanetarySats::setPlanet(const char *)()


_____________________________________________________________________________________________
*** CID 1696746:         Memory - illegal accesses  (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 400             in Marble::PlanetarySats::setPlanet(const char *)()
394         return nst;
395     }
396     
397     void PlanetarySats::setPlanet(const char* const pname)
398     {
399         pls_moonflg = false;
>>>     CID 1696746:         Memory - illegal accesses  (BUFFER_SIZE)
>>>     Calling "strncpy" with a maximum size argument of 40 bytes on destination array "this->pls_plntname" of size 40 bytes might leave the destination string unterminated.
400         strncpy(pls_plntname, pname, sizeof(pls_plntname));
401     
402         if (strncmp("Mars", pname, 4) == 0)
403         {
404             getMars();
405         }

** CID 1696745:         (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 353           in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()


_____________________________________________________________________________________________
*** CID 1696745:           (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 332             in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
326     
327                 pReader->offset = 0;
328             }
329     
330             if (fread(&(ds->type), 1, 1, pReader->f) == 0)
331             {
>>>     CID 1696745:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
332                 o5mreader_setError(pReader,
333                                    O5MREADER_ERR_CODE_UNEXPECTED_END_OF_FILE,
334                                    NULL);
335     
336                 return O5MREADER_ITERATE_RET_ERR;
337             }
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 353             in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
347             }
348             else if (0xf0 == ds->type)
349             {
350             }
351             else
352             {
>>>     CID 1696745:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_readUInt" frees pointer "pReader->errMsg" which has already been freed.
353                 if (o5mreader_readUInt(pReader, &pReader->offset) == O5MREADER_RET_ERR)
354                 {
355                     return O5MREADER_ITERATE_RET_ERR;
356                 }
357     
358                 pReader->current = ftell(pReader->f);

** CID 1696744:       Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)


_____________________________________________________________________________________________
*** CID 1696744:         Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
/home/gilles/devel/GIT/9.x/core/libs/properties/itempropertiessidebardb.cpp: 1014             in Digikam::ItemPropertiesSideBarDB::calculateItemsMultithreaded()()
1008         // -- Total Album Items Properties
1009     
1010         Q_EMIT signalSetTotalCount(d->allInfos.count());
1011     
1012         qint64 totalFileSize           = selectionFileSize;
1013         ItemInfoList totalGroups       = selectionGroups;
>>>     CID 1696744:         Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
>>>     "selectionMimes" is copied in call to copy constructor for class "QHash<QString, int>", when it could be moved instead.
1014         QHash<QString, int> totalMimes = selectionMimes;
1015     
1016         for (const ItemInfo& info : std::as_const(restInfos))
1017         {
1018             if (d->selectedItemsTask.isCanceled())
1019             {

** CID 1696743:         (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464           in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()


_____________________________________________________________________________________________
*** CID 1696743:           (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 478             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
472         {
473             pReader->canIterateTags = 0;
474             return O5MREADER_ITERATE_RET_DONE;
475         }
476     
477         mtx.lock();
>>>     CID 1696743:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
478         O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
479         mtx.unlock();
480     
481         if (strPair == O5MREADER_RET_ERR)
482         {
483             return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 478             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
472         {
473             pReader->canIterateTags = 0;
474             return O5MREADER_ITERATE_RET_DONE;
475         }
476     
477         mtx.lock();
>>>     CID 1696743:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
478         O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
479         mtx.unlock();
480     
481         if (strPair == O5MREADER_RET_ERR)
482         {
483             return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 456             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
450                 return O5MREADER_ITERATE_RET_ERR;
451             }
452         }
453     
454         if (pReader->canIterateNds)
455         {
>>>     CID 1696743:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_skipNds" frees pointer "pReader->errMsg" which has already been freed.
456             if (o5mreader_skipNds(pReader) == O5MREADER_ITERATE_RET_ERR)
457             {
458                 return O5MREADER_ITERATE_RET_ERR;
459             }
460         }
461     
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
458                 return O5MREADER_ITERATE_RET_ERR;
459             }
460         }
461     
462         if (!pReader->canIterateTags)
463         {
>>>     CID 1696743:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
464             o5mreader_setError(pReader,
465                                O5MREADER_ERR_CODE_CAN_NOT_ITERATE_TAGS_HERE,
466                                NULL
467                               );
468             return O5MREADER_ITERATE_RET_ERR;
469         }
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
458                 return O5MREADER_ITERATE_RET_ERR;
459             }
460         }
461     
462         if (!pReader->canIterateTags)
463         {
>>>     CID 1696743:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_setError" frees pointer "pReader->errMsg" which has already been freed.
464             o5mreader_setError(pReader,
465                                O5MREADER_ERR_CODE_CAN_NOT_ITERATE_TAGS_HERE,
466                                NULL
467                               );
468             return O5MREADER_ITERATE_RET_ERR;
469         }

** CID 1696742:       Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)


_____________________________________________________________________________________________
*** CID 1696742:         Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
/home/gilles/devel/GIT/9.x/core/libs/database/haar/haariface.cpp: 436             in Digikam::HaarIface::bestMatchesWithThreshold(long long, Digikam::Haar::SignatureData *, double, double, const QList<int> &, Digikam::HaarIface::DuplicatesSearchRestrictions, Digikam::HaarIface::SketchType)()
430             {
431                 qCDebug(DIGIKAM_DATABASE_LOG) << it.key() << QString::number(it.value() * 100) + QLatin1Char('%');
432             }
433         }
434     
435         result.first  = avgPercentage;
>>>     CID 1696742:         Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
>>>     "bestResults" is copied in call to copy assignment for class "QMap<long long, double>", when it could be moved instead.
436         result.second = bestResults;
437     
438         return result;
439     }
440     
441     bool HaarIface::fulfillsRestrictions(qlonglong imageId, int albumId,

** CID 1696741:         (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 411           in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()


_____________________________________________________________________________________________
*** CID 1696741:           (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 427             in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
421             if (o5mreader_thereAreNoMoreData(pReader))
422             {
423                 return O5MREADER_ITERATE_RET_DONE;
424             }
425     
426             mtx.lock();
>>>     CID 1696741:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_readStrPair" frees pointer "pReader->errMsg" which has already been freed.
427             O5mreaderRet strPair = o5mreader_readStrPair(pReader, &pReader->tagPair, 0);
428             mtx.unlock();
429     
430             if (strPair == O5MREADER_ITERATE_RET_ERR)
431             {
432                 return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 411             in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
405         }
406     
407         ds->version = (uint32_t)tmp;
408     
409         if (tmp)
410         {
>>>     CID 1696741:           (USE_AFTER_FREE)
>>>     Calling "o5mreader_readUInt" frees pointer "pReader->errMsg" which has already been freed.
411             if (o5mreader_readUInt(pReader, &tmp) == O5MREADER_ITERATE_RET_ERR)
412             {
413                 return O5MREADER_ITERATE_RET_ERR;
414             }
415     
416             if (o5mreader_readInt(pReader, &tmp) == O5MREADER_ITERATE_RET_ERR)

** CID 1662751:       Integer handling issues  (INTEGER_OVERFLOW)
/usr/include/c++/15/format: 850           in std::__format::__write_padded<std::__format::_Sink_iter<wchar_t>, wchar_t>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)()


_____________________________________________________________________________________________
*** CID 1662751:         Integer handling issues  (INTEGER_OVERFLOW)
/usr/include/c++/15/format: 850             in std::__format::__write_padded<std::__format::_Sink_iter<wchar_t>, wchar_t>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)()
844     	  {
845     	    // Encode fill char as multiple code units of type _CharT.
846     	    const char32_t __arr[1]{ __fill_char };
847     	    _Utf_view<_CharT, const char32_t(&)[1]> __v(__arr);
848     	    basic_string<_CharT> __padstr(__v.begin(), __v.end());
849     	    __padding = __padstr;
>>>     CID 1662751:         Integer handling issues  (INTEGER_OVERFLOW)
>>>     Expression "__l--", where "__l" is known to be equal to 0, underflows the type of "__l--", which is type "std::size_t".
850     	    while (__l-- > 0)
851     	      __out = __format::__write(std::move(__out), __padding);
852     	    __out = __format::__write(std::move(__out), __str);
853     	    while (__r-- > 0)
854     	      __out = __format::__write(std::move(__out), __padding);
855     	    return __out;

** CID 1662731:       Uninitialized variables  (MISSING_RETURN)
/usr/include/c++/15/format: 1686           in std::__format::__formatter_int<wchar_t>::_S_character_width(wchar_t)()


_____________________________________________________________________________________________
*** CID 1662731:         Uninitialized variables  (MISSING_RETURN)
/usr/include/c++/15/format: 1686             in std::__format::__formatter_int<wchar_t>::_S_character_width(wchar_t)()
1680     
1681           [[__gnu__::__always_inline__]]
1682           static size_t
1683           _S_character_width(_CharT __c)
1684           {
1685     	// N.B. single byte cannot encode charcter of width greater than 1
>>>     CID 1662731:         Uninitialized variables  (MISSING_RETURN)
>>>     Arriving at the end of a function without returning a value.
1686     	if constexpr (sizeof(_CharT) > 1u &&
1687     			__unicode::__literal_encoding_is_unicode<_CharT>())
1688     	  return __unicode::__field_width(__c);
1689     	else
1690     	  return 1u;
1691           }

** CID 1662730:         (MISSING_RETURN)
/usr/include/c++/15/format: 1417           in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
/usr/include/c++/15/format: 1417           in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()


_____________________________________________________________________________________________
*** CID 1662730:           (MISSING_RETURN)
/usr/include/c++/15/format: 1417             in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
1411     #endif
1412     
1413         private:
1414           static size_t
1415           _S_trunc(basic_string_view<_CharT>& __s, size_t __prec)
1416           {
>>>     CID 1662730:           (MISSING_RETURN)
>>>     Arriving at the end of a function without returning a value.
1417     	if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
1418     	 {
1419     	   if (__prec != basic_string_view<_CharT>::npos)
1420     	     return __unicode::__truncate(__s, __prec);
1421     	   else
1422     	     return __unicode::__field_width(__s);
/usr/include/c++/15/format: 1417             in std::__format::__formatter_str<wchar_t>::_S_trunc(std::basic_string_view<wchar_t, std::char_traits<wchar_t>> &, unsigned long)()
1411     #endif
1412     
1413         private:
1414           static size_t
1415           _S_trunc(basic_string_view<_CharT>& __s, size_t __prec)
1416           {
>>>     CID 1662730:           (MISSING_RETURN)
>>>     Arriving at the end of a function without returning a value.
1417     	if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
1418     	 {
1419     	   if (__prec != basic_string_view<_CharT>::npos)
1420     	     return __unicode::__truncate(__s, __prec);
1421     	   else
1422     	     return __unicode::__field_width(__s);

** CID 1662727:         (USE_AFTER_MOVE)
/usr/include/c++/15/format: 819           in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819           in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819           in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
/usr/include/c++/15/format: 819           in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()


_____________________________________________________________________________________________
*** CID 1662727:           (USE_AFTER_MOVE)
/usr/include/c++/15/format: 819             in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813     	  {
814     	    __o = __format::__write(std::move(__o), __padding);
815     	    __n -= __padding.size();
816     	  }
817     	if (__n != 0)
818     	  __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>>     CID 1662727:           (USE_AFTER_MOVE)
>>>     Returning while reference parameter "__o" is in a moved state.
819           };
820     
821           size_t __l, __r, __max;
822           if (__align == _Align_centre)
823     	{
824     	  __l = __nfill / 2;
/usr/include/c++/15/format: 819             in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813     	  {
814     	    __o = __format::__write(std::move(__o), __padding);
815     	    __n -= __padding.size();
816     	  }
817     	if (__n != 0)
818     	  __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>>     CID 1662727:           (USE_AFTER_MOVE)
>>>     Returning while reference parameter "__o" is in a moved state.
819           };
820     
821           size_t __l, __r, __max;
822           if (__align == _Align_centre)
823     	{
824     	  __l = __nfill / 2;
/usr/include/c++/15/format: 819             in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813     	  {
814     	    __o = __format::__write(std::move(__o), __padding);
815     	    __n -= __padding.size();
816     	  }
817     	if (__n != 0)
818     	  __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>>     CID 1662727:           (USE_AFTER_MOVE)
>>>     Returning while reference parameter "__o" is in a moved state.
819           };
820     
821           size_t __l, __r, __max;
822           if (__align == _Align_centre)
823     	{
824     	  __l = __nfill / 2;
/usr/include/c++/15/format: 819             in std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(T1, std::basic_string_view<T2, std::char_traits<T2>>, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter<char> &) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter<char> &) const()
813     	  {
814     	    __o = __format::__write(std::move(__o), __padding);
815     	    __n -= __padding.size();
816     	  }
817     	if (__n != 0)
818     	  __o = __format::__write(std::move(__o), __padding.substr(0, __n));
>>>     CID 1662727:           (USE_AFTER_MOVE)
>>>     Returning while reference parameter "__o" is in a moved state.
819           };
820     
821           size_t __l, __r, __max;
822           if (__align == _Align_centre)
823     	{
824     	  __l = __nfill / 2;

** CID 1662584:         (RESOURCE_LEAK)
/usr/include/c++/15/bits/hashtable.h: 2353           in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_image_table_data>, std::allocator<std::pair<const dng_fingerprint, dng_image_table_data>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_image_table_data>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353           in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>, std::allocator<std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, std::shared_ptr<dng_bmff_box>>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353           in std::_Hashtable<dng_string, std::pair<const dng_string, dng_semantic_mask>, std::allocator<std::pair<const dng_string, dng_semantic_mask>>, std::__detail::_Select1st, std::equal_to<dng_string>, dng_string_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_string, dng_semantic_mask>>(T1 &&...)()
/usr/include/c++/15/bits/hashtable.h: 2353           in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>, std::allocator<std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_packed_image_table_cache::entry_t>>(T1 &&...)()


_____________________________________________________________________________________________
*** CID 1662584:           (RESOURCE_LEAK)
/usr/include/c++/15/bits/hashtable.h: 2353             in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_image_table_data>, std::allocator<std::pair<const dng_fingerprint, dng_image_table_data>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_image_table_data>>(T1 &&...)()
2347     	    const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348     	    __kp = std::__addressof(__key);
2349     	  }
2350     
2351     	if (auto __loc = _M_locate(*__kp))
2352     	  // There is already an equivalent node, no insertion.
>>>     CID 1662584:           (RESOURCE_LEAK)
>>>     Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353     	  return { iterator(__loc), false };
2354     	else
2355     	  {
2356     	    __code = __loc._M_hash_code;
2357     	    __bkt = __loc._M_bucket_index;
2358     	  }
/usr/include/c++/15/bits/hashtable.h: 2353             in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>, std::allocator<std::pair<const dng_fingerprint, std::shared_ptr<dng_bmff_box>>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, std::shared_ptr<dng_bmff_box>>>(T1 &&...)()
2347     	    const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348     	    __kp = std::__addressof(__key);
2349     	  }
2350     
2351     	if (auto __loc = _M_locate(*__kp))
2352     	  // There is already an equivalent node, no insertion.
>>>     CID 1662584:           (RESOURCE_LEAK)
>>>     Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353     	  return { iterator(__loc), false };
2354     	else
2355     	  {
2356     	    __code = __loc._M_hash_code;
2357     	    __bkt = __loc._M_bucket_index;
2358     	  }
/usr/include/c++/15/bits/hashtable.h: 2353             in std::_Hashtable<dng_string, std::pair<const dng_string, dng_semantic_mask>, std::allocator<std::pair<const dng_string, dng_semantic_mask>>, std::__detail::_Select1st, std::equal_to<dng_string>, dng_string_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_string, dng_semantic_mask>>(T1 &&...)()
2347     	    const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348     	    __kp = std::__addressof(__key);
2349     	  }
2350     
2351     	if (auto __loc = _M_locate(*__kp))
2352     	  // There is already an equivalent node, no insertion.
>>>     CID 1662584:           (RESOURCE_LEAK)
>>>     Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353     	  return { iterator(__loc), false };
2354     	else
2355     	  {
2356     	    __code = __loc._M_hash_code;
2357     	    __bkt = __loc._M_bucket_index;
2358     	  }
/usr/include/c++/15/bits/hashtable.h: 2353             in std::_Hashtable<dng_fingerprint, std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>, std::allocator<std::pair<const dng_fingerprint, dng_packed_image_table_cache::entry_t>>, std::__detail::_Select1st, std::equal_to<dng_fingerprint>, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<(bool)1, (bool)0, (bool)1>>::_M_emplace_uniq<std::pair<dng_fingerprint, dng_packed_image_table_cache::entry_t>>(T1 &&...)()
2347     	    const key_type& __key = _ExtractKey{}(__node._M_node->_M_v());
2348     	    __kp = std::__addressof(__key);
2349     	  }
2350     
2351     	if (auto __loc = _M_locate(*__kp))
2352     	  // There is already an equivalent node, no insertion.
>>>     CID 1662584:           (RESOURCE_LEAK)
>>>     Variable "__node" going out of scope leaks the storage "__node._M_node" points to.
2353     	  return { iterator(__loc), false };
2354     	else
2355     	  {
2356     	    __code = __loc._M_hash_code;
2357     	    __bkt = __loc._M_bucket_index;
2358     	  }


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://scan.coverity.com/projects/digikam?tab=overview


----==_mimepart_6a56591a29f75_e0b9f2c20652419983548
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>New Defects Reported - digiKam</title>
  <style>
    body { font-family: Arial, sans-serif; color: #222; line-height: 1.6; }
    .button {
      display: inline-block;
      padding: 10px 20px;
      margin: 20px 0;
      font-size: 16px;
      color: #fff !important;
      background-color: #0056b3;
      text-decoration: none;
      border-radius: 5px;
    }
    pre {
      background: #f8f9fa;
      padding: 10px;
      border-radius: 5px;
      font-size: 14px;
      overflow-x: auto;
    }
  </style>
</head>
<body>
  <p>Hi,</p>

  <p>
    Please find the latest report on new defect(s) introduced to <strong>digiKam</strong>
     found with Coverity Scan.
  </p>  

  <ul>
    <li><strong>New Defects Found:</strong> 12</li>
      <li>
        45 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.
      </li>
    <li><strong>Defects Shown:</strong> Showing 12 of 12 defect(s)</li>
  </ul>

  <h3>Defect Details</h3>
  <pre>
** CID 1696747:       Memory - illegal accesses  (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 201           in Marble::PlanetarySats::setSatFile(const char *)()


_____________________________________________________________________________________________
*** CID 1696747:         Memory - illegal accesses  (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 201             in Marble::PlanetarySats::setSatFile(const char *)()
195             min = 0;
196         };
197     }
198     
199     void PlanetarySats::setSatFile(const char* const fname)
200     {
&gt;&gt;&gt;     CID 1696747:         Memory - illegal accesses  (BUFFER_SIZE)
&gt;&gt;&gt;     Calling &quot;strncpy&quot; with a maximum size argument of 205 bytes on destination array &quot;this-&gt;pls_satelmfl&quot; of size 205 bytes might leave the destination string unterminated.
201         strncpy(pls_satelmfl, fname, sizeof(pls_satelmfl));
202     }
203     
204     void PlanetarySats::setStateVector(double mjd, double x, double y, double z, double vx, double vy, double vz)
205     {
206         pls_rep[0] = x;

** CID 1696746:       Memory - illegal accesses  (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 400           in Marble::PlanetarySats::setPlanet(const char *)()


_____________________________________________________________________________________________
*** CID 1696746:         Memory - illegal accesses  (BUFFER_SIZE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/astro/planetarySats.cpp: 400             in Marble::PlanetarySats::setPlanet(const char *)()
394         return nst;
395     }
396     
397     void PlanetarySats::setPlanet(const char* const pname)
398     {
399         pls_moonflg = false;
&gt;&gt;&gt;     CID 1696746:         Memory - illegal accesses  (BUFFER_SIZE)
&gt;&gt;&gt;     Calling &quot;strncpy&quot; with a maximum size argument of 40 bytes on destination array &quot;this-&gt;pls_plntname&quot; of size 40 bytes might leave the destination string unterminated.
400         strncpy(pls_plntname, pname, sizeof(pls_plntname));
401     
402         if (strncmp(&quot;Mars&quot;, pname, 4) == 0)
403         {
404             getMars();
405         }

** CID 1696745:         (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 353           in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()


_____________________________________________________________________________________________
*** CID 1696745:           (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 332             in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
326     
327                 pReader-&gt;offset = 0;
328             }
329     
330             if (fread(&amp;(ds-&gt;type), 1, 1, pReader-&gt;f) == 0)
331             {
&gt;&gt;&gt;     CID 1696745:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_setError&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
332                 o5mreader_setError(pReader,
333                                    O5MREADER_ERR_CODE_UNEXPECTED_END_OF_FILE,
334                                    NULL);
335     
336                 return O5MREADER_ITERATE_RET_ERR;
337             }
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 353             in Marble::o5mreader_iterateDataSet(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
347             }
348             else if (0xf0 == ds-&gt;type)
349             {
350             }
351             else
352             {
&gt;&gt;&gt;     CID 1696745:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_readUInt&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
353                 if (o5mreader_readUInt(pReader, &amp;pReader-&gt;offset) == O5MREADER_RET_ERR)
354                 {
355                     return O5MREADER_ITERATE_RET_ERR;
356                 }
357     
358                 pReader-&gt;current = ftell(pReader-&gt;f);

** CID 1696744:       Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)


_____________________________________________________________________________________________
*** CID 1696744:         Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
/home/gilles/devel/GIT/9.x/core/libs/properties/itempropertiessidebardb.cpp: 1014             in Digikam::ItemPropertiesSideBarDB::calculateItemsMultithreaded()()
1008         // -- Total Album Items Properties
1009     
1010         Q_EMIT signalSetTotalCount(d-&gt;allInfos.count());
1011     
1012         qint64 totalFileSize           = selectionFileSize;
1013         ItemInfoList totalGroups       = selectionGroups;
&gt;&gt;&gt;     CID 1696744:         Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
&gt;&gt;&gt;     &quot;selectionMimes&quot; is copied in call to copy constructor for class &quot;QHash&lt;QString, int&gt;&quot;, when it could be moved instead.
1014         QHash&lt;QString, int&gt; totalMimes = selectionMimes;
1015     
1016         for (const ItemInfo&amp; info : std::as_const(restInfos))
1017         {
1018             if (d-&gt;selectedItemsTask.isCanceled())
1019             {

** CID 1696743:         (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464           in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()


_____________________________________________________________________________________________
*** CID 1696743:           (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 478             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
472         {
473             pReader-&gt;canIterateTags = 0;
474             return O5MREADER_ITERATE_RET_DONE;
475         }
476     
477         mtx.lock();
&gt;&gt;&gt;     CID 1696743:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_readStrPair&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
478         O5mreaderRet strPair = o5mreader_readStrPair(pReader, &amp;pReader-&gt;tagPair, 0);
479         mtx.unlock();
480     
481         if (strPair == O5MREADER_RET_ERR)
482         {
483             return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 478             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
472         {
473             pReader-&gt;canIterateTags = 0;
474             return O5MREADER_ITERATE_RET_DONE;
475         }
476     
477         mtx.lock();
&gt;&gt;&gt;     CID 1696743:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_readStrPair&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
478         O5mreaderRet strPair = o5mreader_readStrPair(pReader, &amp;pReader-&gt;tagPair, 0);
479         mtx.unlock();
480     
481         if (strPair == O5MREADER_RET_ERR)
482         {
483             return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 456             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
450                 return O5MREADER_ITERATE_RET_ERR;
451             }
452         }
453     
454         if (pReader-&gt;canIterateNds)
455         {
&gt;&gt;&gt;     CID 1696743:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_skipNds&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
456             if (o5mreader_skipNds(pReader) == O5MREADER_ITERATE_RET_ERR)
457             {
458                 return O5MREADER_ITERATE_RET_ERR;
459             }
460         }
461     
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
458                 return O5MREADER_ITERATE_RET_ERR;
459             }
460         }
461     
462         if (!pReader-&gt;canIterateTags)
463         {
&gt;&gt;&gt;     CID 1696743:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_setError&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
464             o5mreader_setError(pReader,
465                                O5MREADER_ERR_CODE_CAN_NOT_ITERATE_TAGS_HERE,
466                                NULL
467                               );
468             return O5MREADER_ITERATE_RET_ERR;
469         }
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 464             in Marble::o5mreader_iterateTags(Marble::O5mreaderStruct *, char **, char **)()
458                 return O5MREADER_ITERATE_RET_ERR;
459             }
460         }
461     
462         if (!pReader-&gt;canIterateTags)
463         {
&gt;&gt;&gt;     CID 1696743:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_setError&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
464             o5mreader_setError(pReader,
465                                O5MREADER_ERR_CODE_CAN_NOT_ITERATE_TAGS_HERE,
466                                NULL
467                               );
468             return O5MREADER_ITERATE_RET_ERR;
469         }

** CID 1696742:       Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)


_____________________________________________________________________________________________
*** CID 1696742:         Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
/home/gilles/devel/GIT/9.x/core/libs/database/haar/haariface.cpp: 436             in Digikam::HaarIface::bestMatchesWithThreshold(long long, Digikam::Haar::SignatureData *, double, double, const QList&lt;int&gt; &amp;, Digikam::HaarIface::DuplicatesSearchRestrictions, Digikam::HaarIface::SketchType)()
430             {
431                 qCDebug(DIGIKAM_DATABASE_LOG) &lt;&lt; it.key() &lt;&lt; QString::number(it.value() * 100) + QLatin1Char(&#39;%&#39;);
432             }
433         }
434     
435         result.first  = avgPercentage;
&gt;&gt;&gt;     CID 1696742:         Performance inefficiencies  (COPY_INSTEAD_OF_MOVE)
&gt;&gt;&gt;     &quot;bestResults&quot; is copied in call to copy assignment for class &quot;QMap&lt;long long, double&gt;&quot;, when it could be moved instead.
436         result.second = bestResults;
437     
438         return result;
439     }
440     
441     bool HaarIface::fulfillsRestrictions(qlonglong imageId, int albumId,

** CID 1696741:         (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 411           in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()


_____________________________________________________________________________________________
*** CID 1696741:           (USE_AFTER_FREE)
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 427             in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
421             if (o5mreader_thereAreNoMoreData(pReader))
422             {
423                 return O5MREADER_ITERATE_RET_DONE;
424             }
425     
426             mtx.lock();
&gt;&gt;&gt;     CID 1696741:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_readStrPair&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
427             O5mreaderRet strPair = o5mreader_readStrPair(pReader, &amp;pReader-&gt;tagPair, 0);
428             mtx.unlock();
429     
430             if (strPair == O5MREADER_ITERATE_RET_ERR)
431             {
432                 return O5MREADER_ITERATE_RET_ERR;
/home/gilles/devel/GIT/9.x/core/utilities/geolocation/engine/plugins/runner/osm/o5mreader/o5mreader.cpp: 411             in Marble::o5mreader_readVersion(Marble::O5mreaderStruct *, Marble::O5mreaderDatasetStruct *)()
405         }
406     
407         ds-&gt;version = (uint32_t)tmp;
408     
409         if (tmp)
410         {
&gt;&gt;&gt;     CID 1696741:           (USE_AFTER_FREE)
&gt;&gt;&gt;     Calling &quot;o5mreader_readUInt&quot; frees pointer &quot;pReader-&gt;errMsg&quot; which has already been freed.
411             if (o5mreader_readUInt(pReader, &amp;tmp) == O5MREADER_ITERATE_RET_ERR)
412             {
413                 return O5MREADER_ITERATE_RET_ERR;
414             }
415     
416             if (o5mreader_readInt(pReader, &amp;tmp) == O5MREADER_ITERATE_RET_ERR)

** CID 1662751:       Integer handling issues  (INTEGER_OVERFLOW)
/usr/include/c++/15/format: 850           in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;wchar_t&gt;, wchar_t&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)()


_____________________________________________________________________________________________
*** CID 1662751:         Integer handling issues  (INTEGER_OVERFLOW)
/usr/include/c++/15/format: 850             in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;wchar_t&gt;, wchar_t&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)()
844     	  {
845     	    // Encode fill char as multiple code units of type _CharT.
846     	    const char32_t __arr[1]{ __fill_char };
847     	    _Utf_view&lt;_CharT, const char32_t(&amp;)[1]&gt; __v(__arr);
848     	    basic_string&lt;_CharT&gt; __padstr(__v.begin(), __v.end());
849     	    __padding = __padstr;
&gt;&gt;&gt;     CID 1662751:         Integer handling issues  (INTEGER_OVERFLOW)
&gt;&gt;&gt;     Expression &quot;__l--&quot;, where &quot;__l&quot; is known to be equal to 0, underflows the type of &quot;__l--&quot;, which is type &quot;std::size_t&quot;.
850     	    while (__l-- &gt; 0)
851     	      __out = __format::__write(std::move(__out), __padding);
852     	    __out = __format::__write(std::move(__out), __str);
853     	    while (__r-- &gt; 0)
854     	      __out = __format::__write(std::move(__out), __padding);
855     	    return __out;

** CID 1662731:       Uninitialized variables  (MISSING_RETURN)
/usr/include/c++/15/format: 1686           in std::__format::__formatter_int&lt;wchar_t&gt;::_S_character_width(wchar_t)()


_____________________________________________________________________________________________
*** CID 1662731:         Uninitialized variables  (MISSING_RETURN)
/usr/include/c++/15/format: 1686             in std::__format::__formatter_int&lt;wchar_t&gt;::_S_character_width(wchar_t)()
1680     
1681           [[__gnu__::__always_inline__]]
1682           static size_t
1683           _S_character_width(_CharT __c)
1684           {
1685     	// N.B. single byte cannot encode charcter of width greater than 1
&gt;&gt;&gt;     CID 1662731:         Uninitialized variables  (MISSING_RETURN)
&gt;&gt;&gt;     Arriving at the end of a function without returning a value.
1686     	if constexpr (sizeof(_CharT) &gt; 1u &amp;&amp;
1687     			__unicode::__literal_encoding_is_unicode&lt;_CharT&gt;())
1688     	  return __unicode::__field_width(__c);
1689     	else
1690     	  return 1u;
1691           }

** CID 1662730:         (MISSING_RETURN)
/usr/include/c++/15/format: 1417           in std::__format::__formatter_str&lt;wchar_t&gt;::_S_trunc(std::basic_string_view&lt;wchar_t, std::char_traits&lt;wchar_t&gt;&gt; &amp;, unsigned long)()
/usr/include/c++/15/format: 1417           in std::__format::__formatter_str&lt;wchar_t&gt;::_S_trunc(std::basic_string_view&lt;wchar_t, std::char_traits&lt;wchar_t&gt;&gt; &amp;, unsigned long)()


_____________________________________________________________________________________________
*** CID 1662730:           (MISSING_RETURN)
/usr/include/c++/15/format: 1417             in std::__format::__formatter_str&lt;wchar_t&gt;::_S_trunc(std::basic_string_view&lt;wchar_t, std::char_traits&lt;wchar_t&gt;&gt; &amp;, unsigned long)()
1411     #endif
1412     
1413         private:
1414           static size_t
1415           _S_trunc(basic_string_view&lt;_CharT&gt;&amp; __s, size_t __prec)
1416           {
&gt;&gt;&gt;     CID 1662730:           (MISSING_RETURN)
&gt;&gt;&gt;     Arriving at the end of a function without returning a value.
1417     	if constexpr (__unicode::__literal_encoding_is_unicode&lt;_CharT&gt;())
1418     	 {
1419     	   if (__prec != basic_string_view&lt;_CharT&gt;::npos)
1420     	     return __unicode::__truncate(__s, __prec);
1421     	   else
1422     	     return __unicode::__field_width(__s);
/usr/include/c++/15/format: 1417             in std::__format::__formatter_str&lt;wchar_t&gt;::_S_trunc(std::basic_string_view&lt;wchar_t, std::char_traits&lt;wchar_t&gt;&gt; &amp;, unsigned long)()
1411     #endif
1412     
1413         private:
1414           static size_t
1415           _S_trunc(basic_string_view&lt;_CharT&gt;&amp; __s, size_t __prec)
1416           {
&gt;&gt;&gt;     CID 1662730:           (MISSING_RETURN)
&gt;&gt;&gt;     Arriving at the end of a function without returning a value.
1417     	if constexpr (__unicode::__literal_encoding_is_unicode&lt;_CharT&gt;())
1418     	 {
1419     	   if (__prec != basic_string_view&lt;_CharT&gt;::npos)
1420     	     return __unicode::__truncate(__s, __prec);
1421     	   else
1422     	     return __unicode::__field_width(__s);

** CID 1662727:         (USE_AFTER_MOVE)
/usr/include/c++/15/format: 819           in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;char&gt;, char&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) const()
/usr/include/c++/15/format: 819           in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;char&gt;, char&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) const()
/usr/include/c++/15/format: 819           in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;char&gt;, char&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) const()
/usr/include/c++/15/format: 819           in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;char&gt;, char&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) const()


_____________________________________________________________________________________________
*** CID 1662727:           (USE_AFTER_MOVE)
/usr/include/c++/15/format: 819             in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;char&gt;, char&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) const()
813     	  {
814     	    __o = __format::__write(std::move(__o), __padding);
815     	    __n -= __padding.size();
816     	  }
817     	if (__n != 0)
818     	  __o = __format::__write(std::move(__o), __padding.substr(0, __n));
&gt;&gt;&gt;     CID 1662727:           (USE_AFTER_MOVE)
&gt;&gt;&gt;     Returning while reference parameter &quot;__o&quot; is in a moved state.
819           };
820     
821           size_t __l, __r, __max;
822           if (__align == _Align_centre)
823     	{
824     	  __l = __nfill / 2;
/usr/include/c++/15/format: 819             in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;char&gt;, char&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) const()
813     	  {
814     	    __o = __format::__write(std::move(__o), __padding);
815     	    __n -= __padding.size();
816     	  }
817     	if (__n != 0)
818     	  __o = __format::__write(std::move(__o), __padding.substr(0, __n));
&gt;&gt;&gt;     CID 1662727:           (USE_AFTER_MOVE)
&gt;&gt;&gt;     Returning while reference parameter &quot;__o&quot; is in a moved state.
819           };
820     
821           size_t __l, __r, __max;
822           if (__align == _Align_centre)
823     	{
824     	  __l = __nfill / 2;
/usr/include/c++/15/format: 819             in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;char&gt;, char&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) const()
813     	  {
814     	    __o = __format::__write(std::move(__o), __padding);
815     	    __n -= __padding.size();
816     	  }
817     	if (__n != 0)
818     	  __o = __format::__write(std::move(__o), __padding.substr(0, __n));
&gt;&gt;&gt;     CID 1662727:           (USE_AFTER_MOVE)
&gt;&gt;&gt;     Returning while reference parameter &quot;__o&quot; is in a moved state.
819           };
820     
821           size_t __l, __r, __max;
822           if (__align == _Align_centre)
823     	{
824     	  __l = __nfill / 2;
/usr/include/c++/15/format: 819             in std::__format::__write_padded&lt;std::__format::_Sink_iter&lt;char&gt;, char&gt;(T1, std::basic_string_view&lt;T2, std::char_traits&lt;T2&gt;&gt;, std::__format::_Align, unsigned long, char32_t)::[lambda(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) (instance 1)]::operator ()(unsigned long, std::__format::_Sink_iter&lt;char&gt; &amp;) const()
813     	  {
814     	    __o = __format::__write(std::move(__o), __padding);
815     	    __n -= __padding.size();
816     	  }
817     	if (__n != 0)
818     	  __o = __format::__write(std::move(__o), __padding.substr(0, __n));
&gt;&gt;&gt;     CID 1662727:           (USE_AFTER_MOVE)
&gt;&gt;&gt;     Returning while reference parameter &quot;__o&quot; is in a moved state.
819           };
820     
821           size_t __l, __r, __max;
822           if (__align == _Align_centre)
823     	{
824     	  __l = __nfill / 2;

** CID 1662584:         (RESOURCE_LEAK)
/usr/include/c++/15/bits/hashtable.h: 2353           in std::_Hashtable&lt;dng_fingerprint, std::pair&lt;const dng_fingerprint, dng_image_table_data&gt;, std::allocator&lt;std::pair&lt;const dng_fingerprint, dng_image_table_data&gt;&gt;, std::__detail::_Select1st, std::equal_to&lt;dng_fingerprint&gt;, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;(bool)1, (bool)0, (bool)1&gt;&gt;::_M_emplace_uniq&lt;std::pair&lt;dng_fingerprint, dng_image_table_data&gt;&gt;(T1 &amp;&amp;...)()
/usr/include/c++/15/bits/hashtable.h: 2353           in std::_Hashtable&lt;dng_fingerprint, std::pair&lt;const dng_fingerprint, std::shared_ptr&lt;dng_bmff_box&gt;&gt;, std::allocator&lt;std::pair&lt;const dng_fingerprint, std::shared_ptr&lt;dng_bmff_box&gt;&gt;&gt;, std::__detail::_Select1st, std::equal_to&lt;dng_fingerprint&gt;, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;(bool)1, (bool)0, (bool)1&gt;&gt;::_M_emplace_uniq&lt;std::pair&lt;dng_fingerprint, std::shared_ptr&lt;dng_bmff_box&gt;&gt;&gt;(T1 &amp;&amp;...)()
/usr/include/c++/15/bits/hashtable.h: 2353           in std::_Hashtable&lt;dng_string, std::pair&lt;const dng_string, dng_semantic_mask&gt;, std::allocator&lt;std::pair&lt;const dng_string, dng_semantic_mask&gt;&gt;, std::__detail::_Select1st, std::equal_to&lt;dng_string&gt;, dng_string_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;(bool)1, (bool)0, (bool)1&gt;&gt;::_M_emplace_uniq&lt;std::pair&lt;dng_string, dng_semantic_mask&gt;&gt;(T1 &amp;&amp;...)()
/usr/include/c++/15/bits/hashtable.h: 2353           in std::_Hashtable&lt;dng_fingerprint, std::pair&lt;const dng_fingerprint, dng_packed_image_table_cache::entry_t&gt;, std::allocator&lt;std::pair&lt;const dng_fingerprint, dng_packed_image_table_cache::entry_t&gt;&gt;, std::__detail::_Select1st, std::equal_to&lt;dng_fingerprint&gt;, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;(bool)1, (bool)0, (bool)1&gt;&gt;::_M_emplace_uniq&lt;std::pair&lt;dng_fingerprint, dng_packed_image_table_cache::entry_t&gt;&gt;(T1 &amp;&amp;...)()


_____________________________________________________________________________________________
*** CID 1662584:           (RESOURCE_LEAK)
/usr/include/c++/15/bits/hashtable.h: 2353             in std::_Hashtable&lt;dng_fingerprint, std::pair&lt;const dng_fingerprint, dng_image_table_data&gt;, std::allocator&lt;std::pair&lt;const dng_fingerprint, dng_image_table_data&gt;&gt;, std::__detail::_Select1st, std::equal_to&lt;dng_fingerprint&gt;, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;(bool)1, (bool)0, (bool)1&gt;&gt;::_M_emplace_uniq&lt;std::pair&lt;dng_fingerprint, dng_image_table_data&gt;&gt;(T1 &amp;&amp;...)()
2347     	    const key_type&amp; __key = _ExtractKey{}(__node._M_node-&gt;_M_v());
2348     	    __kp = std::__addressof(__key);
2349     	  }
2350     
2351     	if (auto __loc = _M_locate(*__kp))
2352     	  // There is already an equivalent node, no insertion.
&gt;&gt;&gt;     CID 1662584:           (RESOURCE_LEAK)
&gt;&gt;&gt;     Variable &quot;__node&quot; going out of scope leaks the storage &quot;__node._M_node&quot; points to.
2353     	  return { iterator(__loc), false };
2354     	else
2355     	  {
2356     	    __code = __loc._M_hash_code;
2357     	    __bkt = __loc._M_bucket_index;
2358     	  }
/usr/include/c++/15/bits/hashtable.h: 2353             in std::_Hashtable&lt;dng_fingerprint, std::pair&lt;const dng_fingerprint, std::shared_ptr&lt;dng_bmff_box&gt;&gt;, std::allocator&lt;std::pair&lt;const dng_fingerprint, std::shared_ptr&lt;dng_bmff_box&gt;&gt;&gt;, std::__detail::_Select1st, std::equal_to&lt;dng_fingerprint&gt;, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;(bool)1, (bool)0, (bool)1&gt;&gt;::_M_emplace_uniq&lt;std::pair&lt;dng_fingerprint, std::shared_ptr&lt;dng_bmff_box&gt;&gt;&gt;(T1 &amp;&amp;...)()
2347     	    const key_type&amp; __key = _ExtractKey{}(__node._M_node-&gt;_M_v());
2348     	    __kp = std::__addressof(__key);
2349     	  }
2350     
2351     	if (auto __loc = _M_locate(*__kp))
2352     	  // There is already an equivalent node, no insertion.
&gt;&gt;&gt;     CID 1662584:           (RESOURCE_LEAK)
&gt;&gt;&gt;     Variable &quot;__node&quot; going out of scope leaks the storage &quot;__node._M_node&quot; points to.
2353     	  return { iterator(__loc), false };
2354     	else
2355     	  {
2356     	    __code = __loc._M_hash_code;
2357     	    __bkt = __loc._M_bucket_index;
2358     	  }
/usr/include/c++/15/bits/hashtable.h: 2353             in std::_Hashtable&lt;dng_string, std::pair&lt;const dng_string, dng_semantic_mask&gt;, std::allocator&lt;std::pair&lt;const dng_string, dng_semantic_mask&gt;&gt;, std::__detail::_Select1st, std::equal_to&lt;dng_string&gt;, dng_string_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;(bool)1, (bool)0, (bool)1&gt;&gt;::_M_emplace_uniq&lt;std::pair&lt;dng_string, dng_semantic_mask&gt;&gt;(T1 &amp;&amp;...)()
2347     	    const key_type&amp; __key = _ExtractKey{}(__node._M_node-&gt;_M_v());
2348     	    __kp = std::__addressof(__key);
2349     	  }
2350     
2351     	if (auto __loc = _M_locate(*__kp))
2352     	  // There is already an equivalent node, no insertion.
&gt;&gt;&gt;     CID 1662584:           (RESOURCE_LEAK)
&gt;&gt;&gt;     Variable &quot;__node&quot; going out of scope leaks the storage &quot;__node._M_node&quot; points to.
2353     	  return { iterator(__loc), false };
2354     	else
2355     	  {
2356     	    __code = __loc._M_hash_code;
2357     	    __bkt = __loc._M_bucket_index;
2358     	  }
/usr/include/c++/15/bits/hashtable.h: 2353             in std::_Hashtable&lt;dng_fingerprint, std::pair&lt;const dng_fingerprint, dng_packed_image_table_cache::entry_t&gt;, std::allocator&lt;std::pair&lt;const dng_fingerprint, dng_packed_image_table_cache::entry_t&gt;&gt;, std::__detail::_Select1st, std::equal_to&lt;dng_fingerprint&gt;, dng_fingerprint_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits&lt;(bool)1, (bool)0, (bool)1&gt;&gt;::_M_emplace_uniq&lt;std::pair&lt;dng_fingerprint, dng_packed_image_table_cache::entry_t&gt;&gt;(T1 &amp;&amp;...)()
2347     	    const key_type&amp; __key = _ExtractKey{}(__node._M_node-&gt;_M_v());
2348     	    __kp = std::__addressof(__key);
2349     	  }
2350     
2351     	if (auto __loc = _M_locate(*__kp))
2352     	  // There is already an equivalent node, no insertion.
&gt;&gt;&gt;     CID 1662584:           (RESOURCE_LEAK)
&gt;&gt;&gt;     Variable &quot;__node&quot; going out of scope leaks the storage &quot;__node._M_node&quot; points to.
2353     	  return { iterator(__loc), false };
2354     	else
2355     	  {
2356     	    __code = __loc._M_hash_code;
2357     	    __bkt = __loc._M_bucket_index;
2358     	  }

  </pre>

  <p>
    <a href="https://scan.coverity.com/projects/digikam?tab=overview" class="button">View Defects in Coverity Scan</a>
  </p>

  <p>Best regards,</p>
  <p>The Coverity Scan Admin Team</p>
  <img class="logo" width="140" src="https://scan.coverity.com/assets/BlackDuckLogo-6697adc63e07340464201a2ad534d3d3e44f95d36edda20b140440d34f05372f.svg" />
</body>
</html>
----==_mimepart_6a56591a29f75_e0b9f2c20652419983548--