From e56b411f32b8e3352b9d4c70a7fc3a5ea89ac359 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Sat, 3 Feb 2001 04:34:53 +0000 Subject: [PATCH] * src/psaux/psobjs.c (shift_elements): Remove if clause (which is obsolete now). (reallocate_t1_table, PS_Table_Done): Replace REALLOC() with ALLOC() + MEM_Copy() to avoid a memory bug. --- ChangeLog | 8 ++++++++ src/psaux/psobjs.c | 41 ++++++++++++++++++++++------------------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6d7ae8cc4..568580ab0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2001-02-02 Werner Lemberg + + * src/psaux/psobjs.c (shift_elements): Remove if clause (which is + obsolete now). + + (reallocate_t1_table, PS_Table_Done): Replace REALLOC() with ALLOC() + + MEM_Copy() to avoid a memory bug. + 2001-02-01 David Turner * docs/docmaker.py: Improved the index sorting routine to place diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c index 3f51e2b33..3759d99a0 100644 --- a/src/psaux/psobjs.c +++ b/src/psaux/psobjs.c @@ -4,7 +4,7 @@ /* */ /* Auxiliary functions for PostScript fonts (body). */ /* */ -/* Copyright 1996-2000 by */ +/* Copyright 1996-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -89,12 +89,11 @@ FT_Byte** limit = offset + table->max_elems; - if ( delta ) - for ( ; offset < limit; offset++ ) - { - if ( offset[0] ) - offset[0] += delta; - } + for ( ; offset < limit; offset++ ) + { + if ( offset[0] ) + offset[0] += delta; + } } @@ -107,15 +106,19 @@ FT_Error error; - /* reallocate the base block */ - if ( REALLOC( table->block, table->capacity, new_size ) ) + /* allocate new base block */ + if ( ALLOC( table->block, new_size ) ) return error; - table->capacity = new_size; - - /* shift all offsets if necessary */ - if ( old_base ) + /* copy elements and shift offsets */ + if (old_base ) + { + MEM_Copy( table->block, old_base, table->capacity ); shift_elements( table, old_base ); + FREE( old_base ); + } + + table->capacity = new_size; return FT_Err_Ok; } @@ -200,20 +203,20 @@ { FT_Memory memory = table->memory; FT_Error error; - FT_Byte* old_base; + FT_Byte* old_base = table->block; /* should never fail, because rec.cursor <= rec.size */ - old_base = table->block; if ( !old_base ) return; - if ( REALLOC( table->block, table->capacity, table->cursor ) ) + if ( ALLOC( table->block, table->cursor ) ) return; - table->capacity = table->cursor; + MEM_Copy( table->block, old_base, table->cursor ); + shift_elements( table, old_base ); - if ( old_base != table->block ) - shift_elements( table, old_base ); + table->capacity = table->cursor; + FREE( old_base ); }