Pygame should be supporting a file-like object no problem, so this seems
like it could be a bug.
Can you be more specific on when in the past it worked, and what happened
between then and when it segfaults now?
Also, it's not clear from your problem description whether the problem is
that pygame crashes when loading from a file-like object, or if pygame
crashes on a specific set of font data.
So I would suggest doing a sanity check here by writing the
self.parts['font'] string to a temp file, and trying to load from that, as a
way of being able to determine if the crash is caused by the file-like
object reading, or by some problem with the contents of the file-like
object.
So something like:
------------
class Font(Resource):
....
def pygame_font(self,size):
file(temp_file_name, "w").write(self.parts['font'])
return pygame.font.Font(temp_file_name, size)
os.unlink(temp_file_name)
------------
If that still crashes, then pygame has trouble with that font content, and
then the question would be to figure out what about that font content is
causing problems. If that doesn't crash, then the problem would be with
accessing the content as a file-like object.
... finally, as general advice to all people posting problems - if you can
send a completely self-contained reproducible case, then you are much more
likely to get good help and results faster. As an example in this case,
providing the contents of the self.parts['font'] string in an attached file
with a simple script that tries to load from a StringIO using that file's
contents, would make this easily reproducible and testable by fellow mailing
listers - but without knowing what the contents of the string in question
are, it may actually be practically impossible for anyone else to test
themselves.
On Mon, Nov 23, 2009 at 12:38 PM, Bryce Schroeder
<bryce.schroeder@xxxxxxxxx> wrote:
(My apologies if this is a double-post. I didn't get a copy of the
message or see it in the archive, so I'm trying again.)
I have a pygame program that worked in the past on both Linux and
Windows, but now results in a segfault, at least on Linux. (I can't
test it on Windows.)
The segfault occurs in this code:
class Font(Resource):
....
def pygame_font(self,size):
return pygame.font.Font(StringIO.StringIO(self.parts['font']),
size) # Segfaults here
self.parts['font'] is a string containing a truetype font loaded from
a file. I have checked that the string contains the file like it is
supposed too. Any suggestions?