summaryrefslogtreecommitdiffstats
path: root/hwpfilter/source/hinfo.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'hwpfilter/source/hinfo.cxx')
-rw-r--r--hwpfilter/source/hinfo.cxx104
1 files changed, 79 insertions, 25 deletions
diff --git a/hwpfilter/source/hinfo.cxx b/hwpfilter/source/hinfo.cxx
index 38d3b22fe659..3a5bb21d7429 100644
--- a/hwpfilter/source/hinfo.cxx
+++ b/hwpfilter/source/hinfo.cxx
@@ -84,15 +84,34 @@ bool HWPInfo::Read(HWPFile & hwpf)
hwpf.Read1b(&paper.paper_direction, 1); /* 용지 방향 */
// paper geometry information
- paper.paper_height = (short) hwpf.Read2b(); /* 용지 길이 */
- paper.paper_width = (short) hwpf.Read2b(); /* 용지 너비 */
- paper.top_margin = (short) hwpf.Read2b(); /* 위쪽 여백 */
- paper.bottom_margin = (short) hwpf.Read2b(); /* 아래쪽 여백 */
- paper.left_margin = (short) hwpf.Read2b(); /* 왼쪽 여백 */
- paper.right_margin = (short) hwpf.Read2b(); /* 오른쪽 여백 */
- paper.header_length = (short) hwpf.Read2b(); /* 머리말 길이 */
- paper.footer_length = (short) hwpf.Read2b(); /* 꼬리말 길이 */
- paper.gutter_length = (short) hwpf.Read2b(); /* 제본여백 */
+ unsigned short tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.paper_height = tmp16; /* 용지 길이 */
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.paper_width = tmp16; /* 용지 너비 */
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.top_margin = tmp16; /* 위쪽 여백 */
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.bottom_margin = tmp16; /* 아래쪽 여백 */
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.left_margin = tmp16; /* 왼쪽 여백 */
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.right_margin = tmp16; /* 오른쪽 여백 */
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.header_length = tmp16; /* 머리말 길이 */
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.footer_length = tmp16; /* 꼬리말 길이 */
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ paper.gutter_length = tmp16; /* 제본여백 */
hwpf.Read2b(&readonly, 1); /* 예약 */
hwpf.Read1b(reserved1, 4); /* 예약 */
hwpf.Read1b(&chain_info.chain_page_no, 1); /* 쪽 번호 연결 1-연결, 0-새로시작 (연결인쇄에서 사용) */
@@ -108,14 +127,25 @@ bool HWPInfo::Read(HWPFile & hwpf)
// footnote
hwpf.Read2b(&beginfnnum,1); /* 각주 시작번호 */
hwpf.Read2b(&countfn,1); /* 각주 갯수 */
- splinetext = (short) hwpf.Read2b();
- splinefn = (short) hwpf.Read2b();
- spfnfn = (short) hwpf.Read2b();
+
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ splinetext = tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ splinefn = tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ spfnfn = tmp16;
hwpf.Read1b(&fnchar, 1);
hwpf.Read1b(&fnlinetype, 1);
// border layout
for (int ii = 0; ii < 4; ++ii)
- bordermargin[ii] = (short) hwpf.Read2b();
+ {
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ bordermargin[ii] = tmp16;
+ }
hwpf.Read2b(&borderline, 1);
hwpf.Read1b(&empty_line_hide, 1);
@@ -170,12 +200,23 @@ bool HWPSummary::Read(HWPFile & hwpf)
bool ParaShape::Read(HWPFile & hwpf)
{
- pagebreak = 0;
- left_margin = (short) hwpf.Read2b();
- right_margin = (short) hwpf.Read2b();
- indent = (short) hwpf.Read2b();
- lspacing = (short) hwpf.Read2b();
- pspacing_next = (short) hwpf.Read2b();
+ pagebreak = 0;
+ unsigned short tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ left_margin = tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ right_margin = tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ indent = tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ lspacing = tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ pspacing_next = tmp16;
hwpf.Read1b(&condense, 1);
hwpf.Read1b(&arrange_type, 1);
@@ -183,17 +224,27 @@ bool ParaShape::Read(HWPFile & hwpf)
{
hwpf.Read1b(&tabs[ii].type, 1);
hwpf.Read1b(&tabs[ii].dot_continue, 1);
- tabs[ii].position = (short) hwpf.Read2b();
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ tabs[ii].position = tmp16;
}
hwpf.Read1b(&coldef.ncols, 1);
hwpf.Read1b(&coldef.separator, 1);
- coldef.spacing = (short) hwpf.Read2b();
- coldef.columnlen = (short) hwpf.Read2b();
- coldef.columnlen0 = (short) hwpf.Read2b();
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ coldef.spacing = tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ coldef.columnlen = tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ coldef.columnlen0 = tmp16;
hwpf.Read1b(&shade, 1);
hwpf.Read1b(&outline, 1);
hwpf.Read1b(&outline_continue, 1);
- pspacing_prev = (short) hwpf.Read2b();
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ pspacing_prev = tmp16;
hwpf.Read1b(reserved, 2);
return (!hwpf.State());
@@ -202,7 +253,10 @@ bool ParaShape::Read(HWPFile & hwpf)
bool CharShape::Read(HWPFile & hwpf)
{
- size = (short) hwpf.Read2b();
+ unsigned short tmp16;
+ if (!hwpf.Read2b(tmp16))
+ return false;
+ size = tmp16;
hwpf.Read1b(font, NLanguage);
hwpf.Read1b(ratio, NLanguage);
hwpf.Read1b(space, NLanguage);