[OpenJDK 2D-Dev] java2d coding using SAFE_SIZE_ARRAY_ALLOC / safe_Malloc

Thomas Stüfe thomas.stuefe at gmail.com
Wed May 30 15:37:07 UTC 2018


Letting c++ exceptions escape from extern "C" functions is UB and may
(and probably will) crash the process. This should be fixed. Approach
taken by JDK-8039394 is fine (I would probably catch every C++
exception with catch(...), not just bad_alloc, just to be safe).

Best Regards, Thomas

On Wed, May 30, 2018 at 5:08 PM, Baesken, Matthias
<matthias.baesken at sap.com> wrote:
> Hello ,  there is still some  java2d coding  where  SAFE_SIZE_ARRAY_ALLOC /
> safe_Malloc    is used  and  the  (potentially occurring) exception is not
> handled .
>
>
>
> This leads to  CL warnings  (when enabled  ) like
>
>
>
> " function assumed not to throw an exception but does ; The function is
> extern "C" and /EHc was specified"
>
>
>
> Example :
>
>
>
> java.desktop/windows/native/libawt/java2d/windows/GDIRenderer.cpp
>
>
>
> static POINT *TransformPoly()
>
>   …..
>
>     if (outpoints > POLYTEMPSIZE) {
>
>         pPoints = (POINT *) SAFE_SIZE_ARRAY_ALLOC(safe_Malloc,
> sizeof(POINT), outpoints);
>
>     }
>
>
>
>
>
> Should  we add exception handling   here ?
>
>
>
> Similar fixes were done  in the change  8039394: Compiler warnings about C++
> exceptions in windows printing code
>
>
>
> https://bugs.openjdk.java.net/browse/JDK-8039394
>
> http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/823387e2bf42
>
>
>
>
>
> Best regards, Matthias
>
>
>
>


More information about the 2d-dev mailing list