cpp/poppler-page.cpp | 3 +++ cpp/poppler-private.h | 3 +++ goo/gfile.cc | 40 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 43 insertions(+), 3 deletions(-)
New commits: commit 41321580f0a13309e5de44eb42851e3c82a5ef8f Author: Adam Reichold <[email protected]> Date: Sun Mar 4 09:17:00 2018 +0100 Use the detection idiom to handle the non-standard struct stat field name for high-resolution mtime on Mac OS X. diff --git a/goo/gfile.cc b/goo/gfile.cc index e4c9b9fb..218882d3 100644 --- a/goo/gfile.cc +++ b/goo/gfile.cc @@ -21,7 +21,7 @@ // Copyright (C) 2008, 2010, 2012, 2013 Hib Eris <[email protected]> // Copyright (C) 2009, 2012, 2014, 2017, 2018 Albert Astals Cid <[email protected]> // Copyright (C) 2009 Kovid Goyal <[email protected]> -// Copyright (C) 2013 Adam Reichold <[email protected]> +// Copyright (C) 2013, 2018 Adam Reichold <[email protected]> // Copyright (C) 2013, 2017 Adrian Johnson <[email protected]> // Copyright (C) 2013 Peter Breitenlohner <[email protected]> // Copyright (C) 2013, 2017 Thomas Freitag <[email protected]> @@ -65,6 +65,40 @@ #define PATH_MAX 1024 #endif +namespace { + +template< typename... > +struct void_type +{ + using type = void; +}; + +template< typename... Args > +using void_t = typename void_type< Args... >::type; + +template< typename Stat, typename = void_t<> > +struct StatMtim +{ + static const struct timespec& value(const Stat& stbuf) { + return stbuf.st_mtim; + } +}; + +// Mac OS X uses a different field name than POSIX and this detects it. +template< typename Stat > +struct StatMtim< Stat, void_t< decltype ( Stat::st_mtimespec ) > > +{ + static const struct timespec& value(const Stat& stbuf) { + return stbuf.st_mtimespec; + } +}; + +inline const struct timespec& mtim(const struct stat& stbuf) { + return StatMtim< struct stat >::value(stbuf); +} + +} + //------------------------------------------------------------------------ GooString *getCurrentDir() { @@ -687,7 +721,7 @@ GooFile::GooFile(int fdA) { struct stat statbuf; fstat(fd, &statbuf); - modifiedTimeOnOpen = statbuf.st_mtim; + modifiedTimeOnOpen = mtim(statbuf); } bool GooFile::modificationTimeChangedSinceOpen() const @@ -695,7 +729,7 @@ bool GooFile::modificationTimeChangedSinceOpen() const struct stat statbuf; fstat(fd, &statbuf); - return modifiedTimeOnOpen.tv_sec != statbuf.st_mtim.tv_sec || modifiedTimeOnOpen.tv_nsec != statbuf.st_mtim.tv_nsec; + return modifiedTimeOnOpen.tv_sec != mtim(statbuf).tv_sec || modifiedTimeOnOpen.tv_nsec != mtim(statbuf).tv_nsec; } #endif // _WIN32 commit b14baefb406b8f08f0702edd686ebc7698cb7f15 Author: Adam Reichold <[email protected]> Date: Mon Feb 12 08:09:00 2018 +0100 Explicitly anchor destructor of text_box_data to avoid linker errors using Clang on Mac OS X. diff --git a/cpp/poppler-page.cpp b/cpp/poppler-page.cpp index 83d48f07..a4ebfe51 100644 --- a/cpp/poppler-page.cpp +++ b/cpp/poppler-page.cpp @@ -3,6 +3,7 @@ * Copyright (C) 2017, Albert Astals Cid <[email protected]> * Copyright (C) 2017, Jason Alan Palmer <[email protected]> * Copyright (C) 2018, Suzuki Toshiya <[email protected]> + * Copyright (C) 2018, Adam Reichold <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -290,6 +291,8 @@ ustring page::text(const rectf &r, text_layout_enum layout_mode) const /* * text_box object for page::text_list() */ +text_box_data::~text_box_data() = default; + text_box::~text_box() = default; text_box::text_box(text_box_data *data) : m_data{data} diff --git a/cpp/poppler-private.h b/cpp/poppler-private.h index 3753567f..d954bdb2 100644 --- a/cpp/poppler-private.h +++ b/cpp/poppler-private.h @@ -4,6 +4,7 @@ * Copyright (C) 2014, Hans-Peter Deifel <[email protected]> * Copyright (C) 2016 Jakub Alba <[email protected]> * Copyright (C) 2018, Suzuki Toshiya <[email protected]> + * Copyright (C) 2018, Adam Reichold <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -70,6 +71,8 @@ void delete_all(const Collection &c) struct text_box_data { + ~text_box_data(); + ustring text; rectf bbox; std::vector<rectf> char_bboxes; _______________________________________________ poppler mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/poppler
