Coverage Report

Created: 2026-06-09 07:01

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/qpdf/libqpdf/QPDFExc.cc
Line
Count
Source
1
#include <qpdf/QPDFExc.hh>
2
3
QPDFExc::QPDFExc(
4
    qpdf_error_code_e error_code,
5
    std::string const& filename,
6
    std::string const& object,
7
    qpdf_offset_t offset,
8
    std::string const& message) :
9
5.10M
    std::runtime_error(createWhat(filename, object, (offset ? offset : -1), message)),
10
5.10M
    error_code(error_code),
11
5.10M
    filename(filename),
12
5.10M
    object(object),
13
5.10M
    offset(offset ? offset : -1),
14
5.10M
    message(message)
15
5.10M
{
16
5.10M
}
17
18
QPDFExc::QPDFExc(
19
    qpdf_error_code_e error_code,
20
    std::string const& filename,
21
    std::string const& object,
22
    qpdf_offset_t offset,
23
    std::string const& message,
24
    bool zero_offset_valid) :
25
3.65M
    std::runtime_error(
26
3.65M
        createWhat(filename, object, (offset || zero_offset_valid ? offset : -1), message)),
27
3.65M
    error_code(error_code),
28
3.65M
    filename(filename),
29
3.65M
    object(object),
30
3.65M
    offset(offset || zero_offset_valid ? offset : -1),
31
3.65M
    message(message)
32
3.65M
{
33
3.65M
}
34
35
std::string
36
QPDFExc::createWhat(
37
    std::string const& filename,
38
    std::string const& object,
39
    qpdf_offset_t offset,
40
    std::string const& message)
41
8.75M
{
42
8.75M
    std::string result;
43
8.75M
    if (!filename.empty()) {
44
7.84M
        result += filename;
45
7.84M
    }
46
8.75M
    if (!(object.empty() && offset < 0)) {
47
7.63M
        if (!filename.empty()) {
48
6.72M
            result += " (";
49
6.72M
        }
50
7.63M
        if (!object.empty()) {
51
7.04M
            result += object;
52
7.04M
            if (offset >= 0) {
53
6.09M
                result += ", ";
54
6.09M
            }
55
7.04M
        }
56
7.63M
        if (offset >= 0) {
57
6.69M
            result += "offset " + std::to_string(offset);
58
6.69M
        }
59
7.63M
        if (!filename.empty()) {
60
6.72M
            result += ")";
61
6.72M
        }
62
7.63M
    }
63
8.75M
    if (!result.empty()) {
64
8.75M
        result += ": ";
65
8.75M
    }
66
8.75M
    result += message;
67
8.75M
    return result;
68
8.75M
}
69
70
qpdf_error_code_e
71
QPDFExc::getErrorCode() const
72
0
{
73
0
    return this->error_code;
74
0
}
75
76
std::string const&
77
QPDFExc::getFilename() const
78
0
{
79
0
    return this->filename;
80
0
}
81
82
std::string const&
83
QPDFExc::getObject() const
84
0
{
85
0
    return this->object;
86
0
}
87
88
qpdf_offset_t
89
QPDFExc::getFilePosition() const
90
0
{
91
0
    return offset < 0 ? 0 : offset;
92
0
}
93
94
std::string const&
95
QPDFExc::getMessageDetail() const
96
0
{
97
0
    return this->message;
98
0
}