On Tue, 31 May 2022 23:39:09 GMT, Nikita Gubarkov <d...@openjdk.java.net> wrote:

> `CTFontCopyAvailableTables` can return null, which causes subsequent call to 
> `CFArrayGetCount` to crash with SEGFAULT, just added a null-check.

<img width="1391" alt="Screen Shot 2022-06-01 at 8 20 04 PM" 
src="https://user-images.githubusercontent.com/9004656/171468848-58612bb1-6432-4c76-a13c-054e7f97f6d6.png";>
It looks for a "maxp" table which is absent for this font. If you look down the 
stack, it's trying to find units per em and if we return NULL, then it just 
falls back to upem=1000 (libharfbuzz/hb-ot-head-table.hh:53):


/* If no valid head table found, assume 1000, which matches typical Type1 
usage. */
return 16 <= upem && upem <= 16384 ? upem : 1000;


And as I can see, nobody expects `getTableBytesNative` to always return a 
table, it's perfectly fine to return NULL when it's not found. The only 
question is why `CTFontCopyAvailableTables` returns NULL - font handle looks OK 
as you can see on the screenshot.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8962

Reply via email to