mirror of https://github.com/freetype/freetype
[base] Clean up stream reading.
* src/base/ftstream.c (FT_Stream_ReadUShort, FT_Stream_ReadUOffset, FT_Stream_ReadULong and their LE variants): Remove unnecessary initialization and slightly refactor. (FT_Stream_GetByte, FT_Stream_ReadByte): Rename to return unsigned value and align with sister functions. * include/freetype/internal/ftstream.h (FT_Stream_GetByte, FT_Stream_ReadByte): Update prototypes and caller macros.
This commit is contained in:
parent
612925ff22
commit
7482c98f15
|
@ -305,8 +305,8 @@ FT_BEGIN_HEADER
|
|||
#else
|
||||
#define FT_GET_MACRO( func, type ) ( (type)func( stream ) )
|
||||
|
||||
#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetChar, FT_Char )
|
||||
#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetChar, FT_Byte )
|
||||
#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetByte, FT_Char )
|
||||
#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetByte, FT_Byte )
|
||||
#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short )
|
||||
#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort )
|
||||
#define FT_GET_OFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_Long )
|
||||
|
@ -333,8 +333,8 @@ FT_BEGIN_HEADER
|
|||
* `FT_STREAM_POS'. They use the full machinery to check whether a read is
|
||||
* valid.
|
||||
*/
|
||||
#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var )
|
||||
#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var )
|
||||
#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadByte, FT_Byte, var )
|
||||
#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadByte, FT_Char, var )
|
||||
#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )
|
||||
#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var )
|
||||
#define FT_READ_OFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_Long, var )
|
||||
|
@ -457,8 +457,8 @@ FT_BEGIN_HEADER
|
|||
|
||||
|
||||
/* read a byte from an entered frame */
|
||||
FT_BASE( FT_Char )
|
||||
FT_Stream_GetChar( FT_Stream stream );
|
||||
FT_BASE( FT_Byte )
|
||||
FT_Stream_GetByte( FT_Stream stream );
|
||||
|
||||
/* read a 16-bit big-endian unsigned integer from an entered frame */
|
||||
FT_BASE( FT_UShort )
|
||||
|
@ -482,8 +482,8 @@ FT_BEGIN_HEADER
|
|||
|
||||
|
||||
/* read a byte from a stream */
|
||||
FT_BASE( FT_Char )
|
||||
FT_Stream_ReadChar( FT_Stream stream,
|
||||
FT_BASE( FT_Byte )
|
||||
FT_Stream_ReadByte( FT_Stream stream,
|
||||
FT_Error* error );
|
||||
|
||||
/* read a 16-bit big-endian unsigned integer from a stream */
|
||||
|
|
|
@ -347,17 +347,17 @@
|
|||
}
|
||||
|
||||
|
||||
FT_BASE_DEF( FT_Char )
|
||||
FT_Stream_GetChar( FT_Stream stream )
|
||||
FT_BASE_DEF( FT_Byte )
|
||||
FT_Stream_GetByte( FT_Stream stream )
|
||||
{
|
||||
FT_Char result;
|
||||
FT_Byte result;
|
||||
|
||||
|
||||
FT_ASSERT( stream && stream->cursor );
|
||||
|
||||
result = 0;
|
||||
if ( stream->cursor < stream->limit )
|
||||
result = (FT_Char)*stream->cursor++;
|
||||
result = *stream->cursor++;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -455,8 +455,8 @@
|
|||
}
|
||||
|
||||
|
||||
FT_BASE_DEF( FT_Char )
|
||||
FT_Stream_ReadChar( FT_Stream stream,
|
||||
FT_BASE_DEF( FT_Byte )
|
||||
FT_Stream_ReadByte( FT_Stream stream,
|
||||
FT_Error* error )
|
||||
{
|
||||
FT_Byte result = 0;
|
||||
|
@ -464,31 +464,32 @@
|
|||
|
||||
FT_ASSERT( stream );
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
if ( stream->read )
|
||||
if ( stream->pos < stream->size )
|
||||
{
|
||||
if ( stream->read( stream, stream->pos, &result, 1L ) != 1L )
|
||||
goto Fail;
|
||||
if ( stream->read )
|
||||
{
|
||||
if ( stream->read( stream, stream->pos, &result, 1L ) != 1L )
|
||||
goto Fail;
|
||||
}
|
||||
else
|
||||
result = stream->base[stream->pos];
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( stream->pos < stream->size )
|
||||
result = stream->base[stream->pos];
|
||||
else
|
||||
goto Fail;
|
||||
}
|
||||
goto Fail;
|
||||
|
||||
stream->pos++;
|
||||
|
||||
return (FT_Char)result;
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
return result;
|
||||
|
||||
Fail:
|
||||
*error = FT_THROW( Invalid_Stream_Operation );
|
||||
FT_ERROR(( "FT_Stream_ReadChar:"
|
||||
FT_ERROR(( "FT_Stream_ReadByte:"
|
||||
" invalid i/o; pos = 0x%lx, size = 0x%lx\n",
|
||||
stream->pos, stream->size ));
|
||||
|
||||
return 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
@ -497,14 +498,12 @@
|
|||
FT_Error* error )
|
||||
{
|
||||
FT_Byte reads[2];
|
||||
FT_Byte* p = 0;
|
||||
FT_Byte* p;
|
||||
FT_UShort result = 0;
|
||||
|
||||
|
||||
FT_ASSERT( stream );
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
if ( stream->pos + 1 < stream->size )
|
||||
{
|
||||
if ( stream->read )
|
||||
|
@ -525,6 +524,8 @@
|
|||
|
||||
stream->pos += 2;
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
return result;
|
||||
|
||||
Fail:
|
||||
|
@ -533,7 +534,7 @@
|
|||
" invalid i/o; pos = 0x%lx, size = 0x%lx\n",
|
||||
stream->pos, stream->size ));
|
||||
|
||||
return 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
@ -542,14 +543,12 @@
|
|||
FT_Error* error )
|
||||
{
|
||||
FT_Byte reads[2];
|
||||
FT_Byte* p = 0;
|
||||
FT_Byte* p;
|
||||
FT_UShort result = 0;
|
||||
|
||||
|
||||
FT_ASSERT( stream );
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
if ( stream->pos + 1 < stream->size )
|
||||
{
|
||||
if ( stream->read )
|
||||
|
@ -570,6 +569,8 @@
|
|||
|
||||
stream->pos += 2;
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
return result;
|
||||
|
||||
Fail:
|
||||
|
@ -578,7 +579,7 @@
|
|||
" invalid i/o; pos = 0x%lx, size = 0x%lx\n",
|
||||
stream->pos, stream->size ));
|
||||
|
||||
return 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
@ -587,14 +588,12 @@
|
|||
FT_Error* error )
|
||||
{
|
||||
FT_Byte reads[3];
|
||||
FT_Byte* p = 0;
|
||||
FT_Byte* p;
|
||||
FT_ULong result = 0;
|
||||
|
||||
|
||||
FT_ASSERT( stream );
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
if ( stream->pos + 2 < stream->size )
|
||||
{
|
||||
if ( stream->read )
|
||||
|
@ -615,6 +614,8 @@
|
|||
|
||||
stream->pos += 3;
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
return result;
|
||||
|
||||
Fail:
|
||||
|
@ -623,7 +624,7 @@
|
|||
" invalid i/o; pos = 0x%lx, size = 0x%lx\n",
|
||||
stream->pos, stream->size ));
|
||||
|
||||
return 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
@ -632,14 +633,12 @@
|
|||
FT_Error* error )
|
||||
{
|
||||
FT_Byte reads[4];
|
||||
FT_Byte* p = 0;
|
||||
FT_Byte* p;
|
||||
FT_ULong result = 0;
|
||||
|
||||
|
||||
FT_ASSERT( stream );
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
if ( stream->pos + 3 < stream->size )
|
||||
{
|
||||
if ( stream->read )
|
||||
|
@ -660,6 +659,8 @@
|
|||
|
||||
stream->pos += 4;
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
return result;
|
||||
|
||||
Fail:
|
||||
|
@ -668,7 +669,7 @@
|
|||
" invalid i/o; pos = 0x%lx, size = 0x%lx\n",
|
||||
stream->pos, stream->size ));
|
||||
|
||||
return 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
@ -677,14 +678,12 @@
|
|||
FT_Error* error )
|
||||
{
|
||||
FT_Byte reads[4];
|
||||
FT_Byte* p = 0;
|
||||
FT_Byte* p;
|
||||
FT_ULong result = 0;
|
||||
|
||||
|
||||
FT_ASSERT( stream );
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
if ( stream->pos + 3 < stream->size )
|
||||
{
|
||||
if ( stream->read )
|
||||
|
@ -705,6 +704,8 @@
|
|||
|
||||
stream->pos += 4;
|
||||
|
||||
*error = FT_Err_Ok;
|
||||
|
||||
return result;
|
||||
|
||||
Fail:
|
||||
|
@ -713,7 +714,7 @@
|
|||
" invalid i/o; pos = 0x%lx, size = 0x%lx\n",
|
||||
stream->pos, stream->size ));
|
||||
|
||||
return 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue