summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/include/fxcodec/fx_codec_flate.h26
-rw-r--r--core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp32
-rw-r--r--core/src/fxcodec/codec/fx_codec_flate.cpp39
3 files changed, 62 insertions, 35 deletions
diff --git a/core/include/fxcodec/fx_codec_flate.h b/core/include/fxcodec/fx_codec_flate.h
new file mode 100644
index 0000000000..8495a37496
--- /dev/null
+++ b/core/include/fxcodec/fx_codec_flate.h
@@ -0,0 +1,26 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "../../../third_party/zlib_v128/zlib.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Note: Some of these return Z_* status codes from zlib.h.
+void* FPDFAPI_FlateInit(void* (*alloc_func)(void*, unsigned int, unsigned int),
+ void (*free_func)(void*, void*));
+void FPDFAPI_FlateInput(void* context, const unsigned char* src_buf,
+ unsigned int src_size);
+int FPDFAPI_FlateOutput(void* context, unsigned char* dest_buf,
+ unsigned int dest_size);
+int FPDFAPI_FlateGetAvailIn(void* context);
+int FPDFAPI_FlateGetAvailOut(void* context);
+void FPDFAPI_FlateEnd(void* context);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp
index efe085c2ee..fed4546fab 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp
@@ -4,12 +4,25 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "../../../../third_party/zlib_v128/zlib.h"
#include "../../../include/fpdfapi/fpdf_parser.h"
#include "../../../include/fxcodec/fx_codec.h"
+#include "../../../include/fxcodec/fx_codec_flate.h"
#include "../../../include/fpdfapi/fpdf_module.h"
#include "filters_int.h"
+extern "C" {
+
+static void* my_alloc_func(void* opaque, unsigned int items, unsigned int size)
+{
+ return FX_Alloc2D(uint8_t, items, size);
+}
+static void my_free_func(void* opaque, void* address)
+{
+ FX_Free(address);
+}
+
+} // extern "C"
+
CFX_DataFilter::CFX_DataFilter()
{
m_bEOF = FALSE;
@@ -288,23 +301,6 @@ void CPDF_DecryptFilter::v_FilterFinish(CFX_BinaryBuf& dest_buf)
m_pCryptoHandler->DecryptFinish(m_pContext, dest_buf);
m_pContext = NULL;
}
-extern "C" {
- static void* my_alloc_func (void* opaque, unsigned int items, unsigned int size)
- {
- return FX_Alloc2D(uint8_t, items, size);
- }
- static void my_free_func (void* opaque, void* address)
- {
- FX_Free(address);
- }
- void* FPDFAPI_FlateInit(void* (*alloc_func)(void*, unsigned int, unsigned int),
- void (*free_func)(void*, void*));
- void FPDFAPI_FlateInput(void* context, const unsigned char* src_buf, unsigned int src_size);
- int FPDFAPI_FlateOutput(void* context, unsigned char* dest_buf, unsigned int dest_size);
- int FPDFAPI_FlateGetAvailIn(void* context);
- int FPDFAPI_FlateGetAvailOut(void* context);
- void FPDFAPI_FlateEnd(void* context);
-}
CPDF_FlateFilter::CPDF_FlateFilter()
{
m_pContext = NULL;
diff --git a/core/src/fxcodec/codec/fx_codec_flate.cpp b/core/src/fxcodec/codec/fx_codec_flate.cpp
index 99643e4470..6223b9c670 100644
--- a/core/src/fxcodec/codec/fx_codec_flate.cpp
+++ b/core/src/fxcodec/codec/fx_codec_flate.cpp
@@ -7,18 +7,34 @@
#include "../../../../third_party/base/nonstd_unique_ptr.h"
#include "../../../../third_party/zlib_v128/zlib.h"
#include "../../../include/fxcodec/fx_codec.h"
+#include "../../../include/fxcodec/fx_codec_flate.h"
#include "codec_int.h"
extern "C"
{
- static void* my_alloc_func (void* opaque, unsigned int items, unsigned int size)
+ static void* my_alloc_func(void* opaque, unsigned int items, unsigned int size)
{
return FX_Alloc2D(uint8_t, items, size);
}
- static void my_free_func (void* opaque, void* address)
+ static void my_free_func(void* opaque, void* address)
{
FX_Free(address);
}
+ static int FPDFAPI_FlateGetTotalOut(void* context)
+ {
+ return ((z_stream*)context)->total_out;
+ }
+ static int FPDFAPI_FlateGetTotalIn(void* context)
+ {
+ return ((z_stream*)context)->total_in;
+ }
+ static void FPDFAPI_FlateCompress(unsigned char* dest_buf,
+ unsigned long* dest_size,
+ const unsigned char* src_buf,
+ unsigned long src_size)
+ {
+ compress(dest_buf, dest_size, src_buf, src_size);
+ }
void* FPDFAPI_FlateInit(void* (*alloc_func)(void*, unsigned int, unsigned int),
void (*free_func)(void*, void*))
{
@@ -37,10 +53,6 @@ extern "C"
((z_stream*)context)->next_in = (unsigned char*)src_buf;
((z_stream*)context)->avail_in = src_size;
}
- int FPDFAPI_FlateGetTotalOut(void* context)
- {
- return ((z_stream*)context)->total_out;
- }
int FPDFAPI_FlateOutput(void* context, unsigned char* dest_buf, unsigned int dest_size)
{
((z_stream*)context)->next_out = dest_buf;
@@ -54,28 +66,21 @@ extern "C"
}
return ret;
}
- int FPDFAPI_FlateGetTotalIn(void* context)
+ int FPDFAPI_FlateGetAvailIn(void* context)
{
- return ((z_stream*)context)->total_in;
+ return ((z_stream*)context)->avail_in;
}
int FPDFAPI_FlateGetAvailOut(void* context)
{
return ((z_stream*)context)->avail_out;
}
- int FPDFAPI_FlateGetAvailIn(void* context)
- {
- return ((z_stream*)context)->avail_in;
- }
void FPDFAPI_FlateEnd(void* context)
{
inflateEnd((z_stream*)context);
((z_stream*)context)->zfree(0, context);
}
- void FPDFAPI_FlateCompress(unsigned char* dest_buf, unsigned long* dest_size, const unsigned char* src_buf, unsigned long src_size)
- {
- compress(dest_buf, dest_size, src_buf, src_size);
- }
-}
+} // extern "C"
+
class CLZWDecoder
{
public: