diff options
author | Alexei Podtelezhnikov <apodtele@gmail.com> | 2018-04-22 17:22:35 +0200 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2018-04-22 17:22:35 +0200 |
commit | 3b88576ba0807f5203310c22d5dbfff803c4abd9 (patch) | |
tree | 88f5b271a16bcb63e359b91dc83fe85edb120dfe | |
parent | c2e2a8e5d9dbc1d06064b93fbdcae6737ddc2f5b (diff) | |
download | freetype2-3b88576ba0807f5203310c22d5dbfff803c4abd9.tar.gz |
[base] Fix bitmap emboldening.
Bug introduced after release 2.8.
* src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use
`FT_QALLOC_MULT', which doesn't zero out the buffer. Adjust the
bitmap copying code to take care of this fact.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | src/base/ftbitmap.c | 10 |
2 files changed, 16 insertions, 4 deletions
@@ -1,3 +1,13 @@ +2018-04-22 Alexei Podtelezhnikov <apodtele@gmail.com> + + [base] Fix bitmap emboldening. + + Bug introduced after release 2.8. + + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use + `FT_QALLOC_MULT', which doesn't zero out the buffer. Adjust the + bitmap copying code to take care of this fact. + 2018-04-22 Werner Lemberg <wl@gnu.org> Another fix for handling invalid format 2 cmaps. diff --git a/src/base/ftbitmap.c b/src/base/ftbitmap.c index 93efb0944..a9746663f 100644 --- a/src/base/ftbitmap.c +++ b/src/base/ftbitmap.c @@ -237,7 +237,7 @@ unsigned char* out = buffer; unsigned char* limit = bitmap->buffer + pitch * bitmap->rows; - unsigned int delta = new_pitch - pitch; + unsigned int delta = new_pitch - len; FT_MEM_ZERO( out, new_pitch * ypixels ); @@ -247,8 +247,10 @@ { FT_MEM_COPY( out, in, len ); in += pitch; - out += pitch; + out += len; + /* we use FT_QALLOC_MULT, which doesn't zero out the buffer; */ + /* consequently, we have to manually zero out the remaining bytes */ FT_MEM_ZERO( out, delta ); out += delta; } @@ -261,14 +263,14 @@ unsigned char* out = buffer; unsigned char* limit = bitmap->buffer + pitch * bitmap->rows; - unsigned int delta = new_pitch - pitch; + unsigned int delta = new_pitch - len; while ( in < limit ) { FT_MEM_COPY( out, in, len ); in += pitch; - out += pitch; + out += len; FT_MEM_ZERO( out, delta ); out += delta; |