summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-01-26 11:51:43 +0000
committerAndras Timar <andras.timar@collabora.com>2018-03-06 15:01:19 +0100
commitd402d436e797f3581d41a5477c7ee23284d88925 (patch)
tree4222ac7cf251228bf4f50ac24b2a4c1d446cc70d
parentd679ac0d39b36ea8173589e32e338869bee58a4c (diff)
ofz: check state in readblock
and change state to a bool and reuse it more Change-Id: Iaa46004b144836431dd386a68a8ab688fd1477f2 Reviewed-on: https://gerrit.libreoffice.org/48689 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit bc1bf9a4fd7f75e6b7fec997d147f0f90eb8e639)
-rw-r--r--hwpfilter/source/hiodev.cxx24
-rw-r--r--hwpfilter/source/hiodev.h6
2 files changed, 14 insertions, 16 deletions
diff --git a/hwpfilter/source/hiodev.cxx b/hwpfilter/source/hiodev.cxx
index da02aadc800e..75b69a256b29 100644
--- a/hwpfilter/source/hiodev.cxx
+++ b/hwpfilter/source/hiodev.cxx
@@ -145,13 +145,11 @@ void HStreamIODev::flush()
gz_flush(_gzfp, Z_FINISH);
}
-
-int HStreamIODev::state() const
+bool HStreamIODev::state() const
{
- return 0;
+ return false;
}
-
/* zlib 관련 부분 */
bool HStreamIODev::setCompressed(bool flag)
{
@@ -291,16 +289,14 @@ void HMemIODev::flush()
{
}
-
-int HMemIODev::state() const
+bool HMemIODev::state() const
{
if (pos <= length)
- return 0;
+ return false;
else
- return -1;
+ return true;
}
-
bool HMemIODev::setCompressed(bool )
{
return false;
@@ -309,7 +305,7 @@ bool HMemIODev::setCompressed(bool )
bool HMemIODev::read1b(unsigned char &out)
{
++pos;
- if (pos <= length)
+ if (!state())
{
out = ptr[pos - 1];
return true;
@@ -329,7 +325,7 @@ bool HMemIODev::read1b(char &out)
bool HMemIODev::read2b(unsigned short &out)
{
pos += 2;
- if (pos <= length)
+ if (!state())
{
out = ptr[pos - 1] << 8 | ptr[pos - 2];
return true;
@@ -340,7 +336,7 @@ bool HMemIODev::read2b(unsigned short &out)
bool HMemIODev::read4b(unsigned int &out)
{
pos += 4;
- if (pos <= length)
+ if (!state())
{
out = static_cast<unsigned int>(ptr[pos - 1] << 24 | ptr[pos - 2] << 16 |
ptr[pos - 3] << 8 | ptr[pos - 4]);
@@ -360,6 +356,8 @@ bool HMemIODev::read4b(int &out)
size_t HMemIODev::readBlock(void *p, size_t size)
{
+ if (state())
+ return 0;
if (length < pos + size)
size = length - pos;
memcpy(p, ptr + pos, size);
@@ -369,7 +367,7 @@ size_t HMemIODev::readBlock(void *p, size_t size)
size_t HMemIODev::skipBlock(size_t size)
{
- if (length < pos + size)
+ if (state() || length < pos + size)
return 0;
pos += size;
return size;
diff --git a/hwpfilter/source/hiodev.h b/hwpfilter/source/hiodev.h
index af49703c3482..e47bd8b2d0f0 100644
--- a/hwpfilter/source/hiodev.h
+++ b/hwpfilter/source/hiodev.h
@@ -47,7 +47,7 @@ class DLLEXPORT HIODev
virtual bool open() = 0;
virtual void flush() = 0;
- virtual int state() const = 0;
+ virtual bool state() const = 0;
/* gzip routine wrapper */
virtual bool setCompressed( bool ) = 0;
@@ -92,7 +92,7 @@ class HStreamIODev final: public HIODev
/**
* Not implemented.
*/
- virtual int state() const override;
+ virtual bool state() const override;
/**
* Set whether the stream is compressed or not
*/
@@ -144,7 +144,7 @@ class HMemIODev final: public HIODev
virtual bool open() override;
virtual void flush() override;
- virtual int state() const override;
+ virtual bool state() const override;
/* gzip routine wrapper */
virtual bool setCompressed( bool ) override;
using HIODev::read1b;