XFA: merge patch from CL 792953005, fix most warnings Includes fixes to XFA specific warnings -- benign truncations. Bug https://code.google.com/p/pdfium/issues/detail?id=104 was filed to track changing types to avoid some truncations. Resolve all but two VC++ build warnings in pdfium. pdfium builds on Win32 have about 85 warnings (250 in the XFA branch, totaling over 480 lines!), mostly from four lines in a header file and a warning that should be disabled. This change resolves all but two of them and turns on warning-as-errors. Bugs have been filed for the two remaining warnings: https://code.google.com/p/pdfium/issues/detail?id=100 the 64-bit warnings: https://code.google.com/p/pdfium/issues/detail?id=101 and the Linux warnings: https://code.google.com/p/pdfium/issues/detail?id=102 The fix to the double->float truncation bugs will also improve code-generation. R=bo_xu@foxitsoftware.com, tsepez@chromium.org Review URL: https://codereview.chromium.org/792953005 BUG= https://code.google.com/p/pdfium/issues/detail?id=100 Review URL: https://codereview.chromium.org/834413002
diff --git a/build/standalone.gypi b/build/standalone.gypi index d335f05..0d650a3 100644 --- a/build/standalone.gypi +++ b/build/standalone.gypi
@@ -165,6 +165,7 @@ 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', 'CharacterSet': '1', }, + 'msvs_disabled_warnings': [4800, 4996], 'msvs_settings': { 'VCCLCompilerTool': { 'MinimalRebuild': 'false', @@ -172,7 +173,6 @@ 'EnableFunctionLevelLinking': 'true', 'RuntimeTypeInfo': 'false', 'WarningLevel': '3', - 'WarnAsError': 'false', 'DebugInformationFormat': '3', 'Detect64BitPortabilityProblems': 'false', 'conditions': [ @@ -184,6 +184,13 @@ }, { 'ExceptionHandling': '0', }], + ['target_arch=="x64"', { + # 64-bit warnings need to be resolved. + # https://code.google.com/p/pdfium/issues/detail?id=101 + 'WarnAsError': 'false', + }, { + 'WarnAsError': 'true', + }], ], }, 'VCLibrarianTool': {
diff --git a/core/src/fpdftext/fpdf_text_int.cpp b/core/src/fpdftext/fpdf_text_int.cpp index c28647d..5ed0e01 100644 --- a/core/src/fpdftext/fpdf_text_int.cpp +++ b/core/src/fpdftext/fpdf_text_int.cpp
@@ -37,13 +37,13 @@ FX_FLOAT _NormalizeThreshold(FX_FLOAT threshold) { if (threshold < 300) { - return threshold / 2.0; + return threshold / 2.0f; } else if (threshold < 500) { - return threshold / 4.0; + return threshold / 4.0f; } else if (threshold < 700) { - return threshold / 5.0; + return threshold / 5.0f; } - return threshold / 6.0; + return threshold / 6.0f; } FX_FLOAT _CalculateBaseSpace(const CPDF_TextObject* pTextObj,
diff --git a/fpdfsdk/include/fsdk_mgr.h b/fpdfsdk/include/fsdk_mgr.h index cbe4741..357be3c 100644 --- a/fpdfsdk/include/fsdk_mgr.h +++ b/fpdfsdk/include/fsdk_mgr.h
@@ -476,10 +476,10 @@ double bottom; m_pInfo->FFI_GetPageViewRect(m_pInfo, page, &left, &top, &right, &bottom); - dstRect.left = left; - dstRect.top = top < bottom? bottom:top; - dstRect.bottom = top < bottom? top:bottom; - dstRect.right = right; + dstRect.left = static_cast<float>(left); + dstRect.top = static_cast<float>(top < bottom ? bottom : top); + dstRect.bottom = static_cast<float>(top < bottom ? top : bottom); + dstRect.right = static_cast<float>(right); } }
diff --git a/fpdfsdk/src/fpdfformfill.cpp b/fpdfsdk/src/fpdfformfill.cpp index 0fb3291..ea94925 100644 --- a/fpdfsdk/src/fpdfformfill.cpp +++ b/fpdfsdk/src/fpdfformfill.cpp
@@ -71,7 +71,8 @@ rcWidget.bottom -= 1.0f; rcWidget.top += 1.0f; - if (rcWidget.Contains(page_x, page_y)) { + if (rcWidget.Contains(static_cast<FX_FLOAT>(page_x), + static_cast<FX_FLOAT>(page_y))) { pWidgetIterator->Release(); return FPDF_FORMFIELD_XFA; }
diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp index c4cee6f..f134b79 100644 --- a/fpdfsdk/src/fsdk_mgr.cpp +++ b/fpdfsdk/src/fsdk_mgr.cpp
@@ -678,7 +678,10 @@ gs.Create(pDevice); if (pClip) { CFX_RectF rectClip; - rectClip.Set(pClip->left, pClip->top, pClip->Width(), pClip->Height()); + rectClip.Set(static_cast<FX_FLOAT>(pClip->left), + static_cast<FX_FLOAT>(pClip->top), + static_cast<FX_FLOAT>(pClip->Width()), + static_cast<FX_FLOAT>(pClip->Height())); gs.SetClipRect(rectClip); } IXFA_RenderContext* pRenderContext = XFA_RenderContext_Create();
diff --git a/pdfium.gyp b/pdfium.gyp index 1f852d6..9476241 100644 --- a/pdfium.gyp +++ b/pdfium.gyp
@@ -309,6 +309,13 @@ 'include_dirs': [ ], 'ldflags': [ '-L<(PRODUCT_DIR)',], + 'msvs_settings': { + 'VCCLCompilerTool': { + # Unresolved warnings in fx_codec_jpx_opj.cpp + # https://code.google.com/p/pdfium/issues/detail?id=100 + 'WarnAsError': 'false', + }, + }, 'sources': [ 'core/include/fxcodec/fx_codec.h', 'core/include/fxcodec/fx_codec_def.h',
diff --git a/xfa/src/fxfa/src/parser/xfa_localevalue.cpp b/xfa/src/fxfa/src/parser/xfa_localevalue.cpp index 6d55def..46ea47d 100644 --- a/xfa/src/fxfa/src/parser/xfa_localevalue.cpp +++ b/xfa/src/fxfa/src/parser/xfa_localevalue.cpp
@@ -650,7 +650,7 @@ return FALSE; } CFX_Unitime ut; - ut.Set(wYear, wMonth, wDay); + ut.Set(wYear, static_cast<FX_BYTE>(wMonth), static_cast<FX_BYTE>(wDay)); unDate = unDate + ut; return TRUE; }