About use of sal_IntPtr for FontList::GetSizeAry, aStdSizeAry and mpSizeAry (svtools)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

IMHO the use of sal_IntPtr in FontList class is wrong.

It's been there since 43135665bf9093c52f424069bcf83d50a93bdc0c:

author    Fridrich Štrba <fridrich.strba@xxxxxxxxxx>    2013-06-10 12:49:33 +0200
committer    Fridrich Štrba <fridrich.strba@xxxxxxxxxx>    2013-06-10 14:03:34 +0200
commit    43135665bf9093c52f424069bcf83d50a93bdc0c (patch)
tree    079359e37353f3a936656a9d3aeff2e3577cc353
parent    378b2522b40004ca5f5b6de0b4eda0ac13d4153d (diff)
mingw64: use integers able to contain a size in svtools
Change-Id: Id5505f75a2331be682b74d085a7959fc4bf07df8

Let's take a look at the 2 vars:

1) aStdSizeAry

it's a static array containing values from 0 to 960.

(see https://opengrok.libreoffice.org/xref/core/svtools/source/control/ctrltool.cxx?r=770ca016#38)

2) mpSizeAry

git grep -n mpSizeAry in core repo gives:
include/svtools/ctrltool.hxx:149:                            mpSizeAry;
svtools/source/control/ctrltool.cxx:749:    mpSizeAry.reset();
svtools/source/control/ctrltool.cxx:772:    mpSizeAry.reset(new sal_IntPtr[nDevSizeCount+1] );
svtools/source/control/ctrltool.cxx:779:            mpSizeAry[nRealCount] = nOldHeight;
svtools/source/control/ctrltool.cxx:783:    mpSizeAry[nRealCount] = 0;
svtools/source/control/ctrltool.cxx:786:    return mpSizeAry.get();

so the elements are only initialized thanks to "nOldHeight" which itself is declared as a long and is initialized with "aSize.Height()"

(see https://opengrok.libreoffice.org/xref/core/svtools/source/control/ctrltool.cxx?r=770ca016#778).

Indeed, according to include/tools/gen.hxx, "Height()" returns a long, so "nOldHeight" is ok.

(see https://opengrok.libreoffice.org/xref/core/include/tools/gen.hxx?r=32090b01#189)


I know there has been some problem about types of attributes of Size, there's even been an attempt to use sal_Int32 but reverted with d36f7c5bd2115fcdd26ba8ff7b6a0446dea70bd4

"Revert "long->sal_Int32 in tools/gen.hxx"

This reverts commit 8bc951daf79decbd8a599a409c6d33c5456710e0. As discussed at <https://lists.freedesktop.org/archives/libreoffice/2018-April/079955.html> "long->sal_Int32 in tools/gen.hxx", that commit caused lots of problems with signed integer overflow, and the original plan was to redo it to consistently use sal_Int64 instead of sal_Int32. <https://gerrit.libreoffice.org/#/c/52471/> "sal_Int32->sal_Int64 in tools/gen.hxx" tried that. However, it failed miserably on Windows, causing odd failures like not writing out Pictures/*.svm streams out into .odp during CppunitTest_sd_export_ooxml2. So the next best approach is to just revert the original commit, at least for now. Includes revert of follow-up 8c50aff2175e85c54957d98ce32af40a3a87e168 "Fix Library_vclplug_qt5"."

Anyway for the moment do you think we could change the use of sal_IntPtr for these quoted elements into long types?

Julien

_______________________________________________
LibreOffice mailing list
LibreOffice@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/libreoffice

[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux