Parse information from harvid independent from the locale
authorRobin Gareus <robin@gareus.org>
Mon, 22 Aug 2016 12:47:19 +0000 (14:47 +0200)
committerRobin Gareus <robin@gareus.org>
Mon, 22 Aug 2016 12:47:37 +0000 (14:47 +0200)
This fixes a crash where aspect ratio "0.5" from harvid was interpreted
as "0" in the French locale (expecting 0,5).

Note: harvid uses a portable, not localized snprintf() implementation

gtk2_ardour/utils_videotl.cc

index 684bbf920c49832b7ba55269fd94bee81ac72937..d2bec87d9eba7b75950dc64ca28eae8f80233d13 100644 (file)
@@ -260,6 +260,7 @@ VideoUtils::video_query_info (
                double &video_aspect_ratio
                )
 {
+       LocaleGuard lg;
        char url[2048];
 
        snprintf(url, sizeof(url), "%s%sinfo/?file=%s&format=csv"
@@ -282,6 +283,12 @@ VideoUtils::video_query_info (
        video_aspect_ratio = atof (lines.at(0).at(3));
        video_file_fps = atof (lines.at(0).at(4));
        video_duration = atoll(lines.at(0).at(5));
+
+       if (video_aspect_ratio < 0.01 || video_file_fps < 0.01) {
+               /* catch errors early, aspect == 0 or fps == 0 will
+                * wreak havoc down the road */
+               return false;
+       }
        return true;
 }