Repository: xbmc/xbmc
File: xbmc/utils/SaveFileStateJob.cpp (C++)

Code before:
              data["type"] = item.GetVideoInfoTag()->m_type;
              CServiceBroker::GetAnnouncementManager()->Announce(ANNOUNCEMENT::VideoLibrary,
                                                                 "OnUpdate", data);
            }

            updateListing = true;
          }
        }

        if (item.HasVideoInfoTag() && item.GetVideoInfoTag()->HasStreamDetails() &&
            !item.IsLiveTV())
        {
          CFileItem dbItem(item);

          // Check whether the item's db streamdetails need updating
          if (!videodatabase.GetStreamDetails(dbItem) ||
              dbItem.GetVideoInfoTag()->m_streamDetails != item.GetVideoInfoTag()->m_streamDetails)
          {
            videoDbSuccess = videodatabase.SetStreamDetailsForFile(
                item.GetVideoInfoTag()->m_streamDetails, progressTrackingFile);
            updateListing = !videoDbSuccess;
          }
        }

        // See if fileId needs updating
        if (URIUtils::IsBluray(item.GetDynPath()))
        {
          if (item.GetVideoContentType() == VideoDbContentType::MOVIES)
          {
            const auto& tag{item.GetVideoInfoTag()};
            const int currentFileId{videodatabase.GetFileIdByMovie(tag->m_iDbId)};
            if (tag->m_strFileNameAndPath != item.GetDynPath())
              videoDbSuccess = videodatabase.SetFileForMovie(item.GetDynPath(), currentFileId);
          }
          else if (item.GetVideoContentType() == VideoDbContentType::EPISODES)
          {
            const auto& tag{item.GetVideoInfoTag()};
            const int currentFileId{videodatabase.GetFileIdByEpisode(tag->m_iDbId)};
            if (tag->m_strFileNameAndPath != item.GetDynPath())
              videoDbSuccess = videodatabase.SetFileForEpisode(
                  item.GetDynPath(), item.GetVideoInfoTag()->m_iDbId, currentFileId);
          }
        }

        if (videoDbSuccess)
          videodatabase.CommitTransaction();
        else
          videodatabase.RollbackTransaction();

        if (updateListing)
        {

Review comment (suggestion):
This value is overwritten below for bluray paths. If `videoDbSuccess` is set to false, the calls below should be skipped, right?. When a success flag is assigned multiple times, I would expect the operation to be a logical `&=` effectively.

Code after:
              data["type"] = item.GetVideoInfoTag()->m_type;
              CServiceBroker::GetAnnouncementManager()->Announce(ANNOUNCEMENT::VideoLibrary,
                                                                 "OnUpdate", data);
            }

            updateListing = true;
          }
        }

        //! @todo videoDBSuccess will always be true as not updated yet for play count and bookmark changes
        if (videoDbSuccess)
          videodatabase.CommitTransaction();
        else
          videodatabase.RollbackTransaction();
        videodatabase.BeginTransaction();

        if (item.HasVideoInfoTag() && item.GetVideoInfoTag()->HasStreamDetails() &&
            !item.IsLiveTV())
        {
          CFileItem dbItem(item);

          // Check whether the item's db streamdetails need updating
          if (!videodatabase.GetStreamDetails(dbItem) ||
              dbItem.GetVideoInfoTag()->m_streamDetails != item.GetVideoInfoTag()->m_streamDetails)
          {
            videoDbSuccess = videodatabase.SetStreamDetailsForFile(
                item.GetVideoInfoTag()->m_streamDetails, progressTrackingFile);
            updateListing = !videoDbSuccess;
          }
        }

        if (videoDbSuccess)
          videodatabase.CommitTransaction();
        else
          videodatabase.RollbackTransaction();
        videodatabase.BeginTransaction();
        videoDbSuccess = true;

        // See if idFile needs updating
        if (item.HasVideoInfoTag() && URIUtils::IsBlurayPath(item.GetDynPath()))
        {
          if (item.GetVideoContentType() == VideoDbContentType::MOVIES)
          {
            const CVideoInfoTag* tag{item.GetVideoInfoTag()};
            if (tag->m_strFileNameAndPath != item.GetDynPath())
              // tag->m_iFileId contains the idFile played and may be different to the idFile in the movie table entry if it's
              // a non-default video version
              videoDbSuccess =
                  videodatabase.SetFileForMovie(item.GetDynPath(), tag->m_iDbId, tag->m_iFileId);
          }
          else if (item.GetVideoContentType() == VideoDbContentType::EPISODES)