[base] Initialize stream memory earlier.
With Windows memory management tracking heap, it is important to use it during the stream opening fallback. In Unix, the argument is unused, but it is better to set it correctly. * src/base/ftobjs.c (FT_Stream_New): Set memory before calling `FT_Stream_Open`. * builds/windows/ftsystem.c, builds/unix/ftsystem.c (FT_Stream_Open, ft_close_stream_by_free): Call `ft_alloc` and `ft_free` with proper memory argumment.
This commit is contained in:
parent
93866bec77
commit
b4dddd8244
|
@ -233,7 +233,7 @@
|
||||||
FT_CALLBACK_DEF( void )
|
FT_CALLBACK_DEF( void )
|
||||||
ft_close_stream_by_free( FT_Stream stream )
|
ft_close_stream_by_free( FT_Stream stream )
|
||||||
{
|
{
|
||||||
ft_free( NULL, stream->descriptor.pointer );
|
ft_free( stream->memory, stream->descriptor.pointer );
|
||||||
|
|
||||||
stream->descriptor.pointer = NULL;
|
stream->descriptor.pointer = NULL;
|
||||||
stream->size = 0;
|
stream->size = 0;
|
||||||
|
@ -324,7 +324,7 @@
|
||||||
FT_ERROR(( "FT_Stream_Open:" ));
|
FT_ERROR(( "FT_Stream_Open:" ));
|
||||||
FT_ERROR(( " could not `mmap' file `%s'\n", filepathname ));
|
FT_ERROR(( " could not `mmap' file `%s'\n", filepathname ));
|
||||||
|
|
||||||
stream->base = (unsigned char*)ft_alloc( NULL, stream->size );
|
stream->base = (unsigned char*)ft_alloc( stream->memory, stream->size );
|
||||||
|
|
||||||
if ( !stream->base )
|
if ( !stream->base )
|
||||||
{
|
{
|
||||||
|
@ -374,7 +374,7 @@
|
||||||
return FT_Err_Ok;
|
return FT_Err_Ok;
|
||||||
|
|
||||||
Fail_Read:
|
Fail_Read:
|
||||||
ft_free( NULL, stream->base );
|
ft_free( stream->memory, stream->base );
|
||||||
|
|
||||||
Fail_Map:
|
Fail_Map:
|
||||||
close( file );
|
close( file );
|
||||||
|
|
|
@ -188,7 +188,7 @@
|
||||||
FT_CALLBACK_DEF( void )
|
FT_CALLBACK_DEF( void )
|
||||||
ft_close_stream_by_free( FT_Stream stream )
|
ft_close_stream_by_free( FT_Stream stream )
|
||||||
{
|
{
|
||||||
ft_free( NULL, stream->descriptor.pointer );
|
ft_free( stream->memory, stream->descriptor.pointer );
|
||||||
|
|
||||||
stream->descriptor.pointer = NULL;
|
stream->descriptor.pointer = NULL;
|
||||||
stream->size = 0;
|
stream->size = 0;
|
||||||
|
@ -323,7 +323,7 @@
|
||||||
FT_ERROR(( "FT_Stream_Open:" ));
|
FT_ERROR(( "FT_Stream_Open:" ));
|
||||||
FT_ERROR(( " could not `mmap' file `%s'\n", filepathname ));
|
FT_ERROR(( " could not `mmap' file `%s'\n", filepathname ));
|
||||||
|
|
||||||
stream->base = (unsigned char*)ft_alloc( NULL, stream->size );
|
stream->base = (unsigned char*)ft_alloc( stream->memory, stream->size );
|
||||||
|
|
||||||
if ( !stream->base )
|
if ( !stream->base )
|
||||||
{
|
{
|
||||||
|
@ -369,7 +369,7 @@
|
||||||
return FT_Err_Ok;
|
return FT_Err_Ok;
|
||||||
|
|
||||||
Fail_Read:
|
Fail_Read:
|
||||||
ft_free( NULL, stream->base );
|
ft_free( stream->memory, stream->base );
|
||||||
|
|
||||||
Fail_Open:
|
Fail_Open:
|
||||||
CloseHandle( file );
|
CloseHandle( file );
|
||||||
|
|
|
@ -221,6 +221,7 @@
|
||||||
FT_Stream_OpenMemory( stream,
|
FT_Stream_OpenMemory( stream,
|
||||||
(const FT_Byte*)args->memory_base,
|
(const FT_Byte*)args->memory_base,
|
||||||
(FT_ULong)args->memory_size );
|
(FT_ULong)args->memory_size );
|
||||||
|
stream->memory = memory;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT
|
#ifndef FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT
|
||||||
|
@ -231,6 +232,7 @@
|
||||||
if ( FT_NEW( stream ) )
|
if ( FT_NEW( stream ) )
|
||||||
goto Exit;
|
goto Exit;
|
||||||
|
|
||||||
|
stream->memory = memory;
|
||||||
error = FT_Stream_Open( stream, args->pathname );
|
error = FT_Stream_Open( stream, args->pathname );
|
||||||
if ( error )
|
if ( error )
|
||||||
FT_FREE( stream );
|
FT_FREE( stream );
|
||||||
|
@ -241,8 +243,9 @@
|
||||||
|
|
||||||
/* in this case, we do not need to allocate a new stream object */
|
/* in this case, we do not need to allocate a new stream object */
|
||||||
/* since the caller is responsible for closing it himself */
|
/* since the caller is responsible for closing it himself */
|
||||||
stream = args->stream;
|
stream = args->stream;
|
||||||
error = FT_Err_Ok;
|
stream->memory = memory;
|
||||||
|
error = FT_Err_Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -255,10 +258,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !error )
|
if ( !error )
|
||||||
{
|
|
||||||
stream->memory = memory;
|
|
||||||
*astream = stream;
|
*astream = stream;
|
||||||
}
|
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
return error;
|
return error;
|
||||||
|
|
Loading…
Reference in New Issue