]> granicus.if.org Git - handbrake/commitdiff
WinGui: Fix an integer overflow in the UI layer for the start/stop controls. Fixes...
authorsr55 <sr55.hb@outlook.com>
Thu, 14 Jun 2018 18:56:44 +0000 (19:56 +0100)
committersr55 <sr55.hb@outlook.com>
Thu, 14 Jun 2018 18:56:44 +0000 (19:56 +0100)
win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs
win/CS/HandBrakeWPF/Converters/LongToIntConverter.cs [new file with mode: 0644]
win/CS/HandBrakeWPF/HandBrakeWPF.csproj
win/CS/HandBrakeWPF/Services/Encode/Model/EncodeTask.cs
win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs
win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
win/CS/HandBrakeWPF/Views/MainView.xaml

index 5f983a6996ede1920daef3130099bca0b94c25d3..a8277ec3b9f4310aa7d4c8bfce7b88b1adc94dd1 100644 (file)
@@ -67,7 +67,7 @@ namespace HandBrakeWPF.Controls
         /// The number property.\r
         /// </summary>\r
         public static readonly DependencyProperty NumberProperty = DependencyProperty.Register(\r
-            "Number", typeof(int), typeof(TimeSpanBox), new PropertyMetadata(OnNumberChanged));\r
+            "Number", typeof(long), typeof(TimeSpanBox), new PropertyMetadata(OnNumberChanged));\r
 \r
         /// <summary>\r
         /// The show time span property.\r
@@ -225,11 +225,11 @@ namespace HandBrakeWPF.Controls
         /// <summary>\r
         /// Gets or sets the number.\r
         /// </summary>\r
-        public int Number\r
+        public long Number\r
         {\r
             get\r
             {\r
-                return (int)this.GetValue(NumberProperty);\r
+                return (long)this.GetValue(NumberProperty);\r
             }\r
 \r
             set\r
@@ -337,7 +337,7 @@ namespace HandBrakeWPF.Controls
         /// </summary>\r
         private void DecrementNumber()\r
         {\r
-            int newNumber;\r
+            long newNumber;\r
             if (this.AllowEmpty && this.Number == 0)\r
             {\r
                 newNumber = Math.Min(this.Maximum, -this.Increment);\r
@@ -416,7 +416,7 @@ namespace HandBrakeWPF.Controls
         /// </summary>\r
         private void IncrementNumber()\r
         {\r
-            int newNumber;\r
+            long newNumber;\r
             if (this.AllowEmpty && this.Number == 0)\r
             {\r
                 newNumber = Math.Max(this.Minimum, this.Increment);\r
diff --git a/win/CS/HandBrakeWPF/Converters/LongToIntConverter.cs b/win/CS/HandBrakeWPF/Converters/LongToIntConverter.cs
new file mode 100644 (file)
index 0000000..97b4433
--- /dev/null
@@ -0,0 +1,34 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="LongToIntConverter.cs" company="HandBrake Project (http://handbrake.fr)">
+//   This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+//   Defines the FullPathToFileNameConverter type.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Converters
+{
+    using System;
+    using System.Globalization;
+    using System.Windows.Data;
+
+    public class LongToIntConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (value != null && value is long && (long)value <= int.MaxValue)
+            {
+                long result = (long)value;
+                return (int)result;
+            }
+
+            return (int)0;
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
index bbd1fb88dd6e7e3df1481213c8642e86267c0ac7..3fe2ab9171160176597a20612356b44df6dd8492 100644 (file)
     <Compile Include="Converters\Filters\DenoisePresetConverter.cs" />\r
     <Compile Include="Converters\Filters\SharpenTuneConverter.cs" />\r
     <Compile Include="Converters\Filters\SharpenPresetConverter.cs" />\r
+    <Compile Include="Converters\LongToIntConverter.cs" />\r
     <Compile Include="Converters\Options\FileSizeConverter.cs" />\r
     <Compile Include="Converters\Options\LogLevelConverter.cs" />\r
     <Compile Include="Converters\OptionTabConverter.cs" />\r
index e1f18fd22ae88faecea7380fa0622633e121e689..c40c6c0b9b4000666e0a585a0a9aa4735dee9072 100644 (file)
@@ -184,12 +184,12 @@ namespace HandBrakeWPF.Services.Encode.Model
         /// <summary>
         /// Gets or sets StartPoint.
         /// </summary>
-        public int StartPoint { get; set; }
+        public long StartPoint { get; set; }
 
         /// <summary>
         /// Gets or sets EndPoint.
         /// </summary>
-        public int EndPoint { get; set; }
+        public long EndPoint { get; set; }
 
         #endregion
 
index 31b6a1fe75cfc37ee9b38880163c09ce6b7b3476..144a1ed261a85134f376f95aa7a6f91d874c18c1 100644 (file)
@@ -181,7 +181,7 @@ namespace HandBrakeWPF.Services.Scan.Model
         /// <param name="startPoint">The Start Point (Chapters)</param>
         /// <param name="endPoint">The End Point (Chapters)</param>
         /// <returns>A Timespan</returns>
-        public TimeSpan CalculateDuration(int startPoint, int endPoint)
+        public TimeSpan CalculateDuration(long startPoint, long endPoint)
         {
             IEnumerable<Chapter> chapers =
                 this.Chapters.Where(c => c.ChapterNumber >= startPoint && c.ChapterNumber <= endPoint);
index 9548fb573f760e33dbb1ae64a6a4986ba4ee530b..11960ec394ea2465286f0a500f1316dc106fde68 100644 (file)
@@ -811,7 +811,7 @@ namespace HandBrakeWPF.ViewModels
         {\r
             get\r
             {\r
-                return this.CurrentTask.StartPoint;\r
+                return this.CurrentTask.Angle;\r
             }\r
 \r
             set\r
@@ -829,12 +829,13 @@ namespace HandBrakeWPF.ViewModels
         /// <summary>\r
         /// Gets or sets SelectedStartPoint.\r
         /// </summary>\r
-        public int SelectedStartPoint\r
+        public long SelectedStartPoint\r
         {\r
             get\r
             {\r
                 return this.CurrentTask.StartPoint;\r
             }\r
+\r
             set\r
             {\r
                 this.CurrentTask.StartPoint = value;\r
@@ -860,12 +861,13 @@ namespace HandBrakeWPF.ViewModels
         /// <summary>\r
         /// Gets or sets SelectedEndPoint.\r
         /// </summary>\r
-        public int SelectedEndPoint\r
+        public long SelectedEndPoint\r
         {\r
             get\r
             {\r
                 return this.CurrentTask.EndPoint;\r
             }\r
+\r
             set\r
             {\r
                 this.CurrentTask.EndPoint = value;\r
@@ -2306,8 +2308,8 @@ namespace HandBrakeWPF.ViewModels
                 // Update the Main Window\r
                 this.NotifyOfPropertyChange(() => this.Destination);\r
                 this.SelectedAngle = this.CurrentTask.Angle;\r
-                int start = this.CurrentTask.StartPoint;\r
-                int end = this.CurrentTask.EndPoint;\r
+                long start = this.CurrentTask.StartPoint;\r
+                long end = this.CurrentTask.EndPoint;\r
                 this.SelectedPointToPoint = this.CurrentTask.PointToPointMode; // Force reset.\r
                 this.SelectedStartPoint = start;\r
                 this.SelectedEndPoint = end;\r
index 9a45bfdd5e1fcdd99b21bec1c8a8c14616ac597f..2bc3929cc07adf4d000d5628b955c0f864ca1af1 100644 (file)
@@ -19,6 +19,7 @@
     <UserControl.Resources>\r
         <Converters:BooleanConverter x:Key="booleanConverter" />\r
         <Converters:PresetsMenuConverter x:Key="presetsMenuConverter"/>\r
+        <Converters:LongToIntConverter x:Key="longToIntConverter" />\r
 \r
         <Style TargetType="Button">\r
             <Setter Property="Padding" Value="8,2" />\r
                                   MinWidth="60"\r
                                   Margin="5,0,0,0"\r
                                   ItemsSource="{Binding StartEndRangeItems}"\r
-                                  SelectedItem="{Binding SelectedStartPoint}"\r
+                                  SelectedItem="{Binding SelectedStartPoint, Converter={StaticResource longToIntConverter}}"\r
                                   ToolTip="{x:Static Properties:ResourcesTooltips.MainView_StartPoint}"\r
                                   Visibility="{Binding ShowTextEntryForPointToPointMode,\r
                                                        Converter={StaticResource boolToVisConverter},\r
                                   MinWidth="60"\r
                                   Margin="4,0,0,0"\r
                                   ItemsSource="{Binding StartEndRangeItems}"\r
-                                  SelectedItem="{Binding SelectedEndPoint}"\r
+                                  SelectedItem="{Binding SelectedEndPoint, Converter={StaticResource longToIntConverter}}"\r
                                   ToolTip="{x:Static Properties:ResourcesTooltips.MainView_EndPoint}"\r
                                   Visibility="{Binding ShowTextEntryForPointToPointMode,\r
                                                        Converter={StaticResource boolToVisConverter},\r