Kaydet (Commit) 7e91dd0a authored tarafından Michael Stahl's avatar Michael Stahl

fdo#77454: sw: ww8 import: add heuristic to ignore mangled crop values

Older versions of OOo/LO would mangle negative crop values on round-trip
of WW8, which now (since the drawing-layer does not ignore them) causes
the images to be rendered invisible; probably large factors don't make
sense anyway, so ignore the crop if it's 50x the image size, which
happens to work for the bugdoc.

Change-Id: I9f36d37e3be27234554bc91e80bfe719b1ce86af
üst 898b7643
......@@ -1975,8 +1975,14 @@ void SwWW8ImplReader::MapWrapIntoFlyFmt(SvxMSDffImportRec* pRecord,
static sal_Int32 lcl_ConvertCrop(sal_uInt32 const nCrop, sal_Int32 const nSize)
{
// cast to sal_Int32 to handle negative crop properly
return ((static_cast<sal_Int32>(nCrop) >> 16) * nSize)
+ (((nCrop & 0xffff) * nSize) >> 16) ;
sal_Int32 const nIntegral(static_cast<sal_Int32>(nCrop) >> 16);
// fdo#77454: heuristic to detect mangled values written by old OOo/LO
if (abs(nIntegral) >= 50) // FIXME: what's a good cut-off?
{
SAL_INFO("sw.ww8", "ignoring suspiciously large crop: " << nIntegral);
return 0;
}
return (nIntegral * nSize) + (((nCrop & 0xffff) * nSize) >> 16);
}
void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment