Commit 8f29397d40c0b98663bdc9fceb99cf807a097d90

Authored by m-holger
Committed by GitHub
2 parents 724658fe 2c4b29b5

Merge pull request #1601 from m-holger/error

Refactor `util::assertion` etc to accept forwarding references for im…
Showing 1 changed file with 12 additions and 7 deletions
libqpdf/qpdf/Util.hh
@@ -18,28 +18,33 @@ namespace qpdf::util @@ -18,28 +18,33 @@ namespace qpdf::util
18 // Throw a logic_error if 'cond' does not hold. 18 // Throw a logic_error if 'cond' does not hold.
19 // 19 //
20 // DO NOT USE unless it is impractical or unnecessary to cover violations during CI Testing. 20 // DO NOT USE unless it is impractical or unnecessary to cover violations during CI Testing.
  21 + template <typename T>
21 inline void 22 inline void
22 - assertion(bool cond, std::string const& msg) 23 + assertion(bool cond, T&& msg)
23 { 24 {
24 if (!cond) { 25 if (!cond) {
25 - throw std::logic_error(msg); 26 + throw std::logic_error(std::forward<T>(msg));
26 } 27 }
27 } 28 }
28 29
  30 + template <typename T>
29 inline void 31 inline void
30 - internal_error_if(bool cond, std::string const& msg) 32 + internal_error_if(bool cond, T&& msg)
31 { 33 {
32 if (cond) { 34 if (cond) {
33 - throw std::logic_error("INTERNAL ERROR: "s.append(msg).append(  
34 - "\nThis is a qpdf bug. Please report at https://github.com/qpdf/qpdf/issues")); 35 + throw std::logic_error("INTERNAL ERROR: "s.append(std::forward<T>(msg))
  36 + .append(
  37 + "\nThis is a qpdf bug. Please report at "
  38 + "https://github.com/qpdf/qpdf/issues"));
35 } 39 }
36 } 40 }
37 41
  42 + template <typename T>
38 inline void 43 inline void
39 - no_ci_rt_error_if(bool cond, std::string const& msg) 44 + no_ci_rt_error_if(bool cond, T&& msg)
40 { 45 {
41 if (cond) { 46 if (cond) {
42 - throw std::runtime_error(msg); 47 + throw std::runtime_error(std::forward<T>(msg));
43 } 48 }
44 } 49 }
45 50