From d32a55ffc40bba75ed8b770b282836a9d248d6a9 Mon Sep 17 00:00:00 2001 From: Johann Koenig Date: Tue, 15 May 2018 14:35:28 +0000 Subject: [PATCH] Revert "update libwebm" This reverts commit 595edb9669e27927726523c3f463d0eb6ea73f30. Incorrect check_add_cxxflags invocation prevented libwebm from building. Correcting it causes build failures on jenkins and mac. Original change's description: > update libwebm > > Clears "auto_ptr deprecated" warnings when building with > clang v6.0.0 > > Requires C++11 support. > > Change-Id: I5ea2744e73deeaa4e7b2599bacf0b6c9cf355a54 TBR=jzern@google.com,johannkoenig@google.com,builds@webmproject.org Change-Id: I7340d912a121de035997cbd8ad77a150ee38189a No-Presubmit: true No-Tree-Checks: true No-Try: true --- configure | 8 +++-- third_party/libwebm/Android.mk | 2 +- third_party/libwebm/README.libvpx | 14 ++------- third_party/libwebm/common/file_util.cc | 15 ---------- third_party/libwebm/common/file_util.h | 5 +--- third_party/libwebm/common/hdr_util.cc | 8 ++--- third_party/libwebm/common/hdr_util.h | 10 ++++++- third_party/libwebm/mkvmuxer/mkvmuxer.cc | 25 +++++++++------- third_party/libwebm/mkvparser/mkvparser.cc | 35 ++++++---------------- 9 files changed, 46 insertions(+), 76 deletions(-) diff --git a/configure b/configure index feb27248c..3a1a318c9 100755 --- a/configure +++ b/configure @@ -721,7 +721,9 @@ process_toolchain() { check_cxx "$@" < diff --git a/third_party/libwebm/common/file_util.cc b/third_party/libwebm/common/file_util.cc index 618ffc087..6dab146dd 100644 --- a/third_party/libwebm/common/file_util.cc +++ b/third_party/libwebm/common/file_util.cc @@ -17,7 +17,6 @@ #include #include #include -#include namespace libwebm { @@ -42,12 +41,7 @@ std::string GetTempFileName() { return temp_file_name; #else char tmp_file_name[_MAX_PATH]; -#if defined _MSC_VER || defined MINGW_HAS_SECURE_API errno_t err = tmpnam_s(tmp_file_name); -#else - char* fname_pointer = tmpnam(tmp_file_name); - errno_t err = (fname_pointer == &tmp_file_name[0]) ? 0 : -1; -#endif if (err == 0) { return std::string(tmp_file_name); } @@ -71,15 +65,6 @@ uint64_t GetFileSize(const std::string& file_name) { return file_size; } -bool GetFileContents(const std::string& file_name, std::string* contents) { - std::ifstream file(file_name.c_str()); - *contents = std::string(static_cast(GetFileSize(file_name)), 0); - if (file.good() && contents->size()) { - file.read(&(*contents)[0], contents->size()); - } - return !file.fail(); -} - TempFileDeleter::TempFileDeleter() { file_name_ = GetTempFileName(); } TempFileDeleter::~TempFileDeleter() { diff --git a/third_party/libwebm/common/file_util.h b/third_party/libwebm/common/file_util.h index a87373464..0e71eac11 100644 --- a/third_party/libwebm/common/file_util.h +++ b/third_party/libwebm/common/file_util.h @@ -22,9 +22,6 @@ std::string GetTempFileName(); // Returns size of file specified by |file_name|, or 0 upon failure. uint64_t GetFileSize(const std::string& file_name); -// Gets the contents file_name as a string. Returns false on error. -bool GetFileContents(const std::string& file_name, std::string* contents); - // Manages life of temporary file specified at time of construction. Deletes // file upon destruction. class TempFileDeleter { @@ -41,4 +38,4 @@ class TempFileDeleter { } // namespace libwebm -#endif // LIBWEBM_COMMON_FILE_UTIL_H_ +#endif // LIBWEBM_COMMON_FILE_UTIL_H_ \ No newline at end of file diff --git a/third_party/libwebm/common/hdr_util.cc b/third_party/libwebm/common/hdr_util.cc index 916f7170b..e1618ce75 100644 --- a/third_party/libwebm/common/hdr_util.cc +++ b/third_party/libwebm/common/hdr_util.cc @@ -36,10 +36,10 @@ bool CopyMasteringMetadata(const mkvparser::MasteringMetadata& parser_mm, if (MasteringMetadataValuePresent(parser_mm.luminance_min)) muxer_mm->set_luminance_min(parser_mm.luminance_min); - PrimaryChromaticityPtr r_ptr(nullptr); - PrimaryChromaticityPtr g_ptr(nullptr); - PrimaryChromaticityPtr b_ptr(nullptr); - PrimaryChromaticityPtr wp_ptr(nullptr); + PrimaryChromaticityPtr r_ptr(NULL); + PrimaryChromaticityPtr g_ptr(NULL); + PrimaryChromaticityPtr b_ptr(NULL); + PrimaryChromaticityPtr wp_ptr(NULL); if (parser_mm.r) { if (!CopyPrimaryChromaticity(*parser_mm.r, &r_ptr)) diff --git a/third_party/libwebm/common/hdr_util.h b/third_party/libwebm/common/hdr_util.h index 78e2eeb70..3ef5388fd 100644 --- a/third_party/libwebm/common/hdr_util.h +++ b/third_party/libwebm/common/hdr_util.h @@ -47,7 +47,15 @@ struct Vp9CodecFeatures { int chroma_subsampling; }; -typedef std::unique_ptr PrimaryChromaticityPtr; +// disable deprecation warnings for auto_ptr +#if defined(__GNUC__) && __GNUC__ >= 5 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif +typedef std::auto_ptr PrimaryChromaticityPtr; +#if defined(__GNUC__) && __GNUC__ >= 5 +#pragma GCC diagnostic pop +#endif bool CopyPrimaryChromaticity(const mkvparser::PrimaryChromaticity& parser_pc, PrimaryChromaticityPtr* muxer_pc); diff --git a/third_party/libwebm/mkvmuxer/mkvmuxer.cc b/third_party/libwebm/mkvmuxer/mkvmuxer.cc index 481771db2..15b9a908d 100644 --- a/third_party/libwebm/mkvmuxer/mkvmuxer.cc +++ b/third_party/libwebm/mkvmuxer/mkvmuxer.cc @@ -8,8 +8,6 @@ #include "mkvmuxer/mkvmuxer.h" -#include - #include #include #include @@ -26,6 +24,11 @@ #include "mkvmuxer/mkvwriter.h" #include "mkvparser/mkvparser.h" +// disable deprecation warnings for auto_ptr +#if defined(__GNUC__) && __GNUC__ >= 5 +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + namespace mkvmuxer { const float PrimaryChromaticity::kChromaticityMin = 0.0f; @@ -69,7 +72,7 @@ bool StrCpy(const char* src, char** dst_ptr) { return true; } -typedef std::unique_ptr PrimaryChromaticityPtr; +typedef std::auto_ptr PrimaryChromaticityPtr; bool CopyChromaticity(const PrimaryChromaticity* src, PrimaryChromaticityPtr* dst) { if (!dst) @@ -1054,22 +1057,22 @@ bool MasteringMetadata::Write(IMkvWriter* writer) const { bool MasteringMetadata::SetChromaticity( const PrimaryChromaticity* r, const PrimaryChromaticity* g, const PrimaryChromaticity* b, const PrimaryChromaticity* white_point) { - PrimaryChromaticityPtr r_ptr(nullptr); + PrimaryChromaticityPtr r_ptr(NULL); if (r) { if (!CopyChromaticity(r, &r_ptr)) return false; } - PrimaryChromaticityPtr g_ptr(nullptr); + PrimaryChromaticityPtr g_ptr(NULL); if (g) { if (!CopyChromaticity(g, &g_ptr)) return false; } - PrimaryChromaticityPtr b_ptr(nullptr); + PrimaryChromaticityPtr b_ptr(NULL); if (b) { if (!CopyChromaticity(b, &b_ptr)) return false; } - PrimaryChromaticityPtr wp_ptr(nullptr); + PrimaryChromaticityPtr wp_ptr(NULL); if (white_point) { if (!CopyChromaticity(white_point, &wp_ptr)) return false; @@ -1235,7 +1238,7 @@ bool Colour::Write(IMkvWriter* writer) const { } bool Colour::SetMasteringMetadata(const MasteringMetadata& mastering_metadata) { - std::unique_ptr mm_ptr(new MasteringMetadata()); + std::auto_ptr mm_ptr(new MasteringMetadata()); if (!mm_ptr.get()) return false; @@ -1543,7 +1546,7 @@ bool VideoTrack::Write(IMkvWriter* writer) const { } bool VideoTrack::SetColour(const Colour& colour) { - std::unique_ptr colour_ptr(new Colour()); + std::auto_ptr colour_ptr(new Colour()); if (!colour_ptr.get()) return false; @@ -1571,7 +1574,7 @@ bool VideoTrack::SetColour(const Colour& colour) { } bool VideoTrack::SetProjection(const Projection& projection) { - std::unique_ptr projection_ptr(new Projection()); + std::auto_ptr projection_ptr(new Projection()); if (!projection_ptr.get()) return false; @@ -2663,7 +2666,7 @@ bool Cluster::QueueOrWriteFrame(const Frame* const frame) { // and write it if it is okay to do so (i.e.) no other track has an held back // frame with timestamp <= the timestamp of the frame in question. std::vector::iterator> frames_to_erase; - for (std::list::iterator + for (std::list::iterator current_track_iterator = stored_frames_[track_number].begin(), end = --stored_frames_[track_number].end(); current_track_iterator != end; ++current_track_iterator) { diff --git a/third_party/libwebm/mkvparser/mkvparser.cc b/third_party/libwebm/mkvparser/mkvparser.cc index e7b76f7da..37f230d0a 100644 --- a/third_party/libwebm/mkvparser/mkvparser.cc +++ b/third_party/libwebm/mkvparser/mkvparser.cc @@ -22,8 +22,12 @@ #include "common/webmids.h" +// disable deprecation warnings for auto_ptr +#if defined(__GNUC__) && __GNUC__ >= 5 +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + namespace mkvparser { -const long long kStringElementSizeLimit = 20 * 1000 * 1000; const float MasteringMetadata::kValueNotPresent = FLT_MAX; const long long Colour::kValueNotPresent = LLONG_MAX; const float Projection::kValueNotPresent = FLT_MAX; @@ -326,7 +330,7 @@ long UnserializeString(IMkvReader* pReader, long long pos, long long size, delete[] str; str = NULL; - if (size >= LONG_MAX || size < 0 || size > kStringElementSizeLimit) + if (size >= LONG_MAX || size < 0) return E_FILE_FORMAT_INVALID; // +1 for '\0' terminator @@ -5011,7 +5015,7 @@ bool MasteringMetadata::Parse(IMkvReader* reader, long long mm_start, if (!reader || *mm) return false; - std::unique_ptr mm_ptr(new MasteringMetadata()); + std::auto_ptr mm_ptr(new MasteringMetadata()); if (!mm_ptr.get()) return false; @@ -5031,10 +5035,6 @@ bool MasteringMetadata::Parse(IMkvReader* reader, long long mm_start, double value = 0; const long long value_parse_status = UnserializeFloat(reader, read_pos, child_size, value); - if (value < -FLT_MAX || value > FLT_MAX || - (value > 0.0 && value < FLT_MIN)) { - return false; - } mm_ptr->luminance_max = static_cast(value); if (value_parse_status < 0 || mm_ptr->luminance_max < 0.0 || mm_ptr->luminance_max > 9999.99) { @@ -5044,10 +5044,6 @@ bool MasteringMetadata::Parse(IMkvReader* reader, long long mm_start, double value = 0; const long long value_parse_status = UnserializeFloat(reader, read_pos, child_size, value); - if (value < -FLT_MAX || value > FLT_MAX || - (value > 0.0 && value < FLT_MIN)) { - return false; - } mm_ptr->luminance_min = static_cast(value); if (value_parse_status < 0 || mm_ptr->luminance_min < 0.0 || mm_ptr->luminance_min > 999.9999) { @@ -5100,7 +5096,7 @@ bool Colour::Parse(IMkvReader* reader, long long colour_start, if (!reader || *colour) return false; - std::unique_ptr colour_ptr(new Colour()); + std::auto_ptr colour_ptr(new Colour()); if (!colour_ptr.get()) return false; @@ -5198,7 +5194,7 @@ bool Projection::Parse(IMkvReader* reader, long long start, long long size, if (!reader || *projection) return false; - std::unique_ptr projection_ptr(new Projection()); + std::auto_ptr projection_ptr(new Projection()); if (!projection_ptr.get()) return false; @@ -7907,10 +7903,6 @@ long Block::Parse(const Cluster* pCluster) { return E_FILE_FORMAT_INVALID; curr.len = static_cast(frame_size); - // Check if size + curr.len could overflow. - if (size > LLONG_MAX - curr.len) { - return E_FILE_FORMAT_INVALID; - } size += curr.len; // contribution of this frame --frame_count; @@ -7972,11 +7964,6 @@ long long Block::GetTimeCode(const Cluster* pCluster) const { const long long tc0 = pCluster->GetTimeCode(); assert(tc0 >= 0); - // Check if tc0 + m_timecode would overflow. - if (tc0 < 0 || LLONG_MAX - tc0 < m_timecode) { - return -1; - } - const long long tc = tc0 + m_timecode; return tc; // unscaled timecode units @@ -7994,10 +7981,6 @@ long long Block::GetTime(const Cluster* pCluster) const { const long long scale = pInfo->GetTimeCodeScale(); assert(scale >= 1); - // Check if tc * scale could overflow. - if (tc != 0 && scale > LLONG_MAX / tc) { - return -1; - } const long long ns = tc * scale; return ns; -- 2.40.0