• B
    [uniscribe] Fix buffer allocation · 29b596ac
    Behdad Esfahbod 提交于
    Email from Jonathan Kew:
    
    My cygwin build kept aborting on certain test words when run with the
    uniscribe backend. Turned out this was caused by a bug in the allocation
    of scratch buffers in hb-uniscribe.cc.
    
    Commit 2a17f956 introduced a new line
    
      ALLOCATE_ARRAY (SCRIPT_VISATTR, vis_attr, glyphs_size);
    
    but it failed to account for this in the computation of glyphs_size
    (the number of glyphs for which scratch buffer space is available),
    with the result that the vis_clusters array ends up overrunning the
    end of the scratch buffer and clobbering the beginning of the buffer's
    info[].
    
    AFAICS, the vis_attr array is not actually used, so the simple fix is
    to remove the line that allocates it. (If/when we -do- need to use
    vis_attr for something, we'll need to add another term to the earlier
    calculation of glyphs_size.)
    
    With this patch, the uniscribe backend runs reliably again.
    
    JK
    29b596ac
hb-uniscribe.cc 17.8 KB