@ -375,15 +375,21 @@ static long THDiskFile_readString(THFile *self, const char *format, char **str_)
long total = TBRS_BSZ ;
long total = TBRS_BSZ ;
long pos = 0L ;
long pos = 0L ;
if ( p = = NULL )
THError ( " read error: failed to allocate buffer " ) ;
for ( ; ; )
for ( ; ; )
{
{
if ( total - pos = = 0 ) /* we need more space! */
if ( total - pos = = 0 ) /* we need more space! */
{
{
total + = TBRS_BSZ ;
total + = TBRS_BSZ ;
p = ( char * ) THRealloc ( p , total ) ;
char * new_p = ( char * ) THRealloc ( p , total ) ;
if ( new_p = = NULL )
{
THFree ( p ) ;
THError ( " read error: failed to reallocate buffer " ) ;
}
p = new_p ;
}
}
if ( p = = NULL )
THError ( " read error: failed to allocate buffer " ) ;
pos + = fread ( p + pos , 1 , total - pos , dfself - > handle ) ;
pos + = fread ( p + pos , 1 , total - pos , dfself - > handle ) ;
if ( pos < total ) /* eof? */
if ( pos < total ) /* eof? */
{
{
@ -409,15 +415,21 @@ static long THDiskFile_readString(THFile *self, const char *format, char **str_)
long pos = 0L ;
long pos = 0L ;
long size ;
long size ;
if ( p = = NULL )
THError ( " read error: failed to allocate buffer " ) ;
for ( ; ; )
for ( ; ; )
{
{
if ( total - pos < = 1 ) /* we can only write '\0' in there! */
if ( total - pos < = 1 ) /* we can only write '\0' in there! */
{
{
total + = TBRS_BSZ ;
total + = TBRS_BSZ ;
p = ( char * ) THRealloc ( p , total ) ;
char * new_p = ( char * ) THRealloc ( p , total ) ;
if ( new_p = = NULL )
{
THFree ( p ) ;
THError ( " read error: failed to reallocate buffer " ) ;
}
p = new_p ;
}
}
if ( p = = NULL )
THError ( " read error: failed to allocate buffer " ) ;
if ( fgets ( p + pos , total - pos , dfself - > handle ) = = NULL ) /* eof? */
if ( fgets ( p + pos , total - pos , dfself - > handle ) = = NULL ) /* eof? */
{
{
if ( pos = = 0L )
if ( pos = = 0L )