Free buffer->positions, clean up error returns that were returning
authorOwen Taylor <otaylor@redhat.com>
Thu, 27 May 2004 21:03:42 +0000 (21:03 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Thu, 27 May 2004 21:03:42 +0000 (21:03 +0000)
Thu May 27 16:57:30 2004  Owen Taylor  <otaylor@redhat.com>

        * pango/opentype/otlbuffer.c: Free buffer->positions,
        clean up error returns that were returning uninitialized
        values. (#139239, Behdad Esfahbod)

src/otlbuffer.c

index b35a63f..e9fd03b 100644 (file)
 
        while (size > new_allocated)
          new_allocated += (new_allocated >> 1) + 8;
-       
-       if ( FT_REALLOC_ARRAY( buffer->in_string, buffer->allocated, new_allocated, OTL_GlyphItemRec ) )
+
+       error = FT_REALLOC_ARRAY( buffer->in_string, buffer->allocated, new_allocated, OTL_GlyphItemRec );
+       if ( error )
          return error;
-       if ( FT_REALLOC_ARRAY( buffer->out_string, buffer->allocated, new_allocated, OTL_GlyphItemRec ) )
+       error = FT_REALLOC_ARRAY( buffer->out_string, buffer->allocated, new_allocated, OTL_GlyphItemRec );
+       if ( error )
          return error;
-       if ( FT_REALLOC_ARRAY( buffer->positions, buffer->allocated, new_allocated, OTL_PositionRec ) )
+       error = FT_REALLOC_ARRAY( buffer->positions, buffer->allocated, new_allocated, OTL_PositionRec );
+       if ( error )
          return error;
 
        buffer->allocated = new_allocated;
@@ -47,8 +50,9 @@
                  OTL_Buffer *buffer )
   {
     FT_Error error;
-    
-    if ( FT_ALLOC( *buffer, sizeof( OTL_BufferRec ) ) )
+
+    error = FT_ALLOC( *buffer, sizeof( OTL_BufferRec ) );
+    if ( error ) 
       return error;
 
     (*buffer)->memory = memory;
@@ -91,6 +95,7 @@
 
     FT_FREE( buffer->in_string );
     FT_FREE( buffer->out_string );
+    FT_FREE( buffer->positions );
     FT_FREE( buffer );
 
     return FT_Err_Ok;
     OTL_GlyphItem glyph;
     
     error = otl_buffer_ensure( buffer, buffer->in_length + 1 );
-    if ( error != FT_Err_Ok )
+    if ( error )
       return error;
 
     glyph = &buffer->in_string[buffer->in_length];
     FT_UInt cluster;
 
     error = otl_buffer_ensure( buffer, buffer->out_pos + num_out );
-    if ( error != FT_Err_Ok )
+    if ( error )
       return error;
 
     properties = buffer->in_string[buffer->in_pos].properties;