From 452628e2f5964cf4a7181797381163f8e4492879 Mon Sep 17 00:00:00 2001 From: Jim Stichnoth Date: Sat, 12 Jan 2013 19:46:31 -0800 Subject: [PATCH] Fix signed/unsigned error in seek computations. --- mythtv/libs/libmythtv/mythplayer.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mythtv/libs/libmythtv/mythplayer.cpp b/mythtv/libs/libmythtv/mythplayer.cpp index 564725a8b3d..725b32d8f4b 100644 --- a/mythtv/libs/libmythtv/mythplayer.cpp +++ b/mythtv/libs/libmythtv/mythplayer.cpp @@ -4695,14 +4695,18 @@ uint64_t MythPlayer::GetCurrentFrameCount(void) const uint64_t MythPlayer::FindFrame(float offset, bool use_cutlist) const { uint64_t length_ms = TranslatePositionFrameToMs(totalFrames, use_cutlist); - uint64_t offset_ms = offset * 1000 + 0.5; + uint64_t position_ms; if (signbit(offset)) - offset_ms += length_ms; - if (offset_ms < 0) - offset_ms = 0; - if (offset_ms > length_ms) - offset_ms = length_ms; - return TranslatePositionMsToFrame(offset_ms, use_cutlist); + { + uint64_t offset_ms = -offset * 1000 + 0.5; + position_ms = (offset_ms > length_ms) ? 0 : length_ms - offset_ms; + } + else + { + position_ms = offset * 1000 + 0.5; + position_ms = min(position_ms, length_ms); + } + return TranslatePositionMsToFrame(position_ms, use_cutlist); } void MythPlayer::calcSliderPos(osdInfo &info, bool paddedFields)