>>614=599
単純に簡単化しただけだけど、どうかな?
char *openseek( const char *filename, int nbytes )
{
FILE *fp;
char *buff;

fp = fopen( filename, "r" );
if ( !fp || hoge() < 0 )
goto error_end;

buff = malloc( nbytes );
if ( !buff )
goto error_end;

fread( buff, 1, nbytes, fp );

if ( uge() < 0 )
goto error_end;

return buff;

error_end:
free( buff );
if ( !fp )
fclose( fp );
return NULL;
}