aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--libqpdf/QPDF.cc16
-rw-r--r--libqpdf/QPDFTokenizer.cc2
-rw-r--r--libqpdf/QPDF_linearization.cc2
4 files changed, 21 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 4108cf8f..81e3ee02 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2011-12-28 Jay Berkenbilt <ejb@ql.org>
+
+ * Since PCRE is not necessarily thread safe, don't declare any
+ PCRE objects to be static.
+
+ * Disregard stderr output from ghostscript when using it to
+ compare images in the test suite; see comments in qpdf.test for
+ details.
+
+ * Fixed a few documentation errors.
+
2011-08-11 Jay Berkenbilt <ejb@ql.org>
* 2.3.0: release
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index ccbbdd17..7ec65ca2 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -364,8 +364,8 @@ QPDF::getWarnings()
void
QPDF::parse(char const* password)
{
- static PCRE header_re("^%PDF-(1.\\d+)\\b");
- static PCRE eof_re("(?s:startxref\\s+(\\d+)\\s+%%EOF\\b)");
+ PCRE header_re("^%PDF-(1.\\d+)\\b");
+ PCRE eof_re("(?s:startxref\\s+(\\d+)\\s+%%EOF\\b)");
if (password)
{
@@ -475,9 +475,9 @@ QPDF::setTrailer(QPDFObjectHandle obj)
void
QPDF::reconstruct_xref(QPDFExc& e)
{
- static PCRE obj_re("^\\s*(\\d+)\\s+(\\d+)\\s+obj\\b");
- static PCRE endobj_re("^\\s*endobj\\b");
- static PCRE trailer_re("^\\s*trailer\\b");
+ PCRE obj_re("^\\s*(\\d+)\\s+(\\d+)\\s+obj\\b");
+ PCRE endobj_re("^\\s*endobj\\b");
+ PCRE trailer_re("^\\s*trailer\\b");
warn(QPDFExc(qpdf_e_damaged_pdf, this->file->getName(), "", 0,
"file is damaged"));
@@ -615,8 +615,8 @@ QPDF::read_xref(off_t xref_offset)
int
QPDF::read_xrefTable(off_t xref_offset)
{
- static PCRE xref_first_re("^\\s*(\\d+)\\s+(\\d+)");
- static PCRE xref_entry_re("(?s:(^\\d{10}) (\\d{5}) ([fn])[ \r\n]{2}$)");
+ PCRE xref_first_re("^\\s*(\\d+)\\s+(\\d+)");
+ PCRE xref_entry_re("(?s:(^\\d{10}) (\\d{5}) ([fn])[ \r\n]{2}$)");
std::vector<ObjGen> deleted_items;
@@ -1461,7 +1461,7 @@ int
QPDF::recoverStreamLength(PointerHolder<InputSource> input,
int objid, int generation, off_t stream_offset)
{
- static PCRE endobj_re("^\\s*endobj\\b");
+ PCRE endobj_re("^\\s*endobj\\b");
// Try to reconstruct stream length by looking for
// endstream(\r\n?|\n)endobj
diff --git a/libqpdf/QPDFTokenizer.cc b/libqpdf/QPDFTokenizer.cc
index a5000771..caf02df4 100644
--- a/libqpdf/QPDFTokenizer.cc
+++ b/libqpdf/QPDFTokenizer.cc
@@ -47,7 +47,7 @@ QPDFTokenizer::reset()
void
QPDFTokenizer::presentCharacter(char ch)
{
- static PCRE num_re("^[\\+\\-]?(?:\\.\\d+|\\d+(?:\\.\\d+)?)$");
+ PCRE num_re("^[\\+\\-]?(?:\\.\\d+|\\d+(?:\\.\\d+)?)$");
if (state == st_token_ready)
{
diff --git a/libqpdf/QPDF_linearization.cc b/libqpdf/QPDF_linearization.cc
index eeae05e9..9891890f 100644
--- a/libqpdf/QPDF_linearization.cc
+++ b/libqpdf/QPDF_linearization.cc
@@ -92,7 +92,7 @@ QPDF::isLinearized()
memset(buf, '\0', tbuf_size);
this->file->read(buf, tbuf_size - 1);
- static PCRE lindict_re("(?s:(\\d+)\\s+0\\s+obj\\s*<<)");
+ PCRE lindict_re("(?s:(\\d+)\\s+0\\s+obj\\s*<<)");
int lindict_obj = -1;
char* p = buf;